blob: 2b8f1f100c9fb23182b460edf9e871937caad9e3 [file] [log] [blame]
hirokif4ed5212018-05-26 22:39:38 -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 org.onosproject.net.ConnectPoint;
22
23import static org.onosproject.odtn.behaviour.OdtnDeviceDescriptionDiscovery.CONNECTION_ID;
24import static org.onosproject.odtn.utils.tapi.TapiGlobalClassUtil.addNameList;
25import static org.onosproject.odtn.utils.tapi.TapiGlobalClassUtil.getUuid;
26import static org.onosproject.odtn.utils.tapi.TapiGlobalClassUtil.setUuid;
27
28import org.onosproject.net.Port;
hiroki96ab3c22018-12-11 14:10:52 -080029import org.onosproject.yang.gen.v1.tapicommon.rev20181210.tapicommon.DefaultContext;
30import org.onosproject.yang.gen.v1.tapicommon.rev20181210.tapicommon.Uuid;
hirokif4ed5212018-05-26 22:39:38 -070031
hiroki96ab3c22018-12-11 14:10:52 -080032import org.onosproject.yang.gen.v1.tapiconnectivity.rev20181210.tapiconnectivity.ceplist.DefaultConnectionEndPoint;
hirokif4ed5212018-05-26 22:39:38 -070033
hiroki96ab3c22018-12-11 14:10:52 -080034import org.onosproject.yang.gen.v1.tapiconnectivity.rev20181210.tapiconnectivity.context.topologycontext.topology.node.ownednodeedgepoint.DefaultAugmentedTapiTopologyOwnedNodeEdgePoint;
35import org.onosproject.yang.gen.v1.tapiconnectivity.rev20181210.tapiconnectivity.context.topologycontext.topology.node.ownednodeedgepoint.augmentedtapitopologyownednodeedgepoint.DefaultCepList;
36import org.onosproject.yang.gen.v1.tapitopology.rev20181210.tapitopology.context.augmentedtapicommoncontext.DefaultTopologyContext;
37import org.onosproject.yang.gen.v1.tapitopology.rev20181210.tapitopology.node.DefaultOwnedNodeEdgePoint;
38import org.onosproject.yang.gen.v1.tapitopology.rev20181210.tapitopology.nodeedgepoint.DefaultMappedServiceInterfacePoint;
39import org.onosproject.yang.gen.v1.tapitopology.rev20181210.tapitopology.topology.DefaultNode;
40import org.onosproject.yang.gen.v1.tapitopology.rev20181210.tapitopology.topology.NodeKeys;
41import org.onosproject.yang.gen.v1.tapitopology.rev20181210.tapitopology.topologycontext.DefaultTopology;
42import org.onosproject.yang.gen.v1.tapitopology.rev20181210.tapitopology.topologycontext.TopologyKeys;
hirokif4ed5212018-05-26 22:39:38 -070043import org.onosproject.yang.model.ModelObjectId;
44
45/**
46 * Utility class to deal with TAPI NEP with DCS.
47 */
48public final class TapiNepHandler extends TapiObjectHandler<DefaultOwnedNodeEdgePoint> {
49
50 private Uuid topologyUuid;
51 private Uuid nodeUuid;
52
53 private ConnectPoint cp;
54 private Map<String, String> kvs = new HashMap<>();
55
56 private TapiNepHandler() {
57 obj = new DefaultOwnedNodeEdgePoint();
58 setId();
59 }
60
61 public static TapiNepHandler create() {
62 return new TapiNepHandler();
63 }
64
65 @Override
66 protected Uuid getIdDetail() {
67 return getUuid(obj);
68 }
69
70 @Override
71 protected void setIdDetail(Uuid uuid) {
72 setUuid(obj, uuid);
73 }
74
75 @Override
76 public ModelObjectId getParentModelObjectId() {
77 TopologyKeys topologyKey = new TopologyKeys();
78 topologyKey.uuid(topologyUuid);
79
80 NodeKeys nodeKey = new NodeKeys();
81 nodeKey.uuid(nodeUuid);
82
83 return ModelObjectId.builder()
84 .addChild(DefaultContext.class)
hirokid8fd7862018-10-09 15:24:24 +090085 .addChild(DefaultTopologyContext.class)
hirokif4ed5212018-05-26 22:39:38 -070086 .addChild(DefaultTopology.class, topologyKey)
87 .addChild(DefaultNode.class, nodeKey)
88 .build();
89 }
90
91 public TapiNepHandler setTopologyUuid(Uuid topologyUuid) {
92 this.topologyUuid = topologyUuid;
93 return this;
94 }
95
96 public TapiNepHandler setNodeUuid(Uuid nodeUuid) {
97 this.nodeUuid = nodeUuid;
98 return this;
99 }
100
101 public TapiNepHandler setPort(Port port) {
102 ConnectPoint cp = new ConnectPoint(port.element().id(), port.number());
103 kvs.put(ODTN_PORT_TYPE, port.annotations().value(ODTN_PORT_TYPE));
104 kvs.put(CONNECTION_ID, port.annotations().value(CONNECTION_ID));
105 addNameList(obj, kvs);
106 return setConnectPoint(cp);
107 }
108
109 public TapiNepHandler setConnectPoint(ConnectPoint cp) {
110 kvs.put(ONOS_CP, cp.toString());
111 addNameList(obj, kvs);
112 return this;
113 }
114
115 public TapiNepHandler addSip(Uuid sipUuid) {
116 DefaultMappedServiceInterfacePoint mappedSip = new DefaultMappedServiceInterfacePoint();
hirokid8fd7862018-10-09 15:24:24 +0900117 mappedSip.serviceInterfacePointUuid(sipUuid);
hirokif4ed5212018-05-26 22:39:38 -0700118 obj.addToMappedServiceInterfacePoint(mappedSip);
119 return this;
120 }
121
122 public TapiNepHandler addCep(DefaultConnectionEndPoint cep) {
hirokid8fd7862018-10-09 15:24:24 +0900123
124 DefaultCepList cepList = new DefaultCepList();
125 cepList.addToConnectionEndPoint(cep);
126
hirokif4ed5212018-05-26 22:39:38 -0700127 DefaultAugmentedTapiTopologyOwnedNodeEdgePoint augmentNep =
128 new DefaultAugmentedTapiTopologyOwnedNodeEdgePoint();
hirokid8fd7862018-10-09 15:24:24 +0900129 augmentNep.cepList(cepList);
hirokif4ed5212018-05-26 22:39:38 -0700130 obj.addAugmentation(augmentNep);
hirokid8fd7862018-10-09 15:24:24 +0900131
hirokif4ed5212018-05-26 22:39:38 -0700132 return this;
133 }
134
135 public ConnectPoint getConnectPoint() {
136 return cp;
137 }
138
139}