2 * Copyright © 2015 ZTE 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 com.highstreet.technologies.odl.app.impl.delegates;
10 import org.opendaylight.controller.md.sal.binding.api.DataBroker;
11 import org.opendaylight.controller.md.sal.binding.api.ReadWriteTransaction;
12 import org.opendaylight.controller.md.sal.common.api.data.TransactionCommitFailedException;
13 import org.opendaylight.yang.gen.v1.urn.onf.params.xml.ns.yang.core.model.rev170320.ForwardingDirection;
14 import org.opendaylight.yang.gen.v1.urn.onf.params.xml.ns.yang.ltp.path.rev170526.LayerProtocolNameEnumeration;
15 import org.opendaylight.yang.gen.v1.urn.onf.params.xml.ns.yang.ltp.path.rev170526.LtpPath;
16 import org.opendaylight.yang.gen.v1.urn.onf.params.xml.ns.yang.ltp.path.rev170526.ltp.path.LtpPathList;
17 import org.opendaylight.yang.gen.v1.urn.onf.params.xml.ns.yang.ltp.path.rev170526.ltp.path.LtpPathListBuilder;
18 import org.opendaylight.yang.gen.v1.urn.onf.params.xml.ns.yang.ltp.path.rev170526.ltp.path.LtpPathListKey;
19 import org.opendaylight.yang.gen.v1.urn.onf.params.xml.ns.yang.ltp.path.rev170526.ltp.path.ltp.path.list.LogicalTerminationPointList;
20 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
21 import org.slf4j.Logger;
22 import org.slf4j.LoggerFactory;
24 import java.util.ArrayList;
25 import java.util.List;
26 import java.util.UUID;
28 import static org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType.CONFIGURATION;
31 * Created by odl on 17-5-30.
33 public class PathDelegate
35 private static final Logger LOG = LoggerFactory.getLogger(PathDelegate.class);
37 public PathDelegate(DataBroker dataBroker, Integer vlanId)
39 this.dataBroker = dataBroker;
44 private void initPathBuilder()
46 this.pathBuilder = new LtpPathListBuilder();
47 pathBuilder.setForwardingDirection(ForwardingDirection.Bidirectional);
48 pathBuilder.setLayerProtocolName(LayerProtocolNameEnumeration.ETH);
50 pathBuilder.setKey(new LtpPathListKey(pathId = UUID.randomUUID().toString()));
51 pathBuilder.setPathId(pathId);
54 private static InstanceIdentifier<LtpPath> LTP_PATH_ID = InstanceIdentifier.create(LtpPath.class);
55 private final Integer vlanId;
56 private DataBroker dataBroker;
57 private LtpPathListBuilder pathBuilder;
59 public void add(List<LogicalTerminationPointList> ltpList)
61 if (pathBuilder.getLogicalTerminationPointList() == null)
62 pathBuilder.setLogicalTerminationPointList(new ArrayList<>());
63 pathBuilder.getLogicalTerminationPointList().addAll(ltpList);
66 public void commit() throws TransactionCommitFailedException
70 pathBuilder.setPathName(valueAt(pathBuilder.getLogicalTerminationPointList(), 0) + "_" + valueAt(
71 pathBuilder.getLogicalTerminationPointList(), -1) + "_" + vlanId);
72 ReadWriteTransaction transaction = dataBroker.newReadWriteTransaction();
74 CONFIGURATION, LTP_PATH_ID.child(LtpPathList.class, pathBuilder.getKey()),
77 transaction.submit().checkedGet();
80 LOG.warn("caught exception when commit to ltpPath", e);
84 private String valueAt(List<LogicalTerminationPointList> listT, int index)
86 if (index == -1 || index >= listT.size())
87 index = listT.size() - 1;
89 return listT.get(index).getLtpReference().getValue();
92 public void clear() throws TransactionCommitFailedException
94 ReadWriteTransaction transaction = dataBroker.newReadWriteTransaction();
96 CONFIGURATION, LTP_PATH_ID.child(LtpPathList.class, pathBuilder.getKey()));
98 transaction.submit().checkedGet();