2 * Copyright (c) 2018 Xoriant Corporation and others. All rights reserved.
4 * This program and the accompanying materials are made available under the
5 * terms of the Eclipse Public License v1.0 which accompanies this distribution,
6 * and is available at http://www.eclipse.org/legal/epl-v10.html
8 package org.opendaylight.unimgr.mef.legato.util;
10 import java.util.ArrayList;
11 import java.util.List;
13 import org.opendaylight.controller.md.sal.binding.api.DataBroker;
14 import org.opendaylight.controller.md.sal.binding.api.ReadTransaction;
15 import org.opendaylight.controller.md.sal.binding.api.WriteTransaction;
16 import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
17 import org.opendaylight.controller.md.sal.common.api.data.ReadFailedException;
18 import org.opendaylight.unimgr.mef.legato.dao.EVCDao;
19 import org.opendaylight.yang.gen.v1.urn.mef.yang.mef.common.types.rev180321.PositiveInteger;
20 import org.opendaylight.yang.gen.v1.urn.mef.yang.mef.legato.services.rev171215.mef.services.carrier.ethernet.SubscriberServices;
21 import org.opendaylight.yang.gen.v1.urn.mef.yang.mef.legato.services.rev171215.mef.services.carrier.ethernet.SubscriberServicesBuilder;
22 import org.opendaylight.yang.gen.v1.urn.mef.yang.mef.legato.services.rev171215.mef.services.carrier.ethernet.subscriber.services.Evc;
23 import org.opendaylight.yang.gen.v1.urn.mef.yang.mef.legato.services.rev171215.mef.services.carrier.ethernet.subscriber.services.evc.end.points.EndPoint;
24 import org.opendaylight.yang.gen.v1.urn.mef.yang.mef.types.rev171215.VlanIdType;
25 import org.opendaylight.yang.gen.v1.urn.mef.yang.nrm.connectivity.rev180321.carrier.eth.connectivity.end.point.resource.CeVlanIdListAndUntagBuilder;
26 import org.opendaylight.yang.gen.v1.urn.mef.yang.nrm.connectivity.rev180321.vlan.id.list.and.untag.VlanId;
27 import org.opendaylight.yang.gen.v1.urn.mef.yang.nrm.connectivity.rev180321.vlan.id.list.and.untag.VlanIdBuilder;
28 import org.opendaylight.yang.gen.v1.urn.mef.yang.nrp._interface.rev180321.CreateConnectivityServiceInput1;
29 import org.opendaylight.yang.gen.v1.urn.mef.yang.nrp._interface.rev180321.CreateConnectivityServiceInput1Builder;
30 import org.opendaylight.yang.gen.v1.urn.mef.yang.nrp._interface.rev180321.EndPoint2;
31 import org.opendaylight.yang.gen.v1.urn.mef.yang.nrp._interface.rev180321.EndPoint2Builder;
32 import org.opendaylight.yang.gen.v1.urn.mef.yang.nrp._interface.rev180321.EndPoint7;
33 import org.opendaylight.yang.gen.v1.urn.mef.yang.nrp._interface.rev180321.EndPoint7Builder;
34 import org.opendaylight.yang.gen.v1.urn.mef.yang.nrp._interface.rev180321.UpdateConnectivityServiceInput1;
35 import org.opendaylight.yang.gen.v1.urn.mef.yang.nrp._interface.rev180321.UpdateConnectivityServiceInput1Builder;
36 import org.opendaylight.yang.gen.v1.urn.mef.yang.nrp._interface.rev180321.nrp.connectivity.service.attrs.NrpCarrierEthConnectivityResource;
37 import org.opendaylight.yang.gen.v1.urn.mef.yang.nrp._interface.rev180321.nrp.connectivity.service.attrs.NrpCarrierEthConnectivityResourceBuilder;
38 import org.opendaylight.yang.gen.v1.urn.mef.yang.nrp._interface.rev180321.nrp.connectivity.service.end.point.attrs.NrpCarrierEthConnectivityEndPointResource;
39 import org.opendaylight.yang.gen.v1.urn.mef.yang.nrp._interface.rev180321.nrp.connectivity.service.end.point.attrs.NrpCarrierEthConnectivityEndPointResourceBuilder;
40 import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev180307.LayerProtocolName;
41 import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev180307.PortDirection;
42 import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev180307.PortRole;
43 import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev180307.Uuid;
44 import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev180307.CreateConnectivityServiceInput;
45 import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev180307.CreateConnectivityServiceInputBuilder;
46 import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev180307.ServiceType;
47 import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev180307.UpdateConnectivityServiceInput;
48 import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev180307.UpdateConnectivityServiceInputBuilder;
49 import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev180307.connectivity.service.end.point.ServiceInterfacePoint;
50 import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev180307.connectivity.service.end.point.ServiceInterfacePointBuilder;
51 import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev180307.create.connectivity.service.input.ConnConstraintBuilder;
52 import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev180307.create.connectivity.service.input.EndPointBuilder;
53 import org.opendaylight.yangtools.yang.binding.DataObject;
54 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
55 import org.slf4j.Logger;
56 import org.slf4j.LoggerFactory;
58 import com.google.common.base.Optional;
59 import com.google.common.util.concurrent.CheckedFuture;
62 * @author santanu.de@xoriant.com
65 public class LegatoUtils {
67 private static final Logger LOG = LoggerFactory.getLogger(LegatoUtils.class);
69 public static EVCDao parseNodes(Evc evc) {
70 List<String> uniList = new ArrayList<String>();
72 EVCDao evcDao = new EVCDao();
75 uniList = new ArrayList<String>();
76 assert evc.getEndPoints().getEndPoint() != null && evc.getEndPoints().getEndPoint().size() > 0;
77 for (EndPoint endPoint : evc.getEndPoints().getEndPoint()) {
79 assert endPoint.getCeVlans().getCeVlan() != null;
80 for (VlanIdType vlanIdType : endPoint.getCeVlans().getCeVlan()) {
81 vlanId = vlanIdType.getValue().toString();
84 uniList.add(endPoint.getUniId().getValue().toString() + "#" + vlanId);
87 evcDao.setEvcId(evc.getEvcId().getValue());
88 evcDao.setMaxFrameSize((evc.getMaxFrameSize().getValue() != null) ? evc.getMaxFrameSize().getValue() : 0);
89 evcDao.setConnectionType((evc.getConnectionType().getName() != null) ? evc.getConnectionType().getName() : "");
90 evcDao.setSvcType(evc.getSvcType().getName());
91 evcDao.setUniList(uniList);
95 public static EndPoint2 buildCreateEthConnectivityEndPointAugmentation(String vlanId) {
96 return new EndPoint2Builder()
97 .setNrpCarrierEthConnectivityEndPointResource(buildNrpCarrierEthConnectivityEndPointResource(vlanId))
101 public static EndPoint7 buildUpdateEthConnectivityEndPointAugmentation(String vlanId) {
102 return new EndPoint7Builder()
103 .setNrpCarrierEthConnectivityEndPointResource(buildNrpCarrierEthConnectivityEndPointResource(vlanId))
107 public static CreateConnectivityServiceInput1 buildCreateConServiceAugmentation(String maxFrameSize) {
108 return new CreateConnectivityServiceInput1Builder()
109 .setNrpCarrierEthConnectivityResource(buildNrpCarrierEthConnectivityResource(maxFrameSize)).build();
112 public static UpdateConnectivityServiceInput1 buildUpdateConServiceAugmentation(String maxFrameSize) {
113 return new UpdateConnectivityServiceInput1Builder()
114 .setNrpCarrierEthConnectivityResource(buildNrpCarrierEthConnectivityResource(maxFrameSize)).build();
117 public static NrpCarrierEthConnectivityEndPointResource buildNrpCarrierEthConnectivityEndPointResource(
120 NrpCarrierEthConnectivityEndPointResourceBuilder nrpCarrierEthConnectivityEndPointResourceBuilder =
121 new NrpCarrierEthConnectivityEndPointResourceBuilder();
123 CeVlanIdListAndUntagBuilder ceVlanIdListAndUntagBuilder = new CeVlanIdListAndUntagBuilder();
124 List<VlanId> vlanList = new ArrayList<>();
125 if (Integer.parseInt(vlanId) > 0) {
126 VlanIdBuilder vlanIdBuilder = new VlanIdBuilder().setVlanId(new PositiveInteger(Long.parseLong(vlanId)));
127 vlanList.add(vlanIdBuilder.build());
129 ceVlanIdListAndUntagBuilder.setVlanId(vlanList);
130 nrpCarrierEthConnectivityEndPointResourceBuilder.setCeVlanIdListAndUntag(ceVlanIdListAndUntagBuilder.build());
132 return nrpCarrierEthConnectivityEndPointResourceBuilder.build();
135 public static NrpCarrierEthConnectivityResource buildNrpCarrierEthConnectivityResource(String maxFrameSize) {
136 NrpCarrierEthConnectivityResourceBuilder nrpCarrierEthConnectivityResourceBuilder =
137 new NrpCarrierEthConnectivityResourceBuilder();
138 return nrpCarrierEthConnectivityResourceBuilder
139 .setMaxFrameSize(new PositiveInteger(Long.parseLong(maxFrameSize))).build();
142 public static CreateConnectivityServiceInput buildCreateConnectivityServiceInput(EVCDao evcDao) {
144 CreateConnectivityServiceInputBuilder createConnServiceInputBuilder =
145 new CreateConnectivityServiceInputBuilder();
146 List<org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev180307.create.connectivity.service.input.EndPoint> endpointList;
147 List<String> uniList = evcDao.getUniList();
148 boolean isExclusive = false;
150 // if svc-type = epl/eplan then set is_exclusive flag as true
151 if (evcDao.getSvcType().equalsIgnoreCase(LegatoConstants.EPL)
152 || evcDao.getSvcType().equalsIgnoreCase(LegatoConstants.EPLAN)) {
156 switch (evcDao.getConnectionType().replace("-", "").toUpperCase()) {
157 case LegatoConstants.POINTTOPOINT:
158 createConnServiceInputBuilder.setConnConstraint(new ConnConstraintBuilder()
159 .setServiceLevel(LegatoConstants.BEST_EFFORT).setIsExclusive(isExclusive)
160 .setServiceType(ServiceType.POINTTOPOINTCONNECTIVITY).build());
162 case LegatoConstants.MULTIPOINTTOMULTIPOINT:
163 createConnServiceInputBuilder.setConnConstraint(new ConnConstraintBuilder()
164 .setServiceLevel(LegatoConstants.BEST_EFFORT).setIsExclusive(isExclusive)
165 .setServiceType(ServiceType.MULTIPOINTCONNECTIVITY).build());
173 assert uniList != null && uniList.size() > 0;
174 endpointList = buildCreateEndpoints(uniList, LayerProtocolName.ETH);
176 createConnServiceInputBuilder.setEndPoint(endpointList);
178 createConnServiceInputBuilder.addAugmentation(CreateConnectivityServiceInput1.class,
179 LegatoUtils.buildCreateConServiceAugmentation(evcDao.getMaxFrameSize().toString()));
181 return createConnServiceInputBuilder.build();
184 public static UpdateConnectivityServiceInput buildUpdateConnectivityServiceInput(EVCDao evcDao,
185 String uniStr, String uuid) {
186 boolean isExclusive = false;
188 UpdateConnectivityServiceInputBuilder updateConnServiceInputBuilder =
189 new UpdateConnectivityServiceInputBuilder();
191 // if svc-type = epl/eplan then set is_exclusive flag as true
192 if (evcDao.getSvcType().equalsIgnoreCase(LegatoConstants.EPL)
193 || evcDao.getSvcType().equalsIgnoreCase(LegatoConstants.EPLAN)) {
197 switch (evcDao.getConnectionType().replace("-", "").toUpperCase()) {
198 case LegatoConstants.POINTTOPOINT:
199 updateConnServiceInputBuilder
200 .setConnConstraint(new org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev180307.update.connectivity.service.input.ConnConstraintBuilder()
201 .setServiceLevel(LegatoConstants.BEST_EFFORT).setIsExclusive(isExclusive)
202 .setServiceType(ServiceType.POINTTOPOINTCONNECTIVITY).build());
204 case LegatoConstants.MULTIPOINTTOMULTIPOINT:
205 updateConnServiceInputBuilder
206 .setConnConstraint(new org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev180307.update.connectivity.service.input.ConnConstraintBuilder()
207 .setServiceLevel(LegatoConstants.BEST_EFFORT).setIsExclusive(isExclusive)
208 .setServiceType(ServiceType.MULTIPOINTCONNECTIVITY).build());
214 updateConnServiceInputBuilder
215 .setEndPoint(buildUpdateEndpoints(uniStr, LayerProtocolName.ETH));
216 updateConnServiceInputBuilder.addAugmentation(UpdateConnectivityServiceInput1.class,
217 LegatoUtils.buildUpdateConServiceAugmentation(evcDao.getMaxFrameSize().toString()));
218 updateConnServiceInputBuilder.setServiceIdOrName(uuid);
220 return updateConnServiceInputBuilder.build();
223 private static List<org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev180307.create.connectivity.service.input.EndPoint> buildCreateEndpoints(
224 List<String> uniList, LayerProtocolName layerProtocolName) {
225 List<org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev180307.create.connectivity.service.input.EndPoint> endpointList =
226 new ArrayList<org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev180307.create.connectivity.service.input.EndPoint>();
228 EndPointBuilder endPointBuilder;
231 for (String uniStr : uniList) {
232 uniArr = uniStr.split("#");
234 ServiceInterfacePoint sipRef = new ServiceInterfacePointBuilder()
235 .setServiceInterfacePointId(new Uuid(uniArr[0])).build();
237 endPointBuilder = new EndPointBuilder().setRole(PortRole.SYMMETRIC)
238 .setLocalId("e:" + uniArr[0]).setServiceInterfacePoint(sipRef)
239 .setDirection(PortDirection.BIDIRECTIONAL)
240 .setLayerProtocolName(layerProtocolName).addAugmentation(EndPoint2.class,
241 LegatoUtils.buildCreateEthConnectivityEndPointAugmentation(uniArr[1]));
243 endpointList.add(endPointBuilder.build());
246 endPointBuilder = null;
252 private static org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev180307.update.connectivity.service.input.EndPoint buildUpdateEndpoints(
253 String uniStr, LayerProtocolName layerProtocolName) {
254 org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev180307.update.connectivity.service.input.EndPointBuilder endPointBuilder = new org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev180307.update.connectivity.service.input.EndPointBuilder();
257 if (uniStr != null && !uniStr.trim().isEmpty()) {
258 uniArr = uniStr.split("#");
259 ServiceInterfacePoint sipRef = new ServiceInterfacePointBuilder()
260 .setServiceInterfacePointId(new Uuid(uniArr[0])).build();
261 endPointBuilder.setRole(PortRole.SYMMETRIC).setLocalId("e:" + uniArr[0])
262 .setServiceInterfacePoint(sipRef).setDirection(PortDirection.BIDIRECTIONAL)
263 .setLayerProtocolName(layerProtocolName)
264 .addAugmentation(EndPoint7.class,
265 LegatoUtils.buildUpdateEthConnectivityEndPointAugmentation(uniArr[1]));
270 return endPointBuilder.build();
273 public static Optional<Evc> readEvc(DataBroker dataBroker, LogicalDatastoreType store,
274 InstanceIdentifier<?> evcNode) {
275 final ReadTransaction read = dataBroker.newReadOnlyTransaction();
276 final InstanceIdentifier<Evc> evcId = evcNode.firstIdentifierOf(Evc.class);
277 final CheckedFuture<Optional<Evc>, ReadFailedException> linkFuture = read.read(store, evcId);
279 return linkFuture.checkedGet();
280 } catch (final ReadFailedException e) {
281 LOG.error("Unable to read node with EVC Id {}, err: {} ", evcId, e);
283 return Optional.absent();
286 @SuppressWarnings("deprecation")
287 public static Optional<?> readProfile(String string, DataBroker dataBroker, LogicalDatastoreType store,
288 InstanceIdentifier<?> child) {
289 final ReadTransaction read = dataBroker.newReadOnlyTransaction();
293 case LegatoConstants.SLS_PROFILES:
294 final InstanceIdentifier<org.opendaylight.yang.gen.v1.urn.mef.yang.mef.global.rev171215.mef.global.sls.profiles.Profile> profileId =
295 child.firstIdentifierOf(org.opendaylight.yang.gen.v1.urn.mef.yang.mef.global.rev171215.mef.global.sls.profiles.Profile.class);
296 final CheckedFuture<Optional<org.opendaylight.yang.gen.v1.urn.mef.yang.mef.global.rev171215.mef.global.sls.profiles.Profile>, ReadFailedException> profileFuture =
297 read.read(store, profileId);
298 return profileFuture.checkedGet();
300 case LegatoConstants.COS_PROFILES:
301 final InstanceIdentifier<org.opendaylight.yang.gen.v1.urn.mef.yang.mef.global.rev171215.mef.global.cos.profiles.Profile> cosProfileId =
302 child.firstIdentifierOf(org.opendaylight.yang.gen.v1.urn.mef.yang.mef.global.rev171215.mef.global.cos.profiles.Profile.class);
303 final CheckedFuture<Optional<org.opendaylight.yang.gen.v1.urn.mef.yang.mef.global.rev171215.mef.global.cos.profiles.Profile>, ReadFailedException> cosProfileFuture =
304 read.read(store, cosProfileId);
305 return cosProfileFuture.checkedGet();
307 case LegatoConstants.BWP_PROFILES:
308 final InstanceIdentifier<org.opendaylight.yang.gen.v1.urn.mef.yang.mef.global.rev171215.mef.global.bwp.flow.parameter.profiles.Profile> bwpProfileId =
309 child.firstIdentifierOf(org.opendaylight.yang.gen.v1.urn.mef.yang.mef.global.rev171215.mef.global.bwp.flow.parameter.profiles.Profile.class);
310 final CheckedFuture<Optional<org.opendaylight.yang.gen.v1.urn.mef.yang.mef.global.rev171215.mef.global.bwp.flow.parameter.profiles.Profile>, ReadFailedException> bwpProfileFuture =
311 read.read(store, bwpProfileId);
312 return bwpProfileFuture.checkedGet();
314 case LegatoConstants.L2CP_EEC_PROFILES:
315 final InstanceIdentifier<org.opendaylight.yang.gen.v1.urn.mef.yang.mef.global.rev171215.mef.global.l2cp.eec.profiles.Profile> l2cpEec_ProfileId =
316 child.firstIdentifierOf(org.opendaylight.yang.gen.v1.urn.mef.yang.mef.global.rev171215.mef.global.l2cp.eec.profiles.Profile.class);
317 final CheckedFuture<Optional<org.opendaylight.yang.gen.v1.urn.mef.yang.mef.global.rev171215.mef.global.l2cp.eec.profiles.Profile>, ReadFailedException> l2cpEecProfileFuture =
318 read.read(store, l2cpEec_ProfileId);
319 return l2cpEecProfileFuture.checkedGet();
321 case LegatoConstants.L2CP_PEERING_PROFILES:
322 final InstanceIdentifier<org.opendaylight.yang.gen.v1.urn.mef.yang.mef.global.rev171215.mef.global.l2cp.peering.profiles.Profile> l2cpPeering_ProfileId =
323 child.firstIdentifierOf(org.opendaylight.yang.gen.v1.urn.mef.yang.mef.global.rev171215.mef.global.l2cp.peering.profiles.Profile.class);
324 final CheckedFuture<Optional<org.opendaylight.yang.gen.v1.urn.mef.yang.mef.global.rev171215.mef.global.l2cp.peering.profiles.Profile>, ReadFailedException> l2cpPeeringProfileFuture =
325 read.read(store, l2cpPeering_ProfileId);
326 return l2cpPeeringProfileFuture.checkedGet();
328 case LegatoConstants.EEC_PROFILES:
329 final InstanceIdentifier<org.opendaylight.yang.gen.v1.urn.mef.yang.mef.global.rev171215.mef.global.eec.profiles.Profile> eecProfileId =
330 child.firstIdentifierOf(org.opendaylight.yang.gen.v1.urn.mef.yang.mef.global.rev171215.mef.global.eec.profiles.Profile.class);
331 final CheckedFuture<Optional<org.opendaylight.yang.gen.v1.urn.mef.yang.mef.global.rev171215.mef.global.eec.profiles.Profile>, ReadFailedException> eecProfileFuture =
332 read.read(store, eecProfileId);
333 return eecProfileFuture.checkedGet();
335 case LegatoConstants.CMP_PROFILES:
336 final InstanceIdentifier<org.opendaylight.yang.gen.v1.urn.mef.yang.mef.global.rev171215.mef.global.color.mapping.profiles.Profile> cmpProfileId =
337 child.firstIdentifierOf(org.opendaylight.yang.gen.v1.urn.mef.yang.mef.global.rev171215.mef.global.color.mapping.profiles.Profile.class);
338 final CheckedFuture<Optional<org.opendaylight.yang.gen.v1.urn.mef.yang.mef.global.rev171215.mef.global.color.mapping.profiles.Profile>, ReadFailedException> cmpProfileFuture =
339 read.read(store, cmpProfileId);
340 return cmpProfileFuture.checkedGet();
343 LOG.info("IN DEFAULT CASE : NO MATCH");
345 } catch (final ReadFailedException e) {
346 LOG.error("Unable to read node ", e);
348 return Optional.absent();
351 @SuppressWarnings("deprecation")
352 public static boolean deleteFromOperationalDB(InstanceIdentifier<?> nodeIdentifier,
353 DataBroker dataBroker) {
355 LOG.info("Received a request to delete node {}", nodeIdentifier);
356 boolean result = false;
358 final WriteTransaction transaction = dataBroker.newWriteOnlyTransaction();
359 transaction.delete(LogicalDatastoreType.OPERATIONAL, nodeIdentifier);
362 transaction.submit().checkedGet();
364 } catch (org.opendaylight.controller.md.sal.common.api.data.TransactionCommitFailedException e) {
365 LOG.error("Unable to remove node ", nodeIdentifier, e);
370 @SuppressWarnings("deprecation")
371 public static <T extends DataObject> void addToOperationalDB(T typeOfProfile,
372 InstanceIdentifier<T> profilesTx, DataBroker dataBroker) {
373 LOG.info("Received a request to add node {}", profilesTx);
375 WriteTransaction transaction = dataBroker.newWriteOnlyTransaction();
376 transaction.merge(LogicalDatastoreType.OPERATIONAL, profilesTx, typeOfProfile);
379 transaction.submit().checkedGet();
380 } catch (org.opendaylight.controller.md.sal.common.api.data.TransactionCommitFailedException e) {
381 LOG.error("Unable to add node in OperationalDB(). Err: ", e);
386 @SuppressWarnings("deprecation")
387 public static boolean updateEvcInOperationalDB(Evc evc,
388 InstanceIdentifier<SubscriberServices> nodeIdentifier, DataBroker dataBroker) {
389 LOG.info("Received a request to add node {}", nodeIdentifier);
391 boolean result = false;
393 List<Evc> evcList = new ArrayList<Evc>();
396 final WriteTransaction transaction = dataBroker.newWriteOnlyTransaction();
397 transaction.put(LogicalDatastoreType.OPERATIONAL, nodeIdentifier,
398 new SubscriberServicesBuilder().setEvc(evcList).build());
401 transaction.submit().checkedGet();
403 } catch (org.opendaylight.controller.md.sal.common.api.data.TransactionCommitFailedException e) {
404 LOG.error("Unable to add node in OperationalDB() ", nodeIdentifier, e);