Yuta HIGUCHI | a9ae6e6 | 2018-02-26 12:56:20 -0800 | [diff] [blame] | 1 | /* |
| 2 | * Copyright 2018-present Open Networking Foundation |
| 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. |
Ramon Casellas | 390efe9 | 2018-03-01 11:45:27 +0100 | [diff] [blame] | 15 | * |
| 16 | * |
| 17 | * This work was partially supported by EC H2020 project METRO-HAUL (761727). |
| 18 | * Contact: Ramon Casellas <ramon.casellas@cttc.es> |
Yuta HIGUCHI | a9ae6e6 | 2018-02-26 12:56:20 -0800 | [diff] [blame] | 19 | */ |
Ramon Casellas | 390efe9 | 2018-03-01 11:45:27 +0100 | [diff] [blame] | 20 | |
Yuta HIGUCHI | a9ae6e6 | 2018-02-26 12:56:20 -0800 | [diff] [blame] | 21 | package org.onosproject.odtn.impl; |
| 22 | |
| 23 | import org.apache.felix.scr.annotations.Activate; |
| 24 | import org.apache.felix.scr.annotations.Component; |
| 25 | import org.apache.felix.scr.annotations.Deactivate; |
| 26 | import org.apache.felix.scr.annotations.Reference; |
| 27 | import org.apache.felix.scr.annotations.ReferenceCardinality; |
hiroki | fca084b | 2018-06-02 08:29:42 -0700 | [diff] [blame] | 28 | import org.onosproject.net.ConnectPoint; |
hiroki | b8ddc3f | 2018-06-02 08:29:42 -0700 | [diff] [blame] | 29 | import org.onosproject.net.DeviceId; |
hiroki | bca3e93 | 2018-05-15 15:25:54 -0700 | [diff] [blame] | 30 | import org.onosproject.net.Link; |
hiroki | fca084b | 2018-06-02 08:29:42 -0700 | [diff] [blame] | 31 | import org.onosproject.net.config.ConfigFactory; |
hiroki | f4ed521 | 2018-05-26 22:39:38 -0700 | [diff] [blame] | 32 | import org.onosproject.net.config.NetworkConfigEvent; |
| 33 | import org.onosproject.net.config.NetworkConfigListener; |
hiroki | fca084b | 2018-06-02 08:29:42 -0700 | [diff] [blame] | 34 | import org.onosproject.net.config.NetworkConfigRegistry; |
Yuta HIGUCHI | a9ae6e6 | 2018-02-26 12:56:20 -0800 | [diff] [blame] | 35 | import org.onosproject.net.config.NetworkConfigService; |
hiroki | bca3e93 | 2018-05-15 15:25:54 -0700 | [diff] [blame] | 36 | import org.onosproject.net.device.DeviceEvent; |
| 37 | import org.onosproject.net.device.DeviceListener; |
| 38 | import org.onosproject.net.device.DeviceService; |
| 39 | import org.onosproject.net.link.LinkEvent; |
| 40 | import org.onosproject.net.link.LinkListener; |
| 41 | import org.onosproject.net.link.LinkService; |
hiroki | f4ed521 | 2018-05-26 22:39:38 -0700 | [diff] [blame] | 42 | import org.onosproject.odtn.TapiResolver; |
| 43 | import org.onosproject.odtn.TapiTopologyManager; |
hiroki | fca084b | 2018-06-02 08:29:42 -0700 | [diff] [blame] | 44 | import org.onosproject.odtn.config.TerminalDeviceConfig; |
hiroki | f4ed521 | 2018-05-26 22:39:38 -0700 | [diff] [blame] | 45 | import org.onosproject.odtn.internal.DcsBasedTapiCommonRpc; |
| 46 | import org.onosproject.odtn.internal.DcsBasedTapiConnectivityRpc; |
hiroki | 684aa2f | 2018-05-19 20:48:49 -0700 | [diff] [blame] | 47 | import org.onosproject.odtn.internal.DcsBasedTapiDataProducer; |
| 48 | import org.onosproject.odtn.internal.TapiDataProducer; |
hiroki | b8ddc3f | 2018-06-02 08:29:42 -0700 | [diff] [blame] | 49 | import org.onosproject.odtn.internal.DefaultOdtnTerminalDeviceDriver; |
Yuta HIGUCHI | a9ae6e6 | 2018-02-26 12:56:20 -0800 | [diff] [blame] | 50 | import org.slf4j.Logger; |
| 51 | import org.slf4j.LoggerFactory; |
| 52 | |
hiroki | f4ed521 | 2018-05-26 22:39:38 -0700 | [diff] [blame] | 53 | // DCS / onos-yang-tools |
| 54 | import org.onosproject.config.DynamicConfigEvent; |
| 55 | import org.onosproject.config.DynamicConfigListener; |
| 56 | import org.onosproject.config.DynamicConfigService; |
Ramon Casellas | 390efe9 | 2018-03-01 11:45:27 +0100 | [diff] [blame] | 57 | import org.onosproject.yang.model.RpcRegistry; |
Ramon Casellas | 390efe9 | 2018-03-01 11:45:27 +0100 | [diff] [blame] | 58 | |
hiroki | 684aa2f | 2018-05-19 20:48:49 -0700 | [diff] [blame] | 59 | import static org.onosproject.config.DynamicConfigEvent.Type.NODE_ADDED; |
| 60 | import static org.onosproject.config.DynamicConfigEvent.Type.NODE_DELETED; |
hiroki | fca084b | 2018-06-02 08:29:42 -0700 | [diff] [blame] | 61 | import static org.onosproject.net.config.NetworkConfigEvent.Type.CONFIG_ADDED; |
| 62 | import static org.onosproject.net.config.NetworkConfigEvent.Type.CONFIG_REMOVED; |
| 63 | import static org.onosproject.net.config.NetworkConfigEvent.Type.CONFIG_UPDATED; |
| 64 | import static org.onosproject.net.config.basics.SubjectFactories.CONNECT_POINT_SUBJECT_FACTORY; |
hiroki | 684aa2f | 2018-05-19 20:48:49 -0700 | [diff] [blame] | 65 | |
Yuta HIGUCHI | a9ae6e6 | 2018-02-26 12:56:20 -0800 | [diff] [blame] | 66 | /** |
| 67 | * OSGi Component for ODTN Service application. |
| 68 | */ |
| 69 | @Component(immediate = true) |
| 70 | public class ServiceApplicationComponent { |
| 71 | |
| 72 | private final Logger log = LoggerFactory.getLogger(getClass()); |
| 73 | |
hiroki | 684aa2f | 2018-05-19 20:48:49 -0700 | [diff] [blame] | 74 | @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) |
| 75 | protected DynamicConfigService dynConfigService; |
Yuta HIGUCHI | a9ae6e6 | 2018-02-26 12:56:20 -0800 | [diff] [blame] | 76 | |
| 77 | @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) |
hiroki | bca3e93 | 2018-05-15 15:25:54 -0700 | [diff] [blame] | 78 | protected DeviceService deviceService; |
| 79 | |
| 80 | @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) |
| 81 | protected LinkService linkService; |
| 82 | |
| 83 | @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) |
Yuta HIGUCHI | a9ae6e6 | 2018-02-26 12:56:20 -0800 | [diff] [blame] | 84 | protected NetworkConfigService netcfgService; |
| 85 | |
| 86 | @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) |
hiroki | fca084b | 2018-06-02 08:29:42 -0700 | [diff] [blame] | 87 | protected NetworkConfigRegistry netcfgRegistry; |
| 88 | |
| 89 | @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) |
Ramon Casellas | 390efe9 | 2018-03-01 11:45:27 +0100 | [diff] [blame] | 90 | protected RpcRegistry rpcRegistry; |
| 91 | |
| 92 | @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) |
hiroki | bca3e93 | 2018-05-15 15:25:54 -0700 | [diff] [blame] | 93 | protected TapiTopologyManager tapiTopologyManager; |
Ramon Casellas | 390efe9 | 2018-03-01 11:45:27 +0100 | [diff] [blame] | 94 | |
hiroki | 684aa2f | 2018-05-19 20:48:49 -0700 | [diff] [blame] | 95 | @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) |
| 96 | protected TapiResolver resolver; |
| 97 | |
Ramon Casellas | 390efe9 | 2018-03-01 11:45:27 +0100 | [diff] [blame] | 98 | // Listener for events from the DCS |
hiroki | 684aa2f | 2018-05-19 20:48:49 -0700 | [diff] [blame] | 99 | private final DynamicConfigListener dynamicConfigServiceListener = |
| 100 | new InternalDynamicConfigListener(); |
hiroki | bca3e93 | 2018-05-15 15:25:54 -0700 | [diff] [blame] | 101 | |
| 102 | private DeviceListener deviceListener = new InternalDeviceListener(); |
| 103 | private final LinkListener linkListener = new InternalLinkListener(); |
hiroki | f4ed521 | 2018-05-26 22:39:38 -0700 | [diff] [blame] | 104 | private final NetworkConfigListener netcfgListener = new InternalNetCfgListener(); |
hiroki | 684aa2f | 2018-05-19 20:48:49 -0700 | [diff] [blame] | 105 | private TapiDataProducer dataProvider = new DcsBasedTapiDataProducer(); |
Ramon Casellas | 390efe9 | 2018-03-01 11:45:27 +0100 | [diff] [blame] | 106 | |
| 107 | // Rpc Service for TAPI Connectivity |
hiroki | f4ed521 | 2018-05-26 22:39:38 -0700 | [diff] [blame] | 108 | private final DcsBasedTapiConnectivityRpc rpcTapiConnectivity = new DcsBasedTapiConnectivityRpc(); |
| 109 | private final DcsBasedTapiCommonRpc rpcTapiCommon = new DcsBasedTapiCommonRpc(); |
hiroki | 684aa2f | 2018-05-19 20:48:49 -0700 | [diff] [blame] | 110 | |
hiroki | fca084b | 2018-06-02 08:29:42 -0700 | [diff] [blame] | 111 | // FIXME create factory and register for all behaviours |
| 112 | private final ConfigFactory<ConnectPoint, TerminalDeviceConfig> factory = |
| 113 | new ConfigFactory<ConnectPoint, TerminalDeviceConfig>(CONNECT_POINT_SUBJECT_FACTORY, |
| 114 | TerminalDeviceConfig.class, TerminalDeviceConfig.CONFIG_KEY) { |
| 115 | @Override |
| 116 | public TerminalDeviceConfig createConfig() { |
| 117 | return new TerminalDeviceConfig(); |
| 118 | } |
| 119 | }; |
| 120 | |
Ramon Casellas | 390efe9 | 2018-03-01 11:45:27 +0100 | [diff] [blame] | 121 | |
Yuta HIGUCHI | a9ae6e6 | 2018-02-26 12:56:20 -0800 | [diff] [blame] | 122 | @Activate |
| 123 | protected void activate() { |
| 124 | log.info("Started"); |
hiroki | 684aa2f | 2018-05-19 20:48:49 -0700 | [diff] [blame] | 125 | dynConfigService.addListener(dynamicConfigServiceListener); |
hiroki | bca3e93 | 2018-05-15 15:25:54 -0700 | [diff] [blame] | 126 | deviceService.addListener(deviceListener); |
| 127 | linkService.addListener(linkListener); |
hiroki | f4ed521 | 2018-05-26 22:39:38 -0700 | [diff] [blame] | 128 | netcfgService.addListener(netcfgListener); |
hiroki | fca084b | 2018-06-02 08:29:42 -0700 | [diff] [blame] | 129 | netcfgRegistry.registerConfigFactory(factory); |
Ramon Casellas | 390efe9 | 2018-03-01 11:45:27 +0100 | [diff] [blame] | 130 | rpcRegistry.registerRpcService(rpcTapiConnectivity); |
hiroki | 684aa2f | 2018-05-19 20:48:49 -0700 | [diff] [blame] | 131 | rpcRegistry.registerRpcService(rpcTapiCommon); |
hiroki | fca084b | 2018-06-02 08:29:42 -0700 | [diff] [blame] | 132 | |
hiroki | f4ed521 | 2018-05-26 22:39:38 -0700 | [diff] [blame] | 133 | rpcTapiConnectivity.init(); |
| 134 | rpcTapiCommon.init(); |
Yuta HIGUCHI | a9ae6e6 | 2018-02-26 12:56:20 -0800 | [diff] [blame] | 135 | } |
| 136 | |
Ramon Casellas | 390efe9 | 2018-03-01 11:45:27 +0100 | [diff] [blame] | 137 | |
Yuta HIGUCHI | a9ae6e6 | 2018-02-26 12:56:20 -0800 | [diff] [blame] | 138 | @Deactivate |
| 139 | protected void deactivate() { |
| 140 | log.info("Stopped"); |
hiroki | 684aa2f | 2018-05-19 20:48:49 -0700 | [diff] [blame] | 141 | rpcRegistry.unregisterRpcService(rpcTapiCommon); |
Ramon Casellas | 390efe9 | 2018-03-01 11:45:27 +0100 | [diff] [blame] | 142 | rpcRegistry.unregisterRpcService(rpcTapiConnectivity); |
hiroki | fca084b | 2018-06-02 08:29:42 -0700 | [diff] [blame] | 143 | netcfgRegistry.unregisterConfigFactory(factory); |
hiroki | f4ed521 | 2018-05-26 22:39:38 -0700 | [diff] [blame] | 144 | netcfgService.removeListener(netcfgListener); |
hiroki | bca3e93 | 2018-05-15 15:25:54 -0700 | [diff] [blame] | 145 | linkService.removeListener(linkListener); |
hiroki | ec18d3a | 2018-05-16 15:27:37 -0700 | [diff] [blame] | 146 | deviceService.removeListener(deviceListener); |
hiroki | 684aa2f | 2018-05-19 20:48:49 -0700 | [diff] [blame] | 147 | dynConfigService.removeListener(dynamicConfigServiceListener); |
Yuta HIGUCHI | a9ae6e6 | 2018-02-26 12:56:20 -0800 | [diff] [blame] | 148 | } |
| 149 | |
Ramon Casellas | 390efe9 | 2018-03-01 11:45:27 +0100 | [diff] [blame] | 150 | |
hiroki | bca3e93 | 2018-05-15 15:25:54 -0700 | [diff] [blame] | 151 | /** |
| 152 | * Representation of internal listener, listening for device event. |
| 153 | */ |
| 154 | private class InternalDeviceListener implements DeviceListener { |
Ramon Casellas | 390efe9 | 2018-03-01 11:45:27 +0100 | [diff] [blame] | 155 | |
hiroki | bca3e93 | 2018-05-15 15:25:54 -0700 | [diff] [blame] | 156 | /** |
| 157 | * Process an Event from the Device Service. |
| 158 | * |
| 159 | * @param event device event |
| 160 | */ |
| 161 | @Override |
| 162 | public void event(DeviceEvent event) { |
hiroki | bca3e93 | 2018-05-15 15:25:54 -0700 | [diff] [blame] | 163 | |
hiroki | fca084b | 2018-06-02 08:29:42 -0700 | [diff] [blame] | 164 | log.info("Device event type: {}", event.type()); |
| 165 | log.info("Device event subject: {}", event.subject()); |
hiroki | bca3e93 | 2018-05-15 15:25:54 -0700 | [diff] [blame] | 166 | switch (event.type()) { |
| 167 | case DEVICE_ADDED: |
hiroki | ec18d3a | 2018-05-16 15:27:37 -0700 | [diff] [blame] | 168 | tapiTopologyManager.addDevice(event.subject()); |
hiroki | bca3e93 | 2018-05-15 15:25:54 -0700 | [diff] [blame] | 169 | break; |
| 170 | case DEVICE_REMOVED: |
hiroki | ec18d3a | 2018-05-16 15:27:37 -0700 | [diff] [blame] | 171 | tapiTopologyManager.removeDevice(event.subject()); |
hiroki | bca3e93 | 2018-05-15 15:25:54 -0700 | [diff] [blame] | 172 | break; |
| 173 | case PORT_ADDED: |
hiroki | ec18d3a | 2018-05-16 15:27:37 -0700 | [diff] [blame] | 174 | tapiTopologyManager.addPort(event.port()); |
hiroki | bca3e93 | 2018-05-15 15:25:54 -0700 | [diff] [blame] | 175 | break; |
| 176 | case PORT_REMOVED: |
hiroki | ec18d3a | 2018-05-16 15:27:37 -0700 | [diff] [blame] | 177 | tapiTopologyManager.removePort(event.port()); |
hiroki | bca3e93 | 2018-05-15 15:25:54 -0700 | [diff] [blame] | 178 | break; |
| 179 | default: |
| 180 | log.warn("Unknown Event", event.type()); |
| 181 | break; |
| 182 | } |
| 183 | |
| 184 | } |
| 185 | } |
| 186 | |
| 187 | /** |
| 188 | * Representation of internal listener, listening for link event. |
| 189 | */ |
| 190 | private class InternalLinkListener implements LinkListener { |
| 191 | |
| 192 | /** |
| 193 | * Process an Event from the Device Service. |
| 194 | * |
| 195 | * @param event link event |
| 196 | */ |
| 197 | @Override |
| 198 | public void event(LinkEvent event) { |
| 199 | Link link = event.subject(); |
| 200 | |
| 201 | switch (event.type()) { |
| 202 | case LINK_ADDED: |
| 203 | tapiTopologyManager.addLink(link); |
| 204 | break; |
| 205 | case LINK_REMOVED: |
| 206 | tapiTopologyManager.removeLink(link); |
| 207 | break; |
| 208 | default: |
| 209 | log.warn("Unknown Event", event.type()); |
| 210 | break; |
| 211 | } |
| 212 | } |
| 213 | } |
Ramon Casellas | 390efe9 | 2018-03-01 11:45:27 +0100 | [diff] [blame] | 214 | |
hiroki | 684aa2f | 2018-05-19 20:48:49 -0700 | [diff] [blame] | 215 | /** |
hiroki | f4ed521 | 2018-05-26 22:39:38 -0700 | [diff] [blame] | 216 | * Representation of internal listener, listening for netcfg event. |
| 217 | */ |
| 218 | private class InternalNetCfgListener implements NetworkConfigListener { |
| 219 | |
| 220 | /** |
hiroki | fca084b | 2018-06-02 08:29:42 -0700 | [diff] [blame] | 221 | * Check if the netcfg event should be further processed. |
| 222 | * |
| 223 | * @param event config event |
| 224 | * @return true if event is supported; false otherwise |
| 225 | */ |
| 226 | @Override |
| 227 | public boolean isRelevant(NetworkConfigEvent event) { |
| 228 | |
| 229 | if (event.type() == CONFIG_ADDED || event.type() == CONFIG_UPDATED) { |
| 230 | if (event.config().orElse(null) instanceof TerminalDeviceConfig) { |
| 231 | return true; |
| 232 | } |
| 233 | } |
| 234 | if (event.type() == CONFIG_REMOVED) { |
| 235 | if (event.prevConfig().orElse(null) instanceof TerminalDeviceConfig) { |
| 236 | return true; |
| 237 | } |
| 238 | } |
| 239 | return false; |
| 240 | } |
| 241 | |
| 242 | /** |
hiroki | f4ed521 | 2018-05-26 22:39:38 -0700 | [diff] [blame] | 243 | * Process an Event from the NetCfg Service. |
| 244 | * |
hiroki | fca084b | 2018-06-02 08:29:42 -0700 | [diff] [blame] | 245 | * @param event event |
hiroki | f4ed521 | 2018-05-26 22:39:38 -0700 | [diff] [blame] | 246 | */ |
| 247 | @Override |
| 248 | public void event(NetworkConfigEvent event) { |
hiroki | fca084b | 2018-06-02 08:29:42 -0700 | [diff] [blame] | 249 | |
hiroki | f4ed521 | 2018-05-26 22:39:38 -0700 | [diff] [blame] | 250 | log.info("type: {}", event.type()); |
hiroki | fca084b | 2018-06-02 08:29:42 -0700 | [diff] [blame] | 251 | log.info("subject: {}", event.subject()); |
hiroki | b8ddc3f | 2018-06-02 08:29:42 -0700 | [diff] [blame] | 252 | DeviceId did = ((ConnectPoint) event.subject()).deviceId(); |
| 253 | |
| 254 | DefaultOdtnTerminalDeviceDriver driver = DefaultOdtnTerminalDeviceDriver.create(); |
| 255 | TerminalDeviceConfig config; |
| 256 | |
| 257 | switch (event.type()) { |
| 258 | case CONFIG_ADDED: |
| 259 | case CONFIG_UPDATED: |
| 260 | config = (TerminalDeviceConfig) event.config().get(); |
| 261 | log.info("config: {}", config); |
| 262 | driver.apply(did, config.clientCp().port(), config.subject().port(), config.isEnabled()); |
| 263 | break; |
| 264 | case CONFIG_REMOVED: |
| 265 | config = (TerminalDeviceConfig) event.prevConfig().get(); |
| 266 | log.info("config: {}", config); |
| 267 | driver.apply(did, config.clientCp().port(), config.subject().port(), false); |
| 268 | break; |
| 269 | default: |
| 270 | log.error("Unsupported event type."); |
| 271 | } |
hiroki | f4ed521 | 2018-05-26 22:39:38 -0700 | [diff] [blame] | 272 | } |
| 273 | } |
| 274 | |
hiroki | f4ed521 | 2018-05-26 22:39:38 -0700 | [diff] [blame] | 275 | /** |
hiroki | 684aa2f | 2018-05-19 20:48:49 -0700 | [diff] [blame] | 276 | * Representation of internal listener, listening for dynamic config event. |
| 277 | */ |
| 278 | private class InternalDynamicConfigListener implements DynamicConfigListener { |
| 279 | |
| 280 | /** |
| 281 | * Check if the DCS event should be further processed. |
| 282 | * |
| 283 | * @param event config event |
| 284 | * @return true if event is supported; false otherwise |
| 285 | */ |
| 286 | @Override |
| 287 | public boolean isRelevant(DynamicConfigEvent event) { |
| 288 | // Only care about add and delete |
| 289 | if ((event.type() != NODE_ADDED) && |
| 290 | (event.type() != NODE_DELETED)) { |
| 291 | return false; |
| 292 | } |
| 293 | return true; |
| 294 | } |
| 295 | |
| 296 | |
| 297 | /** |
| 298 | * Process an Event from the Dynamic Configuration Store. |
| 299 | * |
| 300 | * @param event config event |
| 301 | */ |
| 302 | @Override |
| 303 | public void event(DynamicConfigEvent event) { |
| 304 | resolver.makeDirty(); |
hiroki | f4ed521 | 2018-05-26 22:39:38 -0700 | [diff] [blame] | 305 | // ResourceId rsId = event.subject(); |
| 306 | // DataNode node; |
| 307 | // try { |
| 308 | // Filter filter = Filter.builder().addCriteria(rsId).build(); |
| 309 | // node = dynConfigService.readNode(rsId, filter); |
| 310 | // } catch (FailedException e) { |
| 311 | // node = null; |
| 312 | // } |
| 313 | // switch (event.type()) { |
| 314 | // case NODE_ADDED: |
| 315 | // onDcsNodeAdded(rsId, node); |
| 316 | // break; |
| 317 | // |
| 318 | // case NODE_DELETED: |
| 319 | // onDcsNodeDeleted(node); |
| 320 | // break; |
| 321 | // |
| 322 | // default: |
| 323 | // log.warn("Unknown Event", event.type()); |
| 324 | // break; |
| 325 | // } |
hiroki | 684aa2f | 2018-05-19 20:48:49 -0700 | [diff] [blame] | 326 | } |
| 327 | |
hiroki | f4ed521 | 2018-05-26 22:39:38 -0700 | [diff] [blame] | 328 | // /** |
| 329 | // * Process the event that a node has been added to the DCS. |
| 330 | // * |
| 331 | // * @param rsId ResourceId of the added node |
| 332 | // * @param node added node. Access the key and value |
| 333 | // */ |
| 334 | // private void onDcsNodeAdded(ResourceId rsId, DataNode node) { |
| 335 | // |
| 336 | // switch (node.type()) { |
| 337 | // case SINGLE_INSTANCE_NODE: |
| 338 | // break; |
| 339 | // case MULTI_INSTANCE_NODE: |
| 340 | // break; |
| 341 | // case SINGLE_INSTANCE_LEAF_VALUE_NODE: |
| 342 | // break; |
| 343 | // case MULTI_INSTANCE_LEAF_VALUE_NODE: |
| 344 | // break; |
| 345 | // default: |
| 346 | // break; |
| 347 | // } |
| 348 | // |
| 349 | // NodeKey dataNodeKey = node.key(); |
| 350 | // SchemaId schemaId = dataNodeKey.schemaId(); |
hiroki | 684aa2f | 2018-05-19 20:48:49 -0700 | [diff] [blame] | 351 | |
hiroki | fca084b | 2018-06-02 08:29:42 -0700 | [diff] [blame] | 352 | // Consolidate events |
hiroki | ec18d3a | 2018-05-16 15:27:37 -0700 | [diff] [blame] | 353 | // if (!schemaId.namespace().contains("tapi")) { |
| 354 | // return; |
| 355 | // } |
hiroki | bca3e93 | 2018-05-15 15:25:54 -0700 | [diff] [blame] | 356 | // log.info("namespace {}", schemaId.namespace()); |
hiroki | f4ed521 | 2018-05-26 22:39:38 -0700 | [diff] [blame] | 357 | // } |
hiroki | 684aa2f | 2018-05-19 20:48:49 -0700 | [diff] [blame] | 358 | |
hiroki | f4ed521 | 2018-05-26 22:39:38 -0700 | [diff] [blame] | 359 | // /** |
| 360 | // * Process the event that a node has been deleted from the DCS. |
| 361 | // * |
| 362 | // * @param dataNode data node |
| 363 | // */ |
| 364 | // private void onDcsNodeDeleted(DataNode dataNode) { |
| 365 | // // TODO: Implement release logic |
| 366 | // } |
hiroki | 684aa2f | 2018-05-19 20:48:49 -0700 | [diff] [blame] | 367 | |
| 368 | } |
Ramon Casellas | 390efe9 | 2018-03-01 11:45:27 +0100 | [diff] [blame] | 369 | |
Yuta HIGUCHI | a9ae6e6 | 2018-02-26 12:56:20 -0800 | [diff] [blame] | 370 | } |