blob: 31107ae26eae6d2075842e12bdfd237eb56b4c28 [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
27import static org.onosproject.odtn.utils.tapi.TapiGlobalClassUtil.setUuid;
28
29/**
30 * Utility builder class for TAPI link creation with DCS.
31 */
32public final class TapiLinkBuilder extends TapiInstanceBuilder {
33
34 private Uuid topologyUuid;
35 private DefaultLink link = new DefaultLink();
36
37 private TapiLinkBuilder() {
38 setUuid(link);
39 }
40
41 public static TapiLinkBuilder builder() {
42 return new TapiLinkBuilder();
43 }
44
45 public TapiLinkBuilder setTopologyUuid(Uuid topologyUuid) {
46 this.topologyUuid = topologyUuid;
47 return this;
48 }
49
hiroki684aa2f2018-05-19 20:48:49 -070050 public TapiLinkBuilder addNep(TapiNepRef nepRef) {
hirokiec18d3a2018-05-16 15:27:37 -070051 DefaultNodeEdgePoint nep = new DefaultNodeEdgePoint();
52 nep.topologyId(nepRef.getTopologyId());
53 nep.nodeId(nepRef.getNodeId());
54 nep.ownedNodeEdgePointId(nepRef.getNepId());
55 link.addToNodeEdgePoint(nep);
56 return this;
57 }
58
59 @Override
hiroki684aa2f2018-05-19 20:48:49 -070060 public ModelObjectId getModelObjectId() {
hirokiec18d3a2018-05-16 15:27:37 -070061
62 TopologyKeys topologyKey = new TopologyKeys();
63 topologyKey.uuid(topologyUuid);
hiroki684aa2f2018-05-19 20:48:49 -070064 return ModelObjectId.builder()
hirokiec18d3a2018-05-16 15:27:37 -070065 .addChild(DefaultContext.class)
66 .addChild(DefaultTopology.class, topologyKey)
67 .build();
hirokiec18d3a2018-05-16 15:27:37 -070068 }
69
70 @Override
hiroki684aa2f2018-05-19 20:48:49 -070071 @SuppressWarnings("unchecked")
72 public DefaultLink getModelObject() {
hirokiec18d3a2018-05-16 15:27:37 -070073 return link;
74 }
75
76 @Override
77 public Uuid getUuid() {
78 return link.uuid();
79 }
80
81}