blob: cb24d609af7bdc155e1e34814b29a748d3983726 [file] [log] [blame]
Yixiao Chen39828a62016-09-14 14:37:06 -04001/*
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 */
16package org.onosproject.teyang.utils.topology;
17
18import static com.google.common.base.Preconditions.checkNotNull;
19import static com.google.common.base.Preconditions.checkState;
20
21import java.util.List;
22
23import org.onosproject.tetopology.management.api.KeyId;
Henry Yua4e34f82016-11-06 18:30:59 -050024import org.onosproject.tetopology.management.api.TeTopologyEvent;
Yixiao Chen39828a62016-09-14 14:37:06 -040025import org.onosproject.tetopology.management.api.link.NetworkLink;
26import org.onosproject.tetopology.management.api.node.NetworkNode;
27import org.onosproject.teyang.api.OperationType;
Hesam Rahimie96d0be2016-10-19 15:51:11 -040028import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev20151208.IetfNetwork.OnosYangOpType;
Yixiao Chen39828a62016-09-14 14:37:06 -040029import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev20151208
30 .ietfnetwork.DefaultNetworks;
31import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev20151208
Yixiao Chen39828a62016-09-14 14:37:06 -040032 .ietfnetwork.DefaultNetworksState;
33import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev20151208
34 .ietfnetwork.NetworkId;
35import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev20151208
36 .ietfnetwork.Networks;
37import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev20151208
38 .ietfnetwork.NetworksState;
39import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev20151208
40 .ietfnetwork.networks.DefaultNetwork;
41import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev20151208
42 .ietfnetwork.networks.Network;
43import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev20151208
44 .ietfnetwork.networks.Network.NetworkBuilder;
45import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev20151208
46 .ietfnetwork.networks.network.DefaultNetworkTypes;
47import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev20151208
48 .ietfnetwork.networks.network.DefaultSupportingNetwork;
49import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev20151208.ietfnetwork.networks.network.DefaultSupportingNetwork.SupportingNetworkBuilder;
50import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev20151208
51 .ietfnetwork.networks.network.NetworkTypes;
52import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev20151208
53 .ietfnetwork.networks.network.Node;
54import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev20151208
55 .ietfnetwork.networks.network.SupportingNetwork;
56import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev20151208
57 .ietfnetworktopology.networks.network.AugmentedNdNetwork;
58import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev20151208
59 .ietfnetworktopology.networks.network.DefaultAugmentedNdNetwork;
60import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev20151208.ietfnetworktopology.networks.network.DefaultAugmentedNdNetwork.AugmentedNdNetworkBuilder;
61import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev20151208
62 .ietfnetworktopology.networks.network.augmentedndnetwork.Link;
63import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20160708
64 .ietftetopology.networks.network.AugmentedNwNetwork;
65import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20160708
66 .ietftetopology.networks.network.DefaultAugmentedNwNetwork;
67import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20160708
Yixiao Chen39828a62016-09-14 14:37:06 -040068 .ietftetopology.networks.network.networktypes.AugmentedNwNetworkTypes;
69import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20160708
70 .ietftetopology.networks.network.networktypes.DefaultAugmentedNwNetworkTypes;
Hesam Rahimie96d0be2016-10-19 15:51:11 -040071import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20160708.ietftetopology.tetopologyaugment.DefaultTe;
72import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20160708.ietftetopology.tetopologyaugment.Te;
73import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20160708.ietftetopology.tetopologytype.DefaultTeTopology;
74import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20160708.ietftetopology.tetopologytype.TeTopology;
Henry Yua4e34f82016-11-06 18:30:59 -050075import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20160708.ietftetopology.IetfTeTopologyEvent;
Yixiao Chen39828a62016-09-14 14:37:06 -040076import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.types.rev20160705
77 .ietftetypes.TeGlobalId;
78import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.types.rev20160705
79 .ietftetypes.TeTopologyId;
80import org.slf4j.Logger;
81import org.slf4j.LoggerFactory;
82
83import com.google.common.collect.Lists;
84
85
86/**
87 * Networks, Networks State conversion functions.
88 */
89public final class NetworkConverter {
90 private static final String
91 E_NULL_TE_NETWORKS = "TeSubsystem networks cannot be null";
92 private static final String
93 E_NULL_TE_NETWORK_LIST = "TeSubsystem network list cannot be null";
94 private static final String
95 E_NULL_TE_NETWORK = "TeSubsystem network cannot be null";
96 private static final String
97 E_NULL_TE_NETWORKID = "TeSubsystem networkId cannot be null";
98 private static final String
99 E_NULL_YANG_NETWORKS = "YANG networks cannot be null";
100 private static final String
101 E_NULL_YANG_NETWORK_LIST = "YANG network list cannot be null";
102 private static final String
103 E_NULL_YANG_NETWORK = "YANG network cannot be null";
104 private static final String
105 E_NULL_YANG_NETWORKID = "YANG networkId cannot be null";
106 private static final String
107 E_NULL_YANG_NETWORKSSTATE = "YANG networksState cannot be null";
108 private static final String
109 E_DIFF_YANG_NETWORKID = "YANG networkId must be same in Network and NetworkState";
110 private static final String
111 E_NULL_YANG_NETWORKSSTATE_NETWORK = "YANG networksState network cannot be null";
112 private static final String
113 E_NULL_YANG_NETWORKSSTATE_NETWORKREF = "YANG networksState networkRef cannot be null";
114
115 private static final Logger log = LoggerFactory.getLogger(NetworkConverter.class);
116
117 // no instantiation
118 private NetworkConverter() {
119 }
120
Hesam Rahimie96d0be2016-10-19 15:51:11 -0400121 private static OnosYangOpType toNetworksOperationType(OperationType operation) {
Yixiao Chen39828a62016-09-14 14:37:06 -0400122 switch (operation) {
123 case CREATE:
Hesam Rahimie96d0be2016-10-19 15:51:11 -0400124 return OnosYangOpType.CREATE;
Yixiao Chen39828a62016-09-14 14:37:06 -0400125
126 case DELETE:
Hesam Rahimie96d0be2016-10-19 15:51:11 -0400127 return OnosYangOpType.DELETE;
Yixiao Chen39828a62016-09-14 14:37:06 -0400128
129 case REMOVE:
Hesam Rahimie96d0be2016-10-19 15:51:11 -0400130 return OnosYangOpType.REMOVE;
Yixiao Chen39828a62016-09-14 14:37:06 -0400131
132 case MERGE:
Hesam Rahimie96d0be2016-10-19 15:51:11 -0400133 return OnosYangOpType.MERGE;
Yixiao Chen39828a62016-09-14 14:37:06 -0400134
135 case REPLACE:
Hesam Rahimie96d0be2016-10-19 15:51:11 -0400136 return OnosYangOpType.REPLACE;
Yixiao Chen39828a62016-09-14 14:37:06 -0400137
138 default:
Hesam Rahimie96d0be2016-10-19 15:51:11 -0400139 return OnosYangOpType.NONE;
Yixiao Chen39828a62016-09-14 14:37:06 -0400140 }
141 }
142
143 /**
144 * Networks object conversion from TE Topology subsystem to YANG.
145 *
146 * @param teSubsystem TE Topology subsystem networks object
147 * @param operation operation type
148 * @return Networks YANG object
149 */
150 public static Networks teSubsystem2YangNetworks(
151 org.onosproject.tetopology.management.api.Networks teSubsystem,
152 OperationType operation) {
153 checkNotNull(teSubsystem, E_NULL_TE_NETWORKS);
154 checkNotNull(teSubsystem.networks(), E_NULL_TE_NETWORK_LIST);
155 Networks.NetworksBuilder builder =
Hesam Rahimie96d0be2016-10-19 15:51:11 -0400156 DefaultNetworks.builder()
157 .yangNetworksOpType(toNetworksOperationType(operation));
Yixiao Chen39828a62016-09-14 14:37:06 -0400158 List<Network> networks = Lists.newArrayList();
159 for (org.onosproject.tetopology.management.api.Network teNetwork : teSubsystem.networks()) {
160 networks.add(teSubsystem2YangNetwork(teNetwork, operation));
161 }
162 builder.network(networks);
163 return builder.build();
164 }
165
Yixiao Chen39828a62016-09-14 14:37:06 -0400166 /**
167 * Network States object conversion from TE Topology subsystem to YANG.
168 *
169 * @param teSubsystem TE Topology subsystem networks object
170 * @param operation operation type
171 * @return NetworkStates YANG object
172 */
173 public static NetworksState teSubsystem2YangNetworkStates(
174 org.onosproject.tetopology.management.api.Networks teSubsystem,
175 OperationType operation) {
176 checkNotNull(teSubsystem, "teSubsystem object cannot be null");
177 checkNotNull(teSubsystem.networks(), "TeSubsystem Networks object cannot be null");
178 NetworksState.NetworksStateBuilder builder =
Hesam Rahimie96d0be2016-10-19 15:51:11 -0400179 DefaultNetworksState.builder()
180 .yangNetworksStateOpType(toNetworksOperationType(operation));
Yixiao Chen39828a62016-09-14 14:37:06 -0400181 List<org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev20151208
182 .ietfnetwork.networksstate.Network> networks = Lists.newArrayList();
183 for (org.onosproject.tetopology.management.api.Network teNetwork : teSubsystem.networks()) {
184 networks.add(teSubsystem2YangNetworkState(teNetwork, operation));
185 }
186 builder.network(networks);
187 return builder.build();
188 }
189
190 private static org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev20151208
191 .ietfnetwork.networksstate.Network networkStateNetwork(Network network,
192 NetworksState yangNetworkStates) {
193 checkNotNull(network, "YANG Network object cannot be null");
194 checkNotNull(yangNetworkStates, "YANG NetworksState object cannot be null");
195 if (yangNetworkStates.network() == null) {
196 return null;
197 }
198
199 for (org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev20151208
200 .ietfnetwork.networksstate.Network stateNetwork : yangNetworkStates.network()) {
201 if (stateNetwork.networkRef().equals(network.networkId())) {
202 return stateNetwork;
203 }
204 }
205 return null;
206 }
207
208 /**
209 * Networks object conversion from YANG to TE Topology subsystem.
210 *
211 * @param yangNetworks Networks YANG object
212 * @param yangNetworkStates NetworkStates YANG object
213 * @return teSubsystem TE Topology subsystem networks object
214 */
215 public static org.onosproject.tetopology.management.api.Networks yang2TeSubsystemNetworks(
216 Networks yangNetworks, NetworksState yangNetworkStates) {
217 checkNotNull(yangNetworks, E_NULL_YANG_NETWORKS);
218 checkNotNull(yangNetworks.network(), E_NULL_YANG_NETWORK_LIST);
219 checkNotNull(yangNetworkStates, E_NULL_YANG_NETWORKSSTATE);
220
221 org.onosproject.tetopology.management.api.DefaultNetworks defaultNetworks =
222 new org.onosproject.tetopology.management.api.DefaultNetworks();
223 List<org.onosproject.tetopology.management.api.Network> networks = Lists.newArrayList();
224 for (Network network : yangNetworks.network()) {
225 org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev20151208
226 .ietfnetwork.networksstate.Network stateNetwork =
227 networkStateNetwork(network, yangNetworkStates);
228 org.onosproject.tetopology.management.api.Network teNetwork;
229 if (stateNetwork == null) {
230 log.info("networkId {} can't be found in yangNetworkStates",
231 network.networkId());
232 teNetwork = yang2TeSubsystemNetwork(network);
233 } else {
234 teNetwork = yang2TeSubsystemNetwork(network, stateNetwork);
235 }
236 networks.add(teNetwork);
237 }
238
239 defaultNetworks.setNetworks(networks);
240 return defaultNetworks;
241 }
242
Yixiao Chen39828a62016-09-14 14:37:06 -0400243 private static NetworkBuilder te2YangSupportingNetwork(NetworkBuilder builder,
244 List<KeyId> teSpptNetworkIds) {
245 List<SupportingNetwork> snws = Lists.newArrayList();
246 SupportingNetworkBuilder spNetworkBuilder = DefaultSupportingNetwork.builder();
247 for (KeyId teSpNwKey : teSpptNetworkIds) {
248 snws.add(spNetworkBuilder
249 .networkRef(NetworkId.fromString(teSpNwKey.toString()))
250 .build());
251 }
252 return builder.supportingNetwork(snws);
253 }
254
255 private static NetworkBuilder te2YangNodes(NetworkBuilder builder,
256 List<NetworkNode> teNodes) {
257 List<Node> nodeList = Lists.newArrayList();
258 // Add each node
259 for (org.onosproject.tetopology.management.api.node.NetworkNode node : teNodes) {
260 // Convert the te node to a YO.
261 nodeList.add(NodeConverter.teSubsystem2YangNode(node));
262 }
263 return builder.node(nodeList);
264 }
265
266 private static NetworkBuilder te2YangLinks(NetworkBuilder builder,
267 List<NetworkLink> teLinks) {
268 List<Link> linkList = Lists.newArrayList();
269 // Add each link
270 for (org.onosproject.tetopology.management.api.link.NetworkLink link : teLinks) {
271 // Convert the te link to a YO
272 linkList.add(LinkConverter.teSubsystem2YangLink(link));
273 }
274 AugmentedNdNetworkBuilder ndAugment = DefaultAugmentedNdNetwork.builder();
275 ndAugment.link(linkList);
276 builder.addYangAugmentedInfo(ndAugment.build(), AugmentedNdNetwork.class);
277 return builder;
278 }
279
280 private static NetworkBuilder te2YangNetworkType(NetworkBuilder builder,
281 org.onosproject.tetopology.management.api.TeTopologyId teTopologyId) {
282 NetworkTypes.NetworkTypesBuilder nwType = DefaultNetworkTypes.builder();
283 if (teTopologyId != null) {
284 // Set "te-topology" network type.
285 TeTopology.TeTopologyBuilder teTopology = DefaultTeTopology.builder();
286 AugmentedNwNetworkTypes.AugmentedNwNetworkTypesBuilder teNwType =
287 DefaultAugmentedNwNetworkTypes.builder();
288 teNwType.teTopology(teTopology.build());
289 nwType.addYangAugmentedInfo(teNwType.build(), AugmentedNwNetworkTypes.class);
290 }
291 return builder.networkTypes(nwType.build());
292 }
293
294 private static NetworkBuilder te2YangTopologyIds(NetworkBuilder builder,
295 org.onosproject.tetopology.management.api.TeTopologyId teTopologyId) {
296 Te.TeBuilder teBuilder = DefaultTe.builder();
297 teBuilder.clientId(new TeGlobalId(teTopologyId.clientId()));
298 teBuilder.providerId(new TeGlobalId(teTopologyId.providerId()));
299 if (teTopologyId.topologyId() != null) {
300 teBuilder.teTopologyId(new TeTopologyId(teTopologyId.topologyId()));
301 }
302
303 AugmentedNwNetwork.AugmentedNwNetworkBuilder nwAugment = DefaultAugmentedNwNetwork
304 .builder();
305 nwAugment.te(teBuilder.build());
306 builder.addYangAugmentedInfo(nwAugment.build(),
307 AugmentedNwNetwork.class);
308 return builder;
309 }
310
311 /**
312 * Network object conversion from TE Topology subsystem to YANG.
313 *
314 * @param teSubsystem TE Topology subsystem network object
315 * @param operation operation type
316 * @return Network YANG object
317 */
318 public static Network teSubsystem2YangNetwork(
319 org.onosproject.tetopology.management.api.Network teSubsystem,
320 OperationType operation) {
321 checkNotNull(teSubsystem, E_NULL_TE_NETWORK);
322 checkNotNull(teSubsystem.networkId(), E_NULL_TE_NETWORKID);
323
324 // Generate a network builder with the specific networkId.
325 NetworkId networkId = NetworkId.fromString(teSubsystem.networkId().toString());
326 NetworkBuilder builder = DefaultNetwork.builder()
Hesam Rahimie96d0be2016-10-19 15:51:11 -0400327 .yangNetworkOpType(
328 toNetworksOperationType(operation))
Yixiao Chen39828a62016-09-14 14:37:06 -0400329 .networkId(networkId);
330
331 // Supporting networks
332 if (teSubsystem.getSupportingNetworkIds() != null) {
333 builder = te2YangSupportingNetwork(builder, teSubsystem.getSupportingNetworkIds());
334 }
335
336 // Nodes
337 if (teSubsystem.getNodes() != null) {
338 builder = te2YangNodes(builder, teSubsystem.getNodes());
339 }
340
341 // Network types
342 builder = te2YangNetworkType(builder, teSubsystem.getTeTopologyId());
343
344 // Add links - link is the augmentation
345 if (teSubsystem.getLinks() != null) {
346 builder = te2YangLinks(builder, teSubsystem.getLinks());
347 }
348
349 // TE Topology IDs
350 if (teSubsystem.getTeTopologyId() != null) {
351 builder = te2YangTopologyIds(builder, teSubsystem.getTeTopologyId());
352 }
353
354 return builder.build();
355 }
356
357 /**
358 * Network State object conversion from TE Topology subsystem to YANG.
359 *
360 * @param teSubsystem TE Topology subsystem network object
361 * @param operation operation type
362 * @return Network YANG object
363 */
364 public static org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network
365 .rev20151208.ietfnetwork.networksstate.Network
366 teSubsystem2YangNetworkState(
367 org.onosproject.tetopology.management.api.Network teSubsystem,
368 OperationType operation) {
369 checkNotNull(teSubsystem, E_NULL_TE_NETWORK);
370 checkNotNull(teSubsystem.networkId(), E_NULL_TE_NETWORKID);
371
372 org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev20151208
373 .ietfnetwork.networksstate.Network.NetworkBuilder stateBuilder =
374 org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev20151208
375 .ietfnetwork.networksstate.DefaultNetwork.builder();
376
377 if (teSubsystem.networkId() != null) {
378 stateBuilder.networkRef(NetworkId.fromString(teSubsystem.networkId().toString()));
379 }
380 stateBuilder.serverProvided(teSubsystem.isServerProvided());
381
382 // Operation type may be required.
383 return stateBuilder.build();
384 }
385
386
387 /**
388 * Network conversion from YANG to TE Topology subsystem.
389 *
390 * @param yangNetwork Network YANG object
391 * @return TE Topology subsystem defaultNetwork object
392 */
393 private static org.onosproject.tetopology.management.api.DefaultNetwork yang2TeDefaultNetwork(
394 Network yangNetwork) {
395 checkNotNull(yangNetwork, E_NULL_YANG_NETWORK);
396 checkNotNull(yangNetwork.networkId(), E_NULL_YANG_NETWORKID);
397 String networkId = yangNetwork.networkId().uri().string();
398 org.onosproject.tetopology.management.api.DefaultNetwork teNetwork =
399 new org.onosproject.tetopology.management.api.DefaultNetwork(KeyId.keyId(networkId));
400
401 // Supporting networks
402 if (yangNetwork.supportingNetwork() != null) {
403 List<KeyId> supportingNetworkIds = Lists.newArrayList();
404 for (SupportingNetwork supportNw : yangNetwork.supportingNetwork()) {
405 supportingNetworkIds.add(
406 KeyId.keyId(supportNw.networkRef().uri().string()));
407 }
408 teNetwork.setSupportingNetworkIds(supportingNetworkIds);
409 }
410
411 // Nodes
412 if (yangNetwork.node() != null) {
413 List<org.onosproject.tetopology.management.api.node.NetworkNode>
414 teNodes = Lists.newArrayList();
415 for (Node node : yangNetwork.node()) {
416 // Convert the Yang Node to a TE node.
417 teNodes.add(NodeConverter.yang2TeSubsystemNode(node, yangNetwork.networkId()));
418 }
419 teNetwork.setNodes(teNodes);
420 }
421
422 // Links
423 if (yangNetwork.yangAugmentedInfo(AugmentedNdNetwork.class) != null) {
424 AugmentedNdNetwork augmentLink =
425 (AugmentedNdNetwork) yangNetwork.yangAugmentedInfo(AugmentedNdNetwork.class);
426 List<org.onosproject.tetopology.management.api.link.NetworkLink>
427 teLinks = Lists.newArrayList();
428 for (Link link : augmentLink.link()) {
429 // Convert the Yang Link to a TE link.
430 teLinks.add(LinkConverter.yang2TeSubsystemLink(link, yangNetwork.networkId()));
431 }
432 teNetwork.setLinks(teLinks);
433 }
434
435 // TE Topology Ids
436 if (yangNetwork.yangAugmentedInfo(AugmentedNwNetwork.class) != null) {
437 AugmentedNwNetwork augmentTeIds =
438 (AugmentedNwNetwork) yangNetwork.yangAugmentedInfo(AugmentedNwNetwork.class);
439 org.onosproject.tetopology.management.api.TeTopologyId teTopologyId =
440 new org.onosproject.tetopology.management.api.TeTopologyId(
441 augmentTeIds.te().clientId().uint32(),
442 augmentTeIds.te().providerId().uint32(),
443 augmentTeIds.te().teTopologyId().string());
444
445 teNetwork.setTeTopologyId(teTopologyId);
446 }
447
448 return teNetwork;
449 }
450
451 /**
452 * Network object conversion from YANG to TE Topology subsystem.
453 *
454 * @param yangNetwork Network YANG object
455 * @return network TE Topology subsystem networks object
456 */
457 public static org.onosproject.tetopology.management.api.Network yang2TeSubsystemNetwork(Network yangNetwork) {
458 return yang2TeDefaultNetwork(yangNetwork);
459 }
460
461 /**
462 * Network and State object conversion from YANG to TE Topology subsystem.
463 *
464 * @param yangNetwork Network YANG object
465 * @param yangNetworkState NetworkState YANG object
466 * @return teSubsystem TE Topology subsystem networks object
467 */
468 public static org.onosproject.tetopology.management.api.Network yang2TeSubsystemNetwork(Network yangNetwork,
469 org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev20151208.ietfnetwork
470 .networksstate.Network yangNetworkState) {
471 org.onosproject.tetopology.management.api.DefaultNetwork teNetwork =
472 yang2TeDefaultNetwork(yangNetwork);
473
474 checkNotNull(yangNetworkState, E_NULL_YANG_NETWORKSSTATE_NETWORK);
475 checkNotNull(yangNetworkState.networkRef(), E_NULL_YANG_NETWORKSSTATE_NETWORKREF);
Hesam Rahimie96d0be2016-10-19 15:51:11 -0400476 String networkref = yangNetworkState.networkRef().toString();
Yixiao Chen39828a62016-09-14 14:37:06 -0400477 checkState(teNetwork.networkId().toString().equals(networkref),
478 E_DIFF_YANG_NETWORKID);
479
480 teNetwork.setServerProvided(yangNetworkState.serverProvided());
481
482 return teNetwork;
483 }
Henry Yua4e34f82016-11-06 18:30:59 -0500484
485 /**
486 * Converts a TE Topology event from the data format used in core to its
487 * corresponding YANG Object (YO) format.
488 *
489 * @param event TE Topology event from the core
490 * @return YANG Object converted from event
491 */
492 public static IetfTeTopologyEvent teTopoEvent2YangIetfTeTopoEvent(TeTopologyEvent event) {
493 // TODO: implementation will be submitted as a seperate review.
494 return null;
495 }
Yixiao Chen39828a62016-09-14 14:37:06 -0400496}
497
498