blob: 2af1cb1a2e0cafe2f89dfd03ff54fa2aeacffd6a [file] [log] [blame]
hirokiec18d3a2018-05-16 15:27:37 -07001/*
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.
15 */
16
17package org.onosproject.odtn.utils.tapi;
18
19import org.onosproject.yang.gen.v1.tapicommon.rev20180307.tapicommon.DefaultContext;
20import org.onosproject.yang.gen.v1.tapicommon.rev20180307.tapicommon.Uuid;
21import org.onosproject.yang.gen.v1.tapitopology.rev20180307.tapitopology.link.DefaultNodeEdgePoint;
22import org.onosproject.yang.gen.v1.tapitopology.rev20180307.tapitopology.topology.DefaultLink;
23import org.onosproject.yang.gen.v1.tapitopology.rev20180307.tapitopology.topologycontext.DefaultTopology;
24import org.onosproject.yang.gen.v1.tapitopology.rev20180307.tapitopology.topologycontext.TopologyKeys;
hirokiec18d3a2018-05-16 15:27:37 -070025import org.onosproject.yang.model.ModelObjectId;
26
hirokif4ed5212018-05-26 22:39:38 -070027import static com.google.common.base.Preconditions.checkNotNull;
28import static org.onosproject.odtn.utils.tapi.TapiGlobalClassUtil.getUuid;
hirokiec18d3a2018-05-16 15:27:37 -070029import static org.onosproject.odtn.utils.tapi.TapiGlobalClassUtil.setUuid;
30
31/**
hirokif4ed5212018-05-26 22:39:38 -070032 * Utility class to deal with TAPI Link with DCS.
hirokiec18d3a2018-05-16 15:27:37 -070033 */
hirokif4ed5212018-05-26 22:39:38 -070034public final class TapiLinkHandler extends TapiObjectHandler<DefaultLink> {
hirokiec18d3a2018-05-16 15:27:37 -070035
36 private Uuid topologyUuid;
hirokiec18d3a2018-05-16 15:27:37 -070037
hirokif4ed5212018-05-26 22:39:38 -070038 private TapiLinkHandler() {
39 obj = new DefaultLink();
40 setId();
hirokiec18d3a2018-05-16 15:27:37 -070041 }
42
hirokif4ed5212018-05-26 22:39:38 -070043 public static TapiLinkHandler create() {
44 return new TapiLinkHandler();
hirokiec18d3a2018-05-16 15:27:37 -070045 }
46
47 @Override
hirokif4ed5212018-05-26 22:39:38 -070048 protected Uuid getIdDetail() {
49 return getUuid(obj);
50 }
51
52 @Override
53 protected void setIdDetail(Uuid uuid) {
54 setUuid(obj, uuid);
55 }
56
57 @Override
58 public ModelObjectId getParentModelObjectId() {
59 checkNotNull(topologyUuid);
hirokiec18d3a2018-05-16 15:27:37 -070060
61 TopologyKeys topologyKey = new TopologyKeys();
62 topologyKey.uuid(topologyUuid);
hiroki684aa2f2018-05-19 20:48:49 -070063 return ModelObjectId.builder()
hirokiec18d3a2018-05-16 15:27:37 -070064 .addChild(DefaultContext.class)
65 .addChild(DefaultTopology.class, topologyKey)
66 .build();
hirokiec18d3a2018-05-16 15:27:37 -070067 }
68
hirokif4ed5212018-05-26 22:39:38 -070069 public TapiLinkHandler setTopologyUuid(Uuid topologyUuid) {
70 this.topologyUuid = topologyUuid;
71 return this;
hirokiec18d3a2018-05-16 15:27:37 -070072 }
73
hirokif4ed5212018-05-26 22:39:38 -070074 public TapiLinkHandler addNep(TapiNepRef nepRef) {
75 DefaultNodeEdgePoint nep = new DefaultNodeEdgePoint();
76 nep.topologyId(nepRef.getTopologyId());
77 nep.nodeId(nepRef.getNodeId());
78 nep.ownedNodeEdgePointId(nepRef.getNepId());
79 obj.addToNodeEdgePoint(nep);
80 return this;
hirokiec18d3a2018-05-16 15:27:37 -070081 }
82
83}