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