08db0347520baed800797e44ea672e1f02143c3c
[ccsdk/features.git] /
1 /*
2  * ============LICENSE_START=======================================================
3  * ONAP : ccsdk features
4  * ================================================================================
5  * Copyright (C) 2019 highstreet technologies GmbH Intellectual Property.
6  * All rights reserved.
7  * ================================================================================
8  * Licensed under the Apache License, Version 2.0 (the "License");
9  * you may not use this file except in compliance with the License.
10  * You may obtain a copy of the License at
11  *
12  *     http://www.apache.org/licenses/LICENSE-2.0
13  *
14  * Unless required by applicable law or agreed to in writing, software
15  * distributed under the License is distributed on an "AS IS" BASIS,
16  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17  * See the License for the specific language governing permissions and
18  * limitations under the License.
19  * ============LICENSE_END=========================================================
20  *
21  */
22 package org.onap.ccsdk.features.sdnr.wt.dataprovider.data;
23
24 import java.io.IOException;
25 import java.util.concurrent.TimeUnit;
26
27 import org.onap.ccsdk.features.sdnr.wt.common.database.HtDatabaseClient;
28 import org.onap.ccsdk.features.sdnr.wt.common.database.config.HostInfo;
29 import org.onap.ccsdk.features.sdnr.wt.dataprovider.data.DataObjectAcessorPm.Intervall;
30 import org.onap.ccsdk.features.sdnr.wt.dataprovider.model.DataProvider;
31 import org.onap.ccsdk.features.sdnr.wt.dataprovider.model.HtDatabaseMaintenance;
32 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.CreateMaintenanceInput;
33 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.CreateMaintenanceInputBuilder;
34 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.CreateMaintenanceOutputBuilder;
35 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.CreateMediatorServerInput;
36 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.CreateMediatorServerOutputBuilder;
37 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.CreateNetworkElementConnectionOutputBuilder;
38 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.DeleteMaintenanceInput;
39 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.DeleteMaintenanceOutputBuilder;
40 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.DeleteMediatorServerInput;
41 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.DeleteMediatorServerOutputBuilder;
42 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.DeleteNetworkElementConnectionInput;
43 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.DeleteNetworkElementConnectionOutputBuilder;
44 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.Entity;
45 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.EntityInput;
46 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.MaintenanceEntity;
47 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.MediatorServerEntity;
48 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.NetworkElementConnectionEntity;
49 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.ReadConnectionlogListOutputBuilder;
50 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.ReadEventlogListInput;
51 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.ReadEventlogListOutputBuilder;
52 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.ReadFaultcurrentListOutputBuilder;
53 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.ReadFaultlogListOutputBuilder;
54 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.ReadInventoryListOutputBuilder;
55 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.ReadMaintenanceListOutputBuilder;
56 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.ReadMediatorServerListOutputBuilder;
57 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.ReadNetworkElementConnectionListOutputBuilder;
58 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.ReadPmdata15mDeviceListOutputBuilder;
59 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.ReadPmdata15mListOutputBuilder;
60 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.ReadPmdata15mLtpListOutputBuilder;
61 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.ReadPmdata24hDeviceListOutputBuilder;
62 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.ReadPmdata24hListOutputBuilder;
63 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.ReadPmdata24hLtpListOutputBuilder;
64 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.ReadStatusOutputBuilder;
65 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.UpdateMaintenanceInput;
66 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.UpdateMaintenanceOutputBuilder;
67 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.UpdateMediatorServerInput;
68 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.UpdateMediatorServerOutputBuilder;
69 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.UpdateNetworkElementConnectionInput;
70 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.UpdateNetworkElementConnectionOutputBuilder;
71 import org.slf4j.Logger;
72 import org.slf4j.LoggerFactory;
73
74 public class ElasticSearchDataProvider /*extends BaseStatusProvider /* implements IEntityDataProvider*/ {
75
76     private static final Logger LOG = LoggerFactory.getLogger(ElasticSearchDataProvider.class);
77
78     private static final String EXCEPTION_UNABLE_TO_WRITE_IN_DATABASE = "unable to write data to database";
79     private static final String EXCEPTION_UNABLE_TO_UPDATE_IN_DATABASE = "unable to update data in database";
80     private static final String EXCEPTION_UNABLE_TO_REMOVE_FROM_DATABASE = "unable to remove data from database";
81
82     private static final boolean DEFAULT_TRUSTALLCERTS = false;
83
84     private final HtDatabaseClient dbClient;
85     private final DataObjectAcessor<org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.read.faultcurrent.list.output.Data> eventRWFaultCurrent;
86     private final DataObjectAcessor<org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.read.faultlog.list.output.Data> eventRWFaultLog;
87     private final DataObjectAcessor<org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.read.mediator.server.list.output.Data> mediatorserverRW;
88     private final DataObjectAcessor<org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.read.maintenance.list.output.Data> maintenanceRW;
89     private final DataObjectAcessor<org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.read.inventory.list.output.Data> equipmentRW;
90     private final DataObjectAcessor<org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.read.connectionlog.list.output.Data> connnectionlogRW;
91     private final DataObjectAcessor<org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.read.eventlog.list.output.Data> eventlogRW;
92     private final DataObjectAcessor<org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.read.network.element.connection.list.output.Data> networkelementConnectionRW;
93     private final DataObjectAcessorPm<org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.read.pmdata._15m.list.output.Data> pm15mRW;
94     private final DataObjectAcessorPm<org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.read.pmdata._24h.list.output.Data> pm24hRW;
95
96     private final DataObjectAcessorStatus readStatus;
97     private final HtDatabaseEventsService databaseService;
98     private final HtDatabaseMaintenanceService databaseMaintenanceService;
99
100     public HtDatabaseClient getRawClient() {
101         return this.dbClient;
102     }
103
104     public ElasticSearchDataProvider(HostInfo[] hosts) throws Exception {
105         this(hosts, null, null, DEFAULT_TRUSTALLCERTS);
106     }
107
108     public ElasticSearchDataProvider(HostInfo[] hosts, String authUsername, String authPassword, boolean trustAllCerts)
109             throws Exception {
110         super();
111         LOG.info("Start {}", this.getClass().getName());
112
113         this.dbClient = new HtDatabaseClient(hosts, authUsername, authPassword, trustAllCerts);
114         this.mediatorserverRW = new DataObjectAcessor<>(dbClient, Entity.MediatorServer,
115                 org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.read.mediator.server.list.output.Data.class);
116         this.mediatorserverRW.setWriteInterface(MediatorServerEntity.class);
117
118         this.maintenanceRW = new DataObjectAcessor<>(dbClient, Entity.Maintenancemode,
119                 org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.read.maintenance.list.output.Data.class);
120         this.maintenanceRW.setWriteInterface(MaintenanceEntity.class);
121
122         this.equipmentRW = new DataObjectAcessor<>(dbClient, Entity.Inventoryequipment,
123                 org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.read.inventory.list.output.Data.class);
124
125         this.eventRWFaultCurrent = new DataObjectAcessor<>(dbClient, Entity.Faultcurrent,
126                 org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.read.faultcurrent.list.output.Data.class);
127
128         this.eventRWFaultLog = new DataObjectAcessor<>(dbClient, Entity.Faultlog,
129                 org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.read.faultlog.list.output.Data.class);
130
131         this.connnectionlogRW = new DataObjectAcessor<>(dbClient, Entity.Connectionlog,
132                 org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.read.connectionlog.list.output.Data.class);
133
134         this.eventlogRW = new DataObjectAcessor<>(dbClient, Entity.Eventlog,
135                 org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.read.eventlog.list.output.Data.class);
136
137         this.networkelementConnectionRW = new DataObjectAcessor<>(dbClient, Entity.NetworkelementConnection,
138                 org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.read.network.element.connection.list.output.Data.class);
139         this.networkelementConnectionRW.setWriteInterface(NetworkElementConnectionEntity.class);
140
141         this.pm15mRW = new DataObjectAcessorPm<>(dbClient, Intervall.PMDATA15M, Entity.Historicalperformance15min,
142                 org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.read.pmdata._15m.list.output.Data.class);
143
144         this.pm24hRW = new DataObjectAcessorPm<>(dbClient, Intervall.PMDATA24H, Entity.Historicalperformance24h,
145                 org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.read.pmdata._24h.list.output.Data.class);
146
147         this.readStatus = new DataObjectAcessorStatus(dbClient, Entity.Faultcurrent);
148
149         this.databaseService = new HtDatabaseEventsService(dbClient, this);
150         this.databaseMaintenanceService = new HtDatabaseMaintenanceService(dbClient);
151     }
152
153     /*-------------------------
154      * Provide access to model API
155      */
156
157     //org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.read.faultcurrent.list.output.Data
158     //org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.read.faultcurrent.list.output.PaginationBuilder
159     //eventRWFaultCurrent
160     public ReadFaultcurrentListOutputBuilder readFaultCurrentList(EntityInput input) {
161
162         ReadFaultcurrentListOutputBuilder outputBuilder = new ReadFaultcurrentListOutputBuilder();
163
164         QueryResult<org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.read.faultcurrent.list.output.Data> result =
165                 this.eventRWFaultCurrent.getData(input);
166         outputBuilder.setData(result.getResult().getHits());
167         outputBuilder.setPagination(
168                 new org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.read.faultcurrent.list.output.PaginationBuilder(
169                         result.getPagination()).build());
170         return outputBuilder;
171     }
172
173     //org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.read.faultlog.list.output.Data
174     //org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.read.faultlog.list.output.PaginationBuilder
175     //eventRWFaultLog
176     public ReadFaultlogListOutputBuilder readFaultLogList(EntityInput input) {
177         ReadFaultlogListOutputBuilder outputBuilder = new ReadFaultlogListOutputBuilder();
178         QueryResult<org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.read.faultlog.list.output.Data> result =
179                 this.eventRWFaultLog.getData(input);
180         outputBuilder.setData(result.getResult().getHits());
181         outputBuilder.setPagination(
182                 new org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.read.faultlog.list.output.PaginationBuilder(
183                         result.getPagination()).build());
184         return outputBuilder;
185     }
186
187     //org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.read.maintenance.list.output.Data
188     //org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.read.maintenance.list.output.PaginationBuilder
189     //maintenanceRW
190     public ReadMaintenanceListOutputBuilder readMaintenanceList(EntityInput input) {
191         ReadMaintenanceListOutputBuilder outputBuilder = new ReadMaintenanceListOutputBuilder();
192         QueryResult<org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.read.maintenance.list.output.Data> result =
193                 this.maintenanceRW.getData(input);
194         outputBuilder.setData(result.getResult().getHits());
195         outputBuilder.setPagination(
196                 new org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.read.maintenance.list.output.PaginationBuilder(
197                         result.getPagination()).build());
198         return outputBuilder;
199     }
200
201     //org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.read.mediator.server.list.output.Data
202     //org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.read.mediator.server.list.output.Pagination
203     //mediatorserverRW
204     public ReadMediatorServerListOutputBuilder readMediatorServerList(EntityInput input) {
205
206         ReadMediatorServerListOutputBuilder outputBuilder = new ReadMediatorServerListOutputBuilder();
207         QueryResult<org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.read.mediator.server.list.output.Data> result =
208                 this.mediatorserverRW.getData(input);
209         outputBuilder.setData(result.getResult().getHits());
210         outputBuilder.setPagination(
211                 new org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.read.mediator.server.list.output.PaginationBuilder(
212                         result.getPagination()).build());
213         return outputBuilder;
214     }
215
216     //org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.read.network.element.connection.list.output.Data
217     //org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.read.network.element.connection.list.output.PaginationBuilder
218     //networkelementConnectionRW
219     public ReadNetworkElementConnectionListOutputBuilder readNetworkElementConnectionList(EntityInput input) {
220         ReadNetworkElementConnectionListOutputBuilder outputBuilder =
221                 new ReadNetworkElementConnectionListOutputBuilder();
222         QueryResult<org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.read.network.element.connection.list.output.Data> result =
223                 this.networkelementConnectionRW.getData(input);
224         outputBuilder.setData(result.getResult().getHits());
225         outputBuilder.setPagination(
226                 new org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.read.network.element.connection.list.output.PaginationBuilder(
227                         result.getPagination()).build());
228         return outputBuilder;
229     }
230
231     //org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.read.inventory.list.output.Data
232     //org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.read.inventory.list.output.PaginationBuilder
233     //equipmentRW
234     public ReadInventoryListOutputBuilder readInventoryList(EntityInput input) {
235         ReadInventoryListOutputBuilder outputBuilder = new ReadInventoryListOutputBuilder();
236         QueryResult<org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.read.inventory.list.output.Data> result =
237                 this.equipmentRW.getData(input);
238         outputBuilder.setData(result.getResult().getHits());
239         outputBuilder.setPagination(
240                 new org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.read.inventory.list.output.PaginationBuilder(
241                         result.getPagination()).build());
242         return outputBuilder;
243     }
244
245     //org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.read.inventory.list.output.Data
246     //org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.read.inventory.list.output.PaginationBuilder
247     //connnectionlogRW
248     public ReadConnectionlogListOutputBuilder readConnectionlogList(EntityInput input) {
249         ReadConnectionlogListOutputBuilder outputBuilder = new ReadConnectionlogListOutputBuilder();
250         QueryResult<org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.read.connectionlog.list.output.Data> result =
251                 this.connnectionlogRW.getData(input);
252         outputBuilder.setData(result.getResult().getHits());
253         outputBuilder.setPagination(
254                 new org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.read.connectionlog.list.output.PaginationBuilder(
255                         result.getPagination()).build());
256         return outputBuilder;
257     }
258
259     //org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.read.eventlog.list.output.Data
260     //org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.read.eventlog.list.output.PaginationBuilder
261     //eventlogRW
262     public ReadEventlogListOutputBuilder readEventlogList(ReadEventlogListInput input) throws IOException {
263         ReadEventlogListOutputBuilder outputBuilder = new ReadEventlogListOutputBuilder();
264         QueryResult<org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.read.eventlog.list.output.Data> result =
265                 this.eventlogRW.getData(input);
266         outputBuilder.setData(result.getResult().getHits());
267         outputBuilder.setPagination(
268                 new org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.read.eventlog.list.output.PaginationBuilder(
269                         result.getPagination()).build());
270         return outputBuilder;
271     }
272
273     //org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.read.pmdata._15m.list.output.Data
274     //org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.read.pmdata._15m.list.output.PaginationBuilder
275     public ReadPmdata15mListOutputBuilder readPmdata15mList(EntityInput input) {
276         ReadPmdata15mListOutputBuilder outputBuilder = new ReadPmdata15mListOutputBuilder();
277         QueryResult<org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.read.pmdata._15m.list.output.Data> result =
278                 this.pm15mRW.getData(input);
279         outputBuilder.setData(result.getResult().getHits());
280         outputBuilder.setPagination(
281                 new org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.read.pmdata._15m.list.output.PaginationBuilder(
282                         result.getPagination()).build());
283         return outputBuilder;
284     }
285
286     //org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.read.pmdata._24h.list.output.Data
287     //org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.read.pmdata._24h.list.output.Pagination
288     public ReadPmdata24hListOutputBuilder readPmdata24hList(EntityInput input) {
289         ReadPmdata24hListOutputBuilder outputBuilder = new ReadPmdata24hListOutputBuilder();
290         QueryResult<org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.read.pmdata._24h.list.output.Data> result =
291                 this.pm24hRW.getData(input);
292         outputBuilder.setData(result.getResult().getHits());
293         outputBuilder.setPagination(
294                 new org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.read.pmdata._24h.list.output.PaginationBuilder(
295                         result.getPagination()).build());
296         return outputBuilder;
297     }
298
299     public ReadPmdata15mLtpListOutputBuilder readPmdata15mLtpList(EntityInput input) throws IOException {
300         ReadPmdata15mLtpListOutputBuilder outputBuilder = new ReadPmdata15mLtpListOutputBuilder();
301         QueryResult<String> result = pm15mRW.getDataLtpList(input);
302         outputBuilder.setPagination(
303                 new org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.read.pmdata._15m.ltp.list.output.PaginationBuilder(
304                         result.getPagination()).build());
305         outputBuilder.setData(result.getResult().getHits());
306         return outputBuilder;
307     }
308
309     public ReadPmdata15mDeviceListOutputBuilder readPmdata15mDeviceList(EntityInput input) throws IOException {
310         ReadPmdata15mDeviceListOutputBuilder outputBuilder = new ReadPmdata15mDeviceListOutputBuilder();
311         QueryResult<String> result = pm15mRW.getDataDeviceList(input);
312         outputBuilder.setPagination(
313                 new org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.read.pmdata._15m.device.list.output.PaginationBuilder(
314                         result.getPagination()).build());
315         outputBuilder.setData(result.getResult().getHits());
316         return outputBuilder;
317     }
318
319     public ReadPmdata24hLtpListOutputBuilder readPmdata24hLtpList(EntityInput input) throws IOException {
320
321         QueryResult<String> result = pm24hRW.getDataLtpList(input);
322
323         ReadPmdata24hLtpListOutputBuilder outputBuilder = new ReadPmdata24hLtpListOutputBuilder();
324         new org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.read.pmdata._24h.ltp.list.output.PaginationBuilder();
325         outputBuilder.setPagination(
326                 new org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.read.pmdata._24h.ltp.list.output.PaginationBuilder(
327                         result.getPagination()).build());
328         outputBuilder.setData(result.getResult().getHits());
329         return outputBuilder;
330     }
331
332     public ReadPmdata24hDeviceListOutputBuilder readPmdata24hDeviceList(EntityInput input) throws IOException {
333
334         QueryResult<String> result = pm24hRW.getDataDeviceList(input);
335
336         ReadPmdata24hDeviceListOutputBuilder outputBuilder = new ReadPmdata24hDeviceListOutputBuilder();
337         outputBuilder.setPagination(
338                 new org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.read.pmdata._24h.device.list.output.PaginationBuilder(
339                         result.getPagination()).build());
340         outputBuilder.setData(result.getResult().getHits());
341         return outputBuilder;
342     }
343
344     public ReadStatusOutputBuilder readStatus() throws IOException {
345         QueryResult<org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.read.status.output.Data> result =
346                 readStatus.getDataStatus();
347
348         ReadStatusOutputBuilder outputBuilder = new ReadStatusOutputBuilder();
349         outputBuilder.setData(result.getResult().getHits());
350         return outputBuilder;
351     }
352
353     public boolean waitForYellowDatabaseStatus(long timeout, TimeUnit unit) {
354         return this.dbClient.waitForYellowStatus(unit.toMillis(timeout));
355     }
356
357     public CreateNetworkElementConnectionOutputBuilder createNetworkElementConnection(
358             NetworkElementConnectionEntity input) throws IOException {
359         String id = this.networkelementConnectionRW.update(input, input.getNodeId());
360         if (id == null) {
361             throw new IOException(EXCEPTION_UNABLE_TO_WRITE_IN_DATABASE);
362         }
363         CreateNetworkElementConnectionOutputBuilder builder = new CreateNetworkElementConnectionOutputBuilder();
364         builder.setId(id).setNodeId(input.getNodeId()).setHost(input.getHost()).setPort(input.getPort())
365                 .setUsername(input.getUsername()).setPassword(input.getPassword()).setIsRequired(input.isIsRequired())
366                 .setCoreModelCapability(input.getCoreModelCapability()).setDeviceType(input.getDeviceType());
367         return builder;
368     }
369
370     public UpdateNetworkElementConnectionOutputBuilder updateNetworkElementConnection(
371             UpdateNetworkElementConnectionInput input) throws IOException {
372         String id = this.networkelementConnectionRW.update(input, input.getId());
373         if (id == null) {
374             throw new IOException(EXCEPTION_UNABLE_TO_UPDATE_IN_DATABASE);
375         }
376         UpdateNetworkElementConnectionOutputBuilder builder = new UpdateNetworkElementConnectionOutputBuilder();
377         builder.setId(id).setNodeId(input.getNodeId()).setHost(input.getHost()).setPort(input.getPort())
378                 .setUsername(input.getUsername()).setPassword(input.getPassword())
379                 .setCoreModelCapability(input.getCoreModelCapability()).setDeviceType(input.getDeviceType());
380         return builder;
381     }
382
383     public DeleteNetworkElementConnectionOutputBuilder deleteNetworkElementConnection(
384             DeleteNetworkElementConnectionInput input) throws IOException {
385         boolean removed = this.networkelementConnectionRW.remove(input.getId());
386         if (!removed) {
387             throw new IOException(EXCEPTION_UNABLE_TO_REMOVE_FROM_DATABASE);
388         }
389         return new DeleteNetworkElementConnectionOutputBuilder();
390     }
391
392     public DeleteMediatorServerOutputBuilder deleteMediatorServer(DeleteMediatorServerInput input) throws IOException {
393         boolean removed = this.mediatorserverRW.remove(input.getId());
394         if (!removed) {
395             throw new IOException(EXCEPTION_UNABLE_TO_REMOVE_FROM_DATABASE);
396         }
397         return new DeleteMediatorServerOutputBuilder();
398     }
399
400     public DeleteMaintenanceOutputBuilder deleteMaintenance(DeleteMaintenanceInput input) throws IOException {
401         boolean removed = this.maintenanceRW.remove(input.getId());
402         if (!removed) {
403             throw new IOException(EXCEPTION_UNABLE_TO_REMOVE_FROM_DATABASE);
404         }
405         return new DeleteMaintenanceOutputBuilder();
406     }
407
408     public UpdateMaintenanceOutputBuilder updateMaintenance(UpdateMaintenanceInput input) throws IOException {
409         if (input.getId() == null) {
410             throw new IOException("please give the id for updating entry");
411         }
412         String id = this.maintenanceRW.update(input, input.getId());
413         if (id == null) {
414             throw new IOException(EXCEPTION_UNABLE_TO_UPDATE_IN_DATABASE);
415         }
416         UpdateMaintenanceOutputBuilder builder = new UpdateMaintenanceOutputBuilder(input).setId(id);
417         return builder;
418     }
419
420     public UpdateMediatorServerOutputBuilder updateMediatorServer(UpdateMediatorServerInput input) throws IOException {
421         if (input.getId() == null) {
422             throw new IOException("please give the id for updating entry");
423         }
424         String id = this.mediatorserverRW.update(input, input.getId());
425         if (id == null) {
426             throw new IOException(EXCEPTION_UNABLE_TO_UPDATE_IN_DATABASE);
427         }
428         UpdateMediatorServerOutputBuilder builder = new UpdateMediatorServerOutputBuilder();
429         builder.setId(id).setName(input.getName()).setUrl(input.getUrl());
430         return builder;
431     }
432
433     public CreateMaintenanceOutputBuilder createMaintenance(CreateMaintenanceInput input) throws IOException {
434         String id = this.maintenanceRW.write(input, input.getNodeId());
435         if (id == null) {
436             throw new IOException(EXCEPTION_UNABLE_TO_WRITE_IN_DATABASE);
437         }
438         CreateMaintenanceOutputBuilder builder = new CreateMaintenanceOutputBuilder(input).setId(id);
439         return builder;
440     }
441
442     public CreateMediatorServerOutputBuilder createMediatorServer(CreateMediatorServerInput input) throws IOException {
443         String id = this.mediatorserverRW.write(input, null);
444
445         if (id == null) {
446             throw new IOException(EXCEPTION_UNABLE_TO_WRITE_IN_DATABASE);
447         }
448         CreateMediatorServerOutputBuilder builder = new CreateMediatorServerOutputBuilder();
449         builder.setId(id).setName(input.getName()).setUrl(input.getUrl());
450         return builder;
451     }
452
453     public DataProvider getDataProvider() {
454         return this.databaseService;
455     }
456
457     public HtDatabaseMaintenance getHtDatabaseMaintenance() {
458         return this.databaseMaintenanceService;
459     }
460
461 }