22098675b67c279d09ebd3b2cb5568b2566ee09a
[ccsdk/features.git] / sdnr / wt / devicemanager / provider / src / main / java / org / onap / ccsdk / features / sdnr / wt / devicemanager / performancemanager / impl / PerformanceManagerImpl.java
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.devicemanager.performancemanager.impl;
19
20 import org.onap.ccsdk.features.sdnr.wt.common.configuration.ConfigurationFileRepresentation;
21 import org.onap.ccsdk.features.sdnr.wt.dataprovider.model.DataProvider;
22 import org.onap.ccsdk.features.sdnr.wt.devicemanager.ne.service.NetworkElement;
23 import org.onap.ccsdk.features.sdnr.wt.devicemanager.performancemanager.impl.config.PmConfig;
24 import org.onap.ccsdk.features.sdnr.wt.devicemanager.service.NetconfNetworkElementService;
25 import org.onap.ccsdk.features.sdnr.wt.devicemanager.service.PerformanceManager;
26 import org.slf4j.Logger;
27 import org.slf4j.LoggerFactory;
28
29 public class PerformanceManagerImpl implements PerformanceManager, AutoCloseable {
30
31     private static final Logger LOG = LoggerFactory.getLogger(PerformanceManagerImpl.class);
32
33     private PerformanceManagerTask task;
34
35     public PerformanceManagerImpl(long seconds, NetconfNetworkElementService netconfNetworkElementService,
36             DataProvider microwaveHistoricalPerformanceWriterService, ConfigurationFileRepresentation config) {
37
38         LOG.info("Construct {}", PerformanceManagerImpl.class.getSimpleName());
39
40         this.task = null;
41         PmConfig configurationPM = new PmConfig(config);
42         LOG.info("Performance manager configuration: {}", configurationPM);
43
44         if (!configurationPM.isPerformanceManagerEnabled()) {
45             LOG.info("Don't start performance manager");
46
47         } else {
48             LOG.info("{} Seconds", seconds);
49             LOG.info("Start of PM task");
50             task = new PerformanceManagerTask(seconds, microwaveHistoricalPerformanceWriterService,
51                     netconfNetworkElementService);
52             task.start();
53             LOG.info("PM task scheduled");
54         }
55
56         LOG.info("Construct end {}", PerformanceManagerImpl.class.getSimpleName());
57     }
58
59     @Override
60     public void close() {
61         LOG.info("Close {}", PerformanceManagerImpl.class.getSimpleName());
62         if (task != null) {
63             task.stop();
64         }
65     }
66
67     @Override
68     public void registration(String mountPointNodeName, NetworkElement ne) {
69         LOG.debug("Register {}", mountPointNodeName);
70         if (task != null) {
71             task.registration(mountPointNodeName, ne);
72         }
73     }
74
75     @Override
76     public void deRegistration(String mountPointNodeName) {
77         LOG.debug("Deregister {}", mountPointNodeName);
78         if (task != null) {
79             task.deRegistration(mountPointNodeName);
80         }
81     }
82
83 }