blob: 868df722e7d65bff34d0c92a3109598a7950dde8 [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;
21import static org.onosproject.odtn.utils.tapi.TapiGlobalClassUtil.setNameList;
22import 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;
31import org.onosproject.yang.model.ModelObject;
32import org.onosproject.yang.model.ModelObjectData;
33import org.onosproject.yang.model.ModelObjectId;
34
35/**
36 * Utility builder class for TAPI node creation with DCS.
37 */
38public final class TapiNodeBuilder extends TapiInstanceBuilder {
39
40 private Uuid topologyUuid;
41 private DefaultNode node = new DefaultNode();
42 private Map<String, String> kvs = new HashMap<>();
43
44 private TapiNodeBuilder() {
45 setUuid(node);
46 }
47
48 public static TapiNodeBuilder builder() {
49 return new TapiNodeBuilder();
50 }
51
52 public TapiNodeBuilder setTopologyUuid(Uuid topologyUuid) {
53 this.topologyUuid = topologyUuid;
54 return this;
55 }
56
57 public TapiNodeBuilder setNep(OwnedNodeEdgePoint nep) {
58 node.addToOwnedNodeEdgePoint(nep);
59 return this;
60 }
61
62 public TapiNodeBuilder setDeviceId(DeviceId deviceId) {
63 kvs.put(DEVICE_ID, deviceId.toString());
64 return this;
65 }
66
67 @Override
68 public ModelObject getModelObject() {
69 return node;
70 }
71
72 @Override
73 public Uuid getUuid() {
74 return node.uuid();
75 }
76
77 @Override
78 public ModelObjectData build() {
79 setNameList(node, kvs);
80
81 TopologyKeys topologyKey = new TopologyKeys();
82 topologyKey.uuid(topologyUuid);
83 ModelObjectId objId = ModelObjectId.builder()
84 .addChild(DefaultContext.class)
85 .addChild(DefaultTopology.class, topologyKey)
86 .build();
87 return getModelObjectData(node, objId);
88 }
89
90}