blob: 21e812cad284100e42dd84d1bd4f75e372dc0b03 [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 java.util.HashMap;
20import java.util.Map;
hiroki684aa2f2018-05-19 20:48:49 -070021import static org.onosproject.odtn.utils.tapi.TapiGlobalClassUtil.addNameList;
hirokiec18d3a2018-05-16 15:27:37 -070022import static org.onosproject.odtn.utils.tapi.TapiGlobalClassUtil.setUuid;
23
24import org.onosproject.net.DeviceId;
25import org.onosproject.yang.gen.v1.tapicommon.rev20180307.tapicommon.DefaultContext;
26import org.onosproject.yang.gen.v1.tapicommon.rev20180307.tapicommon.Uuid;
27import org.onosproject.yang.gen.v1.tapitopology.rev20180307.tapitopology.node.OwnedNodeEdgePoint;
28import org.onosproject.yang.gen.v1.tapitopology.rev20180307.tapitopology.topology.DefaultNode;
29import org.onosproject.yang.gen.v1.tapitopology.rev20180307.tapitopology.topologycontext.DefaultTopology;
30import org.onosproject.yang.gen.v1.tapitopology.rev20180307.tapitopology.topologycontext.TopologyKeys;
hirokiec18d3a2018-05-16 15:27:37 -070031import org.onosproject.yang.model.ModelObjectId;
32
33/**
34 * Utility builder class for TAPI node creation with DCS.
35 */
36public final class TapiNodeBuilder extends TapiInstanceBuilder {
37
38 private Uuid topologyUuid;
39 private DefaultNode node = new DefaultNode();
hirokiec18d3a2018-05-16 15:27:37 -070040
41 private TapiNodeBuilder() {
42 setUuid(node);
43 }
44
45 public static TapiNodeBuilder builder() {
46 return new TapiNodeBuilder();
47 }
48
49 public TapiNodeBuilder setTopologyUuid(Uuid topologyUuid) {
50 this.topologyUuid = topologyUuid;
51 return this;
52 }
53
hiroki684aa2f2018-05-19 20:48:49 -070054 public TapiNodeBuilder addNep(OwnedNodeEdgePoint nep) {
hirokiec18d3a2018-05-16 15:27:37 -070055 node.addToOwnedNodeEdgePoint(nep);
56 return this;
57 }
58
59 public TapiNodeBuilder setDeviceId(DeviceId deviceId) {
hiroki684aa2f2018-05-19 20:48:49 -070060 Map<String, String> kvs = new HashMap<>();
hirokiec18d3a2018-05-16 15:27:37 -070061 kvs.put(DEVICE_ID, deviceId.toString());
hiroki684aa2f2018-05-19 20:48:49 -070062 addNameList(node, kvs);
hirokiec18d3a2018-05-16 15:27:37 -070063 return this;
64 }
65
66 @Override
hiroki684aa2f2018-05-19 20:48:49 -070067 @SuppressWarnings("unchecked")
68 public DefaultNode getModelObject() {
hirokiec18d3a2018-05-16 15:27:37 -070069 return node;
70 }
71
72 @Override
73 public Uuid getUuid() {
74 return node.uuid();
75 }
76
77 @Override
hiroki684aa2f2018-05-19 20:48:49 -070078 public ModelObjectId getModelObjectId() {
hirokiec18d3a2018-05-16 15:27:37 -070079 TopologyKeys topologyKey = new TopologyKeys();
80 topologyKey.uuid(topologyUuid);
hiroki684aa2f2018-05-19 20:48:49 -070081 return ModelObjectId.builder()
hirokiec18d3a2018-05-16 15:27:37 -070082 .addChild(DefaultContext.class)
83 .addChild(DefaultTopology.class, topologyKey)
84 .build();
hirokiec18d3a2018-05-16 15:27:37 -070085 }
86
87}