Removed MsoLogger class
[so.git] / adapters / mso-requests-db-adapter / src / main / java / org / onap / so / adapters / requestsdb / ArchiveInfraRequestsScheduler.java
1 /*-
2  * ============LICENSE_START=======================================================
3  * ONAP - SO
4  * ================================================================================
5  * Copyright (C) 2017 - 2018 AT&T Intellectual Property. All rights reserved.
6  * ================================================================================
7  * Modifications Copyright (C) 2018 IBM.
8  * Modifications Copyright (c) 2019 Samsung
9  * ================================================================================
10  * Licensed under the Apache License, Version 2.0 (the "License");
11  * you may not use this file except in compliance with the License.
12  * You may obtain a copy of the License at
13  * 
14  *      http://www.apache.org/licenses/LICENSE-2.0
15  * 
16  * Unless required by applicable law or agreed to in writing, software
17  * distributed under the License is distributed on an "AS IS" BASIS,
18  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
19  * See the License for the specific language governing permissions and
20  * limitations under the License.
21  * ============LICENSE_END=========================================================
22  */
23
24 package org.onap.so.adapters.requestsdb;
25
26 import java.util.ArrayList;
27 import java.util.Calendar;
28 import java.util.Date;
29 import java.util.List;
30
31 import org.onap.so.db.request.beans.ArchivedInfraRequests;
32 import org.onap.so.db.request.beans.InfraActiveRequests;
33 import org.onap.so.db.request.data.repository.ArchivedInfraRequestsRepository;
34 import org.onap.so.db.request.data.repository.InfraActiveRequestsRepository;
35 import org.onap.so.logger.ErrorCode;
36 import org.onap.so.logger.MessageEnum;
37 import org.slf4j.Logger;
38 import org.slf4j.LoggerFactory;
39 import org.springframework.beans.factory.annotation.Autowired;
40 import org.springframework.beans.factory.annotation.Value;
41 import org.springframework.data.domain.PageRequest;
42 import org.springframework.scheduling.annotation.Scheduled;
43 import org.springframework.stereotype.Component;
44
45 import net.javacrumbs.shedlock.core.SchedulerLock;
46
47 @Component
48 public class ArchiveInfraRequestsScheduler {
49         
50         private static Logger logger = LoggerFactory.getLogger(ArchiveInfraRequestsScheduler.class);
51         
52         @Autowired
53         private InfraActiveRequestsRepository infraActiveRepo;
54         @Autowired 
55         private ArchivedInfraRequestsRepository archivedInfraRepo;
56         
57         @Value("${mso.infra-requests.archived.period}")
58         private int archivedPeriod;
59         
60         /**
61          * Runs the scheduler nightly
62          * [Seconds] [Minutes] [Hours] [Day of month] [Month] [Day of week] [Year]
63          */
64         @Scheduled(cron="0 0 1 * * ?")
65         @SchedulerLock(name = "archiveInfraRequestsScheduler")
66         public void infraRequestsScheduledTask() {
67                 logger.debug("Start of archiveInfraRequestsScheduler");
68                 
69                 Date currentDate= new Date();
70                 Calendar calendar = Calendar.getInstance();
71                 calendar.setTime(currentDate);
72                 calendar.add(Calendar.DATE, -archivedPeriod);
73                 Date archivingDate = calendar.getTime();
74                 
75                 logger.debug("Date before 6 months: "+ (calendar.get(Calendar.MONTH) + 1) + "-"
76                                         + calendar.get(Calendar.DATE) + "-" + calendar.get(Calendar.YEAR));
77                 
78                 List<InfraActiveRequests> requestsByEndTime = new ArrayList<>();
79                 PageRequest pageRequest = new PageRequest(0, 100);
80                 do {
81                         requestsByEndTime = infraActiveRepo.findByEndTimeLessThan(archivingDate, pageRequest);
82                         logger.debug("{} requests to be archived based on End Time", requestsByEndTime.size());
83                         archiveInfraRequests(requestsByEndTime);
84                 } while(!requestsByEndTime.isEmpty());
85                 
86                 List<InfraActiveRequests> requestsByStartTime = new ArrayList<>();
87                 do {
88                         requestsByStartTime = infraActiveRepo.findByStartTimeLessThanAndEndTime(archivingDate, null, pageRequest);
89                         logger.debug("{} requests to be archived based on Start Time", requestsByEndTime.size());
90                         archiveInfraRequests(requestsByStartTime);
91                 } while(!requestsByStartTime.isEmpty());
92                 
93                 logger.debug("End of archiveInfraRequestsScheduler");
94         }
95         
96         protected void archiveInfraRequests(List<InfraActiveRequests> requests) {
97                 List<ArchivedInfraRequests> newArchivedReqs = new ArrayList<>();
98                 List<InfraActiveRequests> oldInfraReqs = new ArrayList<>();
99                 
100                 for(InfraActiveRequests iar: requests) {
101                         ArchivedInfraRequests archivedInfra = new ArchivedInfraRequests();
102                         try {
103                                 archivedInfra.setAaiServiceId(iar.getAaiServiceId());
104                                 archivedInfra.setAction(iar.getAction());
105                                 archivedInfra.setAicCloudRegion(iar.getAicCloudRegion());
106                                 archivedInfra.setAicNodeClli(iar.getAicNodeClli());
107                                 archivedInfra.setCallBackUrl(iar.getCallBackUrl());
108                                 archivedInfra.setClientRequestId(iar.getClientRequestId());
109                                 archivedInfra.setConfigurationId(iar.getConfigurationId());
110                                 archivedInfra.setConfigurationName(iar.getConfigurationName());
111                                 archivedInfra.setCorrelator(iar.getCorrelator());
112                                 archivedInfra.setEndTime(iar.getEndTime());
113                                 archivedInfra.setLastModifiedBy(iar.getLastModifiedBy());
114                                 archivedInfra.setNetworkId(iar.getNetworkId());
115                                 archivedInfra.setNetworkName(iar.getNetworkName());
116                                 archivedInfra.setNetworkType(iar.getNetworkType());
117                                 archivedInfra.setOperationalEnvId(iar.getOperationalEnvId());
118                                 archivedInfra.setOperationalEnvName(iar.getOperationalEnvName());
119                                 archivedInfra.setRequestUrl(iar.getRequestUrl());                               
120                                 archivedInfra.setProgress(iar.getProgress());
121                                 archivedInfra.setProvStatus(iar.getProvStatus());
122                                 archivedInfra.setRequestAction(iar.getRequestAction());
123                                 archivedInfra.setRequestBody(iar.getRequestBody());
124                                 archivedInfra.setRequestId(iar.getRequestId());
125                                 archivedInfra.setRequestorId(iar.getRequestorId());
126                                 archivedInfra.setRequestScope(iar.getRequestScope());
127                                 archivedInfra.setRequestStatus(iar.getRequestStatus());
128                                 archivedInfra.setRequestType(iar.getRequestType());
129                                 archivedInfra.setResponseBody(iar.getResponseBody());
130                                 archivedInfra.setServiceInstanceId(iar.getServiceInstanceId());
131                                 archivedInfra.setServiceInstanceName(iar.getServiceInstanceName());
132                                 archivedInfra.setServiceType(iar.getServiceType());
133                                 archivedInfra.setSource(iar.getSource());
134                                 archivedInfra.setStartTime(iar.getStartTime());
135                                 archivedInfra.setStatusMessage(iar.getStatusMessage());
136                                 archivedInfra.setTenantId(iar.getTenantId());
137                                 archivedInfra.setVfModuleId(iar.getVfModuleId());
138                                 archivedInfra.setVfModuleModelName(iar.getVfModuleModelName());
139                                 archivedInfra.setVfModuleName(iar.getVfModuleName());
140                                 archivedInfra.setVnfId(iar.getVnfId());
141                                 archivedInfra.setVnfName(iar.getVnfName());
142                                 archivedInfra.setVnfOutputs(iar.getVnfOutputs());
143                                 archivedInfra.setVnfParams(iar.getVnfParams());
144                                 archivedInfra.setVnfType(iar.getVnfType());
145                                 archivedInfra.setVolumeGroupId(iar.getVolumeGroupId());
146                                 archivedInfra.setVolumeGroupName(iar.getVolumeGroupName());
147                                 
148                                 newArchivedReqs.add(archivedInfra);
149                                 oldInfraReqs.add(iar);
150                         } catch(Exception e) {
151                                 logger.error("{} {}", MessageEnum.RA_GENERAL_EXCEPTION.toString(), ErrorCode
152                                         .UnknownError.getValue(), e);
153                         }
154                 }
155                 
156                 logger.info("Creating archivedInfraRequest records: {}", newArchivedReqs.size());
157                 archivedInfraRepo.saveAll(newArchivedReqs);
158                 
159                 logger.info("Deleting InfraActiveRequest records: {}", oldInfraReqs.size());
160                 infraActiveRepo.deleteAll(oldInfraReqs);
161         }
162 }