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