blob: f529d6a499b815ef36cdd6b5f2e920b0a9517064 [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;
24import org.onosproject.tetopology.management.api.link.NetworkLink;
25import org.onosproject.tetopology.management.api.node.NetworkNode;
26import org.onosproject.teyang.api.OperationType;
27import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev20151208
28 .ietfnetwork.DefaultNetworks;
29import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev20151208
30 .ietfnetwork.DefaultNetworks.OnosYangNodeOperationType;
31import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev20151208
32 .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
68 .ietftetopology.networks.network.augmentednwnetwork.DefaultTe;
69import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20160708
70 .ietftetopology.networks.network.augmentednwnetwork.Te;
71import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20160708
72 .ietftetopology.networks.network.networktypes.AugmentedNwNetworkTypes;
73import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20160708
74 .ietftetopology.networks.network.networktypes.DefaultAugmentedNwNetworkTypes;
75import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20160708
76 .ietftetopology.networks.network.networktypes.augmentednwnetworktypes.DefaultTeTopology;
77import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev20160708
78 .ietftetopology.networks.network.networktypes.augmentednwnetworktypes.TeTopology;
79import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.types.rev20160705
80 .ietftetypes.TeGlobalId;
81import org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.types.rev20160705
82 .ietftetypes.TeTopologyId;
83import org.slf4j.Logger;
84import org.slf4j.LoggerFactory;
85
86import com.google.common.collect.Lists;
87
88
89/**
90 * Networks, Networks State conversion functions.
91 */
92public final class NetworkConverter {
93 private static final String
94 E_NULL_TE_NETWORKS = "TeSubsystem networks cannot be null";
95 private static final String
96 E_NULL_TE_NETWORK_LIST = "TeSubsystem network list cannot be null";
97 private static final String
98 E_NULL_TE_NETWORK = "TeSubsystem network cannot be null";
99 private static final String
100 E_NULL_TE_NETWORKID = "TeSubsystem networkId cannot be null";
101 private static final String
102 E_NULL_YANG_NETWORKS = "YANG networks cannot be null";
103 private static final String
104 E_NULL_YANG_NETWORK_LIST = "YANG network list cannot be null";
105 private static final String
106 E_NULL_YANG_NETWORK = "YANG network cannot be null";
107 private static final String
108 E_NULL_YANG_NETWORKID = "YANG networkId cannot be null";
109 private static final String
110 E_NULL_YANG_NETWORKSSTATE = "YANG networksState cannot be null";
111 private static final String
112 E_DIFF_YANG_NETWORKID = "YANG networkId must be same in Network and NetworkState";
113 private static final String
114 E_NULL_YANG_NETWORKSSTATE_NETWORK = "YANG networksState network cannot be null";
115 private static final String
116 E_NULL_YANG_NETWORKSSTATE_NETWORKREF = "YANG networksState networkRef cannot be null";
117
118 private static final Logger log = LoggerFactory.getLogger(NetworkConverter.class);
119
120 // no instantiation
121 private NetworkConverter() {
122 }
123
124 private static OnosYangNodeOperationType toNetworksOperationType(OperationType operation) {
125 switch (operation) {
126 case CREATE:
127 return OnosYangNodeOperationType.CREATE;
128
129 case DELETE:
130 return OnosYangNodeOperationType.DELETE;
131
132 case REMOVE:
133 return OnosYangNodeOperationType.REMOVE;
134
135 case MERGE:
136 return OnosYangNodeOperationType.MERGE;
137
138 case REPLACE:
139 return OnosYangNodeOperationType.REPLACE;
140
141 default:
142 return OnosYangNodeOperationType.NONE;
143 }
144 }
145
146 /**
147 * Networks object conversion from TE Topology subsystem to YANG.
148 *
149 * @param teSubsystem TE Topology subsystem networks object
150 * @param operation operation type
151 * @return Networks YANG object
152 */
153 public static Networks teSubsystem2YangNetworks(
154 org.onosproject.tetopology.management.api.Networks teSubsystem,
155 OperationType operation) {
156 checkNotNull(teSubsystem, E_NULL_TE_NETWORKS);
157 checkNotNull(teSubsystem.networks(), E_NULL_TE_NETWORK_LIST);
158 Networks.NetworksBuilder builder =
159 DefaultNetworks.builder().onosYangNodeOperationType(toNetworksOperationType(operation));
160 List<Network> networks = Lists.newArrayList();
161 for (org.onosproject.tetopology.management.api.Network teNetwork : teSubsystem.networks()) {
162 networks.add(teSubsystem2YangNetwork(teNetwork, operation));
163 }
164 builder.network(networks);
165 return builder.build();
166 }
167
168 private static DefaultNetworksState.OnosYangNodeOperationType
169 toNetworksStateOperationType(OperationType operation) {
170 switch (operation) {
171 case CREATE:
172 return DefaultNetworksState.OnosYangNodeOperationType.CREATE;
173
174 case DELETE:
175 return DefaultNetworksState.OnosYangNodeOperationType.DELETE;
176
177 case REMOVE:
178 return DefaultNetworksState.OnosYangNodeOperationType.REMOVE;
179
180 case MERGE:
181 return DefaultNetworksState.OnosYangNodeOperationType.MERGE;
182
183 case REPLACE:
184 return DefaultNetworksState.OnosYangNodeOperationType.REPLACE;
185
186 default:
187 return DefaultNetworksState.OnosYangNodeOperationType.NONE;
188 }
189 }
190
191 /**
192 * Network States object conversion from TE Topology subsystem to YANG.
193 *
194 * @param teSubsystem TE Topology subsystem networks object
195 * @param operation operation type
196 * @return NetworkStates YANG object
197 */
198 public static NetworksState teSubsystem2YangNetworkStates(
199 org.onosproject.tetopology.management.api.Networks teSubsystem,
200 OperationType operation) {
201 checkNotNull(teSubsystem, "teSubsystem object cannot be null");
202 checkNotNull(teSubsystem.networks(), "TeSubsystem Networks object cannot be null");
203 NetworksState.NetworksStateBuilder builder =
204 DefaultNetworksState.builder().onosYangNodeOperationType(toNetworksStateOperationType(operation));
205 List<org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev20151208
206 .ietfnetwork.networksstate.Network> networks = Lists.newArrayList();
207 for (org.onosproject.tetopology.management.api.Network teNetwork : teSubsystem.networks()) {
208 networks.add(teSubsystem2YangNetworkState(teNetwork, operation));
209 }
210 builder.network(networks);
211 return builder.build();
212 }
213
214 private static org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev20151208
215 .ietfnetwork.networksstate.Network networkStateNetwork(Network network,
216 NetworksState yangNetworkStates) {
217 checkNotNull(network, "YANG Network object cannot be null");
218 checkNotNull(yangNetworkStates, "YANG NetworksState object cannot be null");
219 if (yangNetworkStates.network() == null) {
220 return null;
221 }
222
223 for (org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev20151208
224 .ietfnetwork.networksstate.Network stateNetwork : yangNetworkStates.network()) {
225 if (stateNetwork.networkRef().equals(network.networkId())) {
226 return stateNetwork;
227 }
228 }
229 return null;
230 }
231
232 /**
233 * Networks object conversion from YANG to TE Topology subsystem.
234 *
235 * @param yangNetworks Networks YANG object
236 * @param yangNetworkStates NetworkStates YANG object
237 * @return teSubsystem TE Topology subsystem networks object
238 */
239 public static org.onosproject.tetopology.management.api.Networks yang2TeSubsystemNetworks(
240 Networks yangNetworks, NetworksState yangNetworkStates) {
241 checkNotNull(yangNetworks, E_NULL_YANG_NETWORKS);
242 checkNotNull(yangNetworks.network(), E_NULL_YANG_NETWORK_LIST);
243 checkNotNull(yangNetworkStates, E_NULL_YANG_NETWORKSSTATE);
244
245 org.onosproject.tetopology.management.api.DefaultNetworks defaultNetworks =
246 new org.onosproject.tetopology.management.api.DefaultNetworks();
247 List<org.onosproject.tetopology.management.api.Network> networks = Lists.newArrayList();
248 for (Network network : yangNetworks.network()) {
249 org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev20151208
250 .ietfnetwork.networksstate.Network stateNetwork =
251 networkStateNetwork(network, yangNetworkStates);
252 org.onosproject.tetopology.management.api.Network teNetwork;
253 if (stateNetwork == null) {
254 log.info("networkId {} can't be found in yangNetworkStates",
255 network.networkId());
256 teNetwork = yang2TeSubsystemNetwork(network);
257 } else {
258 teNetwork = yang2TeSubsystemNetwork(network, stateNetwork);
259 }
260 networks.add(teNetwork);
261 }
262
263 defaultNetworks.setNetworks(networks);
264 return defaultNetworks;
265 }
266
267 private static DefaultNetwork.OnosYangNodeOperationType toNetworkOperationType(OperationType operation) {
268 switch (operation) {
269 case CREATE:
270 return DefaultNetwork.OnosYangNodeOperationType.CREATE;
271
272 case DELETE:
273 return DefaultNetwork.OnosYangNodeOperationType.DELETE;
274
275 case REMOVE:
276 return DefaultNetwork.OnosYangNodeOperationType.REMOVE;
277
278 case MERGE:
279 return DefaultNetwork.OnosYangNodeOperationType.MERGE;
280
281 case REPLACE:
282 return DefaultNetwork.OnosYangNodeOperationType.REPLACE;
283
284 default:
285 return DefaultNetwork.OnosYangNodeOperationType.NONE;
286 }
287 }
288
289 private static NetworkBuilder te2YangSupportingNetwork(NetworkBuilder builder,
290 List<KeyId> teSpptNetworkIds) {
291 List<SupportingNetwork> snws = Lists.newArrayList();
292 SupportingNetworkBuilder spNetworkBuilder = DefaultSupportingNetwork.builder();
293 for (KeyId teSpNwKey : teSpptNetworkIds) {
294 snws.add(spNetworkBuilder
295 .networkRef(NetworkId.fromString(teSpNwKey.toString()))
296 .build());
297 }
298 return builder.supportingNetwork(snws);
299 }
300
301 private static NetworkBuilder te2YangNodes(NetworkBuilder builder,
302 List<NetworkNode> teNodes) {
303 List<Node> nodeList = Lists.newArrayList();
304 // Add each node
305 for (org.onosproject.tetopology.management.api.node.NetworkNode node : teNodes) {
306 // Convert the te node to a YO.
307 nodeList.add(NodeConverter.teSubsystem2YangNode(node));
308 }
309 return builder.node(nodeList);
310 }
311
312 private static NetworkBuilder te2YangLinks(NetworkBuilder builder,
313 List<NetworkLink> teLinks) {
314 List<Link> linkList = Lists.newArrayList();
315 // Add each link
316 for (org.onosproject.tetopology.management.api.link.NetworkLink link : teLinks) {
317 // Convert the te link to a YO
318 linkList.add(LinkConverter.teSubsystem2YangLink(link));
319 }
320 AugmentedNdNetworkBuilder ndAugment = DefaultAugmentedNdNetwork.builder();
321 ndAugment.link(linkList);
322 builder.addYangAugmentedInfo(ndAugment.build(), AugmentedNdNetwork.class);
323 return builder;
324 }
325
326 private static NetworkBuilder te2YangNetworkType(NetworkBuilder builder,
327 org.onosproject.tetopology.management.api.TeTopologyId teTopologyId) {
328 NetworkTypes.NetworkTypesBuilder nwType = DefaultNetworkTypes.builder();
329 if (teTopologyId != null) {
330 // Set "te-topology" network type.
331 TeTopology.TeTopologyBuilder teTopology = DefaultTeTopology.builder();
332 AugmentedNwNetworkTypes.AugmentedNwNetworkTypesBuilder teNwType =
333 DefaultAugmentedNwNetworkTypes.builder();
334 teNwType.teTopology(teTopology.build());
335 nwType.addYangAugmentedInfo(teNwType.build(), AugmentedNwNetworkTypes.class);
336 }
337 return builder.networkTypes(nwType.build());
338 }
339
340 private static NetworkBuilder te2YangTopologyIds(NetworkBuilder builder,
341 org.onosproject.tetopology.management.api.TeTopologyId teTopologyId) {
342 Te.TeBuilder teBuilder = DefaultTe.builder();
343 teBuilder.clientId(new TeGlobalId(teTopologyId.clientId()));
344 teBuilder.providerId(new TeGlobalId(teTopologyId.providerId()));
345 if (teTopologyId.topologyId() != null) {
346 teBuilder.teTopologyId(new TeTopologyId(teTopologyId.topologyId()));
347 }
348
349 AugmentedNwNetwork.AugmentedNwNetworkBuilder nwAugment = DefaultAugmentedNwNetwork
350 .builder();
351 nwAugment.te(teBuilder.build());
352 builder.addYangAugmentedInfo(nwAugment.build(),
353 AugmentedNwNetwork.class);
354 return builder;
355 }
356
357 /**
358 * Network 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 Network teSubsystem2YangNetwork(
365 org.onosproject.tetopology.management.api.Network teSubsystem,
366 OperationType operation) {
367 checkNotNull(teSubsystem, E_NULL_TE_NETWORK);
368 checkNotNull(teSubsystem.networkId(), E_NULL_TE_NETWORKID);
369
370 // Generate a network builder with the specific networkId.
371 NetworkId networkId = NetworkId.fromString(teSubsystem.networkId().toString());
372 NetworkBuilder builder = DefaultNetwork.builder()
373 .onosYangNodeOperationType(
374 toNetworkOperationType(operation))
375 .networkId(networkId);
376
377 // Supporting networks
378 if (teSubsystem.getSupportingNetworkIds() != null) {
379 builder = te2YangSupportingNetwork(builder, teSubsystem.getSupportingNetworkIds());
380 }
381
382 // Nodes
383 if (teSubsystem.getNodes() != null) {
384 builder = te2YangNodes(builder, teSubsystem.getNodes());
385 }
386
387 // Network types
388 builder = te2YangNetworkType(builder, teSubsystem.getTeTopologyId());
389
390 // Add links - link is the augmentation
391 if (teSubsystem.getLinks() != null) {
392 builder = te2YangLinks(builder, teSubsystem.getLinks());
393 }
394
395 // TE Topology IDs
396 if (teSubsystem.getTeTopologyId() != null) {
397 builder = te2YangTopologyIds(builder, teSubsystem.getTeTopologyId());
398 }
399
400 return builder.build();
401 }
402
403 /**
404 * Network State object conversion from TE Topology subsystem to YANG.
405 *
406 * @param teSubsystem TE Topology subsystem network object
407 * @param operation operation type
408 * @return Network YANG object
409 */
410 public static org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network
411 .rev20151208.ietfnetwork.networksstate.Network
412 teSubsystem2YangNetworkState(
413 org.onosproject.tetopology.management.api.Network teSubsystem,
414 OperationType operation) {
415 checkNotNull(teSubsystem, E_NULL_TE_NETWORK);
416 checkNotNull(teSubsystem.networkId(), E_NULL_TE_NETWORKID);
417
418 org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev20151208
419 .ietfnetwork.networksstate.Network.NetworkBuilder stateBuilder =
420 org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev20151208
421 .ietfnetwork.networksstate.DefaultNetwork.builder();
422
423 if (teSubsystem.networkId() != null) {
424 stateBuilder.networkRef(NetworkId.fromString(teSubsystem.networkId().toString()));
425 }
426 stateBuilder.serverProvided(teSubsystem.isServerProvided());
427
428 // Operation type may be required.
429 return stateBuilder.build();
430 }
431
432
433 /**
434 * Network conversion from YANG to TE Topology subsystem.
435 *
436 * @param yangNetwork Network YANG object
437 * @return TE Topology subsystem defaultNetwork object
438 */
439 private static org.onosproject.tetopology.management.api.DefaultNetwork yang2TeDefaultNetwork(
440 Network yangNetwork) {
441 checkNotNull(yangNetwork, E_NULL_YANG_NETWORK);
442 checkNotNull(yangNetwork.networkId(), E_NULL_YANG_NETWORKID);
443 String networkId = yangNetwork.networkId().uri().string();
444 org.onosproject.tetopology.management.api.DefaultNetwork teNetwork =
445 new org.onosproject.tetopology.management.api.DefaultNetwork(KeyId.keyId(networkId));
446
447 // Supporting networks
448 if (yangNetwork.supportingNetwork() != null) {
449 List<KeyId> supportingNetworkIds = Lists.newArrayList();
450 for (SupportingNetwork supportNw : yangNetwork.supportingNetwork()) {
451 supportingNetworkIds.add(
452 KeyId.keyId(supportNw.networkRef().uri().string()));
453 }
454 teNetwork.setSupportingNetworkIds(supportingNetworkIds);
455 }
456
457 // Nodes
458 if (yangNetwork.node() != null) {
459 List<org.onosproject.tetopology.management.api.node.NetworkNode>
460 teNodes = Lists.newArrayList();
461 for (Node node : yangNetwork.node()) {
462 // Convert the Yang Node to a TE node.
463 teNodes.add(NodeConverter.yang2TeSubsystemNode(node, yangNetwork.networkId()));
464 }
465 teNetwork.setNodes(teNodes);
466 }
467
468 // Links
469 if (yangNetwork.yangAugmentedInfo(AugmentedNdNetwork.class) != null) {
470 AugmentedNdNetwork augmentLink =
471 (AugmentedNdNetwork) yangNetwork.yangAugmentedInfo(AugmentedNdNetwork.class);
472 List<org.onosproject.tetopology.management.api.link.NetworkLink>
473 teLinks = Lists.newArrayList();
474 for (Link link : augmentLink.link()) {
475 // Convert the Yang Link to a TE link.
476 teLinks.add(LinkConverter.yang2TeSubsystemLink(link, yangNetwork.networkId()));
477 }
478 teNetwork.setLinks(teLinks);
479 }
480
481 // TE Topology Ids
482 if (yangNetwork.yangAugmentedInfo(AugmentedNwNetwork.class) != null) {
483 AugmentedNwNetwork augmentTeIds =
484 (AugmentedNwNetwork) yangNetwork.yangAugmentedInfo(AugmentedNwNetwork.class);
485 org.onosproject.tetopology.management.api.TeTopologyId teTopologyId =
486 new org.onosproject.tetopology.management.api.TeTopologyId(
487 augmentTeIds.te().clientId().uint32(),
488 augmentTeIds.te().providerId().uint32(),
489 augmentTeIds.te().teTopologyId().string());
490
491 teNetwork.setTeTopologyId(teTopologyId);
492 }
493
494 return teNetwork;
495 }
496
497 /**
498 * Network object conversion from YANG to TE Topology subsystem.
499 *
500 * @param yangNetwork Network YANG object
501 * @return network TE Topology subsystem networks object
502 */
503 public static org.onosproject.tetopology.management.api.Network yang2TeSubsystemNetwork(Network yangNetwork) {
504 return yang2TeDefaultNetwork(yangNetwork);
505 }
506
507 /**
508 * Network and State object conversion from YANG to TE Topology subsystem.
509 *
510 * @param yangNetwork Network YANG object
511 * @param yangNetworkState NetworkState YANG object
512 * @return teSubsystem TE Topology subsystem networks object
513 */
514 public static org.onosproject.tetopology.management.api.Network yang2TeSubsystemNetwork(Network yangNetwork,
515 org.onosproject.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev20151208.ietfnetwork
516 .networksstate.Network yangNetworkState) {
517 org.onosproject.tetopology.management.api.DefaultNetwork teNetwork =
518 yang2TeDefaultNetwork(yangNetwork);
519
520 checkNotNull(yangNetworkState, E_NULL_YANG_NETWORKSSTATE_NETWORK);
521 checkNotNull(yangNetworkState.networkRef(), E_NULL_YANG_NETWORKSSTATE_NETWORKREF);
522 String networkref = yangNetworkState.networkRef().uri().string();
523 checkState(teNetwork.networkId().toString().equals(networkref),
524 E_DIFF_YANG_NETWORKID);
525
526 teNetwork.setServerProvided(yangNetworkState.serverProvided());
527
528 return teNetwork;
529 }
530}
531
532