Assign image keyname and pubkey at vnf level
[ccsdk/apps.git] / sdnr / wireless-transport / code-Carbon-SR1 / apps / route / impl / src / main / java / com / highstreet / technologies / odl / app / impl / delegates / PathDelegate.java
1 /*
2  * Copyright © 2015 ZTE and others.  All rights reserved.
3  *
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
7  */
8 package com.highstreet.technologies.odl.app.impl.delegates;
9
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;
23
24 import java.util.ArrayList;
25 import java.util.List;
26 import java.util.UUID;
27
28 import static org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType.CONFIGURATION;
29
30 /**
31  * Created by odl on 17-5-30.
32  */
33 public class PathDelegate
34 {
35     private static final Logger LOG = LoggerFactory.getLogger(PathDelegate.class);
36
37     public PathDelegate(DataBroker dataBroker, Integer vlanId)
38     {
39         this.dataBroker = dataBroker;
40         this.vlanId = vlanId;
41         initPathBuilder();
42     }
43
44     private void initPathBuilder()
45     {
46         this.pathBuilder = new LtpPathListBuilder();
47         pathBuilder.setForwardingDirection(ForwardingDirection.Bidirectional);
48         pathBuilder.setLayerProtocolName(LayerProtocolNameEnumeration.ETH);
49         String pathId;
50         pathBuilder.setKey(new LtpPathListKey(pathId = UUID.randomUUID().toString()));
51         pathBuilder.setPathId(pathId);
52     }
53
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;
58
59     public void add(List<LogicalTerminationPointList> ltpList)
60     {
61         if (pathBuilder.getLogicalTerminationPointList() == null)
62             pathBuilder.setLogicalTerminationPointList(new ArrayList<>());
63         pathBuilder.getLogicalTerminationPointList().addAll(ltpList);
64     }
65
66     public void commit() throws TransactionCommitFailedException
67     {
68         try
69         {
70             pathBuilder.setPathName(valueAt(pathBuilder.getLogicalTerminationPointList(), 0) + "_" + valueAt(
71                     pathBuilder.getLogicalTerminationPointList(), -1) + "_" + vlanId);
72             ReadWriteTransaction transaction = dataBroker.newReadWriteTransaction();
73             transaction.put(
74                     CONFIGURATION, LTP_PATH_ID.child(LtpPathList.class, pathBuilder.getKey()),
75                     pathBuilder.build());
76
77             transaction.submit().checkedGet();
78         } catch (Exception e)
79         {
80             LOG.warn("caught exception when commit to ltpPath", e);
81         }
82     }
83
84     private String valueAt(List<LogicalTerminationPointList> listT, int index)
85     {
86         if (index == -1 || index >= listT.size())
87             index = listT.size() - 1;
88
89         return listT.get(index).getLtpReference().getValue();
90     }
91
92     public void clear() throws TransactionCommitFailedException
93     {
94         ReadWriteTransaction transaction = dataBroker.newReadWriteTransaction();
95         transaction.delete(
96                 CONFIGURATION, LTP_PATH_ID.child(LtpPathList.class, pathBuilder.getKey()));
97
98         transaction.submit().checkedGet();
99     }
100 }