54e95ae0ca2758bc68152a4d4e29cf3d1b8a1c44
[portal.git] / ecomp-portal-BE-common / src / main / java / org / openecomp / portalapp / portal / controller / SchedulerController.java
1 /*-
2  * ================================================================================
3  * ECOMP Portal
4  * ================================================================================
5  * Copyright (C) 2017 AT&T Intellectual Property
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
10  * 
11  *      http://www.apache.org/licenses/LICENSE-2.0
12  * 
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  * ================================================================================
19  */
20 package org.openecomp.portalapp.portal.controller;
21
22 import java.text.DateFormat;
23 import java.text.SimpleDateFormat;
24 import java.util.Date;
25 import java.util.UUID;
26
27 import javax.servlet.http.HttpServletRequest;
28
29 import org.json.simple.JSONObject;
30 import org.openecomp.portalapp.portal.logging.aop.EPAuditLog;
31 import org.openecomp.portalapp.portal.scheduler.SchedulerProperties;
32 import org.openecomp.portalapp.portal.scheduler.SchedulerRestInterface;
33 import org.openecomp.portalapp.portal.scheduler.SchedulerUtil;
34 import org.openecomp.portalapp.portal.scheduler.restobjects.GetTimeSlotsRestObject;
35 import org.openecomp.portalapp.portal.scheduler.restobjects.PostCreateNewVnfRestObject;
36 import org.openecomp.portalapp.portal.scheduler.restobjects.PostSubmitVnfChangeRestObject;
37 import org.openecomp.portalapp.portal.scheduler.wrapper.GetTimeSlotsWrapper;
38 import org.openecomp.portalapp.portal.scheduler.wrapper.PostCreateNewVnfWrapper;
39 import org.openecomp.portalapp.portal.scheduler.wrapper.PostSubmitVnfChangeTimeSlotsWrapper;
40 import org.openecomp.portalapp.portal.utils.PortalConstants;
41 import org.openecomp.portalsdk.core.logging.logic.EELFLoggerDelegate;
42 import org.openecomp.portalsdk.core.util.SystemProperties;
43 import org.springframework.beans.factory.annotation.Autowired;
44 import org.springframework.context.annotation.Configuration;
45 import org.springframework.context.annotation.EnableAspectJAutoProxy;
46 import org.springframework.http.HttpStatus;
47 import org.springframework.http.ResponseEntity;
48 import org.springframework.web.bind.annotation.PathVariable;
49 import org.springframework.web.bind.annotation.RequestBody;
50 import org.springframework.web.bind.annotation.RequestMapping;
51 import org.springframework.web.bind.annotation.RequestMethod;
52 import org.springframework.web.bind.annotation.RestController;
53
54 @RestController
55 @RequestMapping(PortalConstants.REST_AUX_API)
56 @Configuration
57 @EnableAspectJAutoProxy
58 @EPAuditLog
59 public class SchedulerController implements BasicAuthenticationController {
60
61         @Autowired
62         private SchedulerRestInterface schedulerRestController;
63
64         private EELFLoggerDelegate logger = EELFLoggerDelegate.getLogger(SchedulerController.class);
65
66         /** The request date format. */
67         public DateFormat requestDateFormat = new SimpleDateFormat("EEE, dd MMM YYYY HH:mm:ss z");
68
69         @RequestMapping(value = "/get_time_slots/{scheduler_request}", method = RequestMethod.GET)
70         public ResponseEntity<String> getTimeSlots(HttpServletRequest request,
71                         @PathVariable("scheduler_request") String scheduler_request) throws Exception {
72
73                 Date startingTime = new Date();
74                 String startTimeRequest = requestDateFormat.format(startingTime);
75
76                 System.out.println("\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n");
77                 System.out.println(startTimeRequest + " | Controller Scheduler GET : /get_time_slots/{scheduler_request} \n");
78                 System.out.println("Original Request : \n " + scheduler_request + '\n');
79
80                 String path = SystemProperties.getProperty(SchedulerProperties.SCHEDULER_GET_TIME_SLOTS) + scheduler_request;
81
82                 GetTimeSlotsWrapper schedulerResWrapper = getTimeSlots(scheduler_request, path, scheduler_request);
83
84                 Date endTime = new Date();
85                 String endTimeRequest = requestDateFormat.format(endTime);
86                 System.out.println(endTimeRequest + " | Controller Scheduler - GET\n");
87
88                 return (new ResponseEntity<String>(schedulerResWrapper.getResponse(), HttpStatus.OK));
89
90         }
91
92         protected GetTimeSlotsWrapper getTimeSlots(String request, String path, String uuid) throws Exception {
93
94                 try {
95                         // STARTING REST API CALL AS AN FACTORY INSTACE
96                         System.out.println("<== Get Time Slots Request START \n");
97
98                         GetTimeSlotsRestObject<String> restObjStr = new GetTimeSlotsRestObject<String>();
99                         String str = new String();
100
101                         restObjStr.set(str);
102
103                         schedulerRestController.Get(str, uuid, path, restObjStr);
104                         GetTimeSlotsWrapper schedulerRespWrapper = SchedulerUtil.getTimeSlotsWrapResponse(restObjStr);
105
106                         System.out.println(
107                                         "<== Get Time Slots Request END : Response = " + schedulerRespWrapper.getResponse() + '\n');
108
109                         return schedulerRespWrapper;
110
111                 } catch (Exception e) {
112                         System.out.println("<== Get Time Slots Request ERROR : " + e.toString() + '\n');
113                         logger.error(EELFLoggerDelegate.errorLogger, "Get Time Slots Request failed", e);
114                         throw e;
115                 }
116         }
117
118         @SuppressWarnings("unchecked")
119         @RequestMapping(value = "/post_create_new_vnf_change", method = RequestMethod.POST)
120         public ResponseEntity<String> postCreateNewVNFChange(HttpServletRequest request,
121                         @RequestBody JSONObject scheduler_request) throws Exception {
122
123                 Date startingTime = new Date();
124                 String startTimeRequest = requestDateFormat.format(startingTime);
125
126                 System.out.println("\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n");
127                 System.out.println(startTimeRequest + " | Controller Scheduler POST : post_create_new_vnf_change \n");
128
129                 // Generating uuid
130                 String uuid = UUID.randomUUID().toString();
131
132                 scheduler_request.put("scheduleId", uuid);
133                 System.out.println("<== UUID : " + uuid + '\n');
134
135                 // adding uuid to the request payload
136                 scheduler_request.put("scheduleId", uuid);
137
138                 System.out.println("<== UUID : " + uuid + '\n');
139                 System.out.println("Original Request : \n " + scheduler_request.toString() + '\n');
140
141                 String path = SystemProperties.getProperty(SchedulerProperties.SCHEDULER_CREATE_NEW_VNF_CHANGE_INSTANCE_VAL)
142                                 + uuid;
143
144                 PostCreateNewVnfWrapper responseWrapper = postSchedulingRequest(scheduler_request, path, uuid);
145
146                 Date endTime = new Date();
147                 String endTimeRequest = requestDateFormat.format(endTime);
148                 System.out.println(endTimeRequest + " | Controller Scheduler - POST\n");
149
150                 return (new ResponseEntity<String>(responseWrapper.getResponse(), HttpStatus.OK));
151         }
152
153         protected PostCreateNewVnfWrapper postSchedulingRequest(JSONObject request, String path, String uuid)
154                         throws Exception {
155
156                 try {
157                         // STARTING REST API CALL AS AN FACTORY INSTACE
158                         System.out.println("<== Post Create New Vnf Scheduling Request START \n");
159
160                         PostCreateNewVnfRestObject<String> restObjStr = new PostCreateNewVnfRestObject<String>();
161                         String str = new String();
162
163                         restObjStr.set(str);
164                         schedulerRestController.<String>Post(str, request, path, restObjStr);
165
166                         int status = restObjStr.getStatusCode();
167                         if (status >= 200 && status <= 299) {
168                                 restObjStr.setUUID(uuid);
169                         }
170
171                         PostCreateNewVnfWrapper responseWrapper = SchedulerUtil.postCreateNewVnfWrapResponse(restObjStr);
172
173                         System.out.println("<== Post Create New Vnf Scheduling Request END : Response = "
174                                         + responseWrapper.getResponse() + '\n');
175
176                         return responseWrapper;
177
178                 } catch (Exception e) {
179                         System.out.println("<== Post Create New Vnf Scheduling Request ERROR : " + e.toString() + '\n');
180                         logger.error(EELFLoggerDelegate.errorLogger, "Post Create New Vnf Scheduling Request failed", e);
181                         throw e;
182                 }
183         }
184
185         @RequestMapping(value = "/submit_vnf_change_timeslots", method = RequestMethod.POST)
186         public ResponseEntity<String> postSubmitVnfChangeTimeslots(HttpServletRequest request,
187                         @RequestBody JSONObject scheduler_request) throws Exception {
188
189                 Date startingTime = new Date();
190                 String startTimeRequest = requestDateFormat.format(startingTime);
191
192                 System.out.println("\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n");
193                 System.out.println(startTimeRequest + " | Controller Scheduler POST : submit_vnf_change_timeslots \n");
194
195                 // Generating uuid
196                 String uuid = (String) scheduler_request.get("scheduleId");
197                 scheduler_request.remove("scheduleId");
198
199                 System.out.println("<== UUID : " + uuid + '\n');
200                 System.out.println("Original Request : \n " + scheduler_request.toString() + '\n');
201
202                 String path = SystemProperties.getProperty(SchedulerProperties.SCHEDULER_SUBMIT_NEW_VNF_CHANGE)
203                                 .replace("{scheduleId}", uuid);
204
205                 PostSubmitVnfChangeTimeSlotsWrapper responseWrapper = postSubmitSchedulingRequest(scheduler_request, path,
206                                 uuid);
207
208                 Date endTime = new Date();
209                 String endTimeRequest = requestDateFormat.format(endTime);
210                 System.out.println(endTimeRequest + " | Controller Scheduler - POST Submit\n");
211
212                 return (new ResponseEntity<String>(responseWrapper.getResponse(), HttpStatus.OK));
213         }
214
215         protected PostSubmitVnfChangeTimeSlotsWrapper postSubmitSchedulingRequest(JSONObject request, String path,
216                         String uuid) throws Exception {
217
218                 try {
219                         // STARTING REST API CALL AS AN FACTORY INSTACE
220                         System.out.println("<== Post Submit Scheduling Request START \n");
221
222                         PostSubmitVnfChangeRestObject<String> restObjStr = new PostSubmitVnfChangeRestObject<String>();
223                         String str = new String();
224
225                         restObjStr.set(str);
226                         schedulerRestController.<String>Post(str, request, path, restObjStr);
227
228                         int status = restObjStr.getStatusCode();
229                         if (status >= 200 && status <= 299) {
230                                 restObjStr.setUUID(uuid);
231                         }
232
233                         PostSubmitVnfChangeTimeSlotsWrapper responseWrapper = SchedulerUtil
234                                         .postSubmitNewVnfWrapResponse(restObjStr);
235
236                         System.out.println(
237                                         "<== Post Submit Scheduling Request END : Response = " + responseWrapper.getResponse() + '\n');
238
239                         return responseWrapper;
240
241                 } catch (Exception e) {
242                         System.out.println("<== Post Submit Scheduling Request ERROR : " + e.toString() + '\n');
243                         logger.error(EELFLoggerDelegate.errorLogger, "Post Submit Scheduling Request failed", e);
244                         throw e;
245                 }
246         }
247
248 }