cca71457eaef8d24a3c1c2f2e3cd637b40f68f24
[ccsdk/features.git] /
1 /*
2  * ============LICENSE_START========================================================================
3  * ONAP : ccsdk feature sdnr wt
4  * =================================================================================================
5  * Copyright (C) 2019 highstreet technologies GmbH Intellectual Property. All rights reserved.
6  * =================================================================================================
7  * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
8  * in compliance with the License. You may obtain a copy of the License at
9  *
10  * http://www.apache.org/licenses/LICENSE-2.0
11  *
12  * Unless required by applicable law or agreed to in writing, software distributed under the License
13  * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
14  * or implied. See the License for the specific language governing permissions and limitations under
15  * the License.
16  * ============LICENSE_END==========================================================================
17  */
18 package org.onap.ccsdk.features.sdnr.wt.netconfnodestateservice;
19
20 import com.google.common.util.concurrent.ListenableFuture;
21 import java.util.List;
22 import org.eclipse.jdt.annotation.NonNull;
23 import org.opendaylight.mdsal.binding.api.DataBroker;
24 import org.opendaylight.mdsal.binding.api.MountPoint;
25 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.netconf.notification._1._0.rev080714.CreateSubscriptionOutput;
26 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.netmod.notification.rev080714.netconf.streams.Stream;
27 import org.opendaylight.yang.gen.v1.urn.opendaylight.netconf.node.topology.rev150114.NetconfNode;
28 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.NodeId;
29 import org.opendaylight.yangtools.concepts.ListenerRegistration;
30 import org.opendaylight.yangtools.yang.binding.NotificationListener;
31 import org.opendaylight.yangtools.yang.common.RpcResult;
32
33 /**
34  * Interface handling netconf connection.
35  */
36 public interface NetconfAccessor {
37
38     static String DefaultNotificationsStream = "NETCONF";
39
40     /**
41      * @return the nodeId
42      */
43     NodeId getNodeId();
44
45     /**
46      * @return NetconfNode of this connection
47      */
48     NetconfNode getNetconfNode();
49
50     /**
51      * @return Capabilites
52      */
53     Capabilities getCapabilites();
54
55     /**
56      * @return the dataBroker
57      */
58     DataBroker getDataBroker();
59
60     /**
61      * @return the MDSAL Mountpoint service
62      **/
63     MountPoint getMountpoint();
64
65     /**
66      * @Return TransAction
67      */
68     TransactionUtils getTransactionUtils();
69
70
71     /**
72      * Register netconf notification listener for related mountpoint
73      *
74      * @param <T> specific child class of NotificationListener
75      * @param listener listener to be called
76      * @return handler to manager registration
77      */
78     <T extends NotificationListener> ListenerRegistration<NotificationListener> doRegisterNotificationListener(
79             @NonNull T listener);
80
81     /**
82      * Register notifications stream for the connection.
83      *
84      * @param streamName that should be "NETCONF" as default.
85      * @return progress indication
86      */
87     ListenableFuture<RpcResult<CreateSubscriptionOutput>> registerNotificationsStream(String streamName);
88
89     /**
90      * Register notifications stream for the connection
91      *
92      * @param streamList that contains a list of streams to be subscribed for notifications
93      * @return progress indication
94      */
95     void registerNotificationsStream(List<Stream> streamList);
96
97     /**
98      * check if the device supports notifications.yang
99      * @return true if notifications.yang is supported
100      */
101 //    boolean isNotificationsSupported();
102
103     /**
104      * check if the device supports notifications.yang
105      * @return true if nc-notifications.yang is supported
106      */
107     boolean isNCNotificationsSupported();
108     /**
109      * Get all notification streams
110      * @return stream list
111      */
112     List<Stream> getNotificationStreams();
113 }