2 * ================================================================================
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
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 * ================================================================================
20 package org.openecomp.portalapp.portal.controller;
22 import java.text.DateFormat;
23 import java.text.SimpleDateFormat;
24 import java.util.Date;
25 import java.util.UUID;
27 import javax.servlet.http.HttpServletRequest;
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;
55 @RequestMapping(PortalConstants.REST_AUX_API)
57 @EnableAspectJAutoProxy
59 public class SchedulerController implements BasicAuthenticationController {
62 private SchedulerRestInterface schedulerRestController;
64 private EELFLoggerDelegate logger = EELFLoggerDelegate.getLogger(SchedulerController.class);
66 /** The request date format. */
67 public DateFormat requestDateFormat = new SimpleDateFormat("EEE, dd MMM YYYY HH:mm:ss z");
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 {
73 Date startingTime = new Date();
74 String startTimeRequest = requestDateFormat.format(startingTime);
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');
80 String path = SystemProperties.getProperty(SchedulerProperties.SCHEDULER_GET_TIME_SLOTS) + scheduler_request;
82 GetTimeSlotsWrapper schedulerResWrapper = getTimeSlots(scheduler_request, path, scheduler_request);
84 Date endTime = new Date();
85 String endTimeRequest = requestDateFormat.format(endTime);
86 System.out.println(endTimeRequest + " | Controller Scheduler - GET\n");
88 return (new ResponseEntity<String>(schedulerResWrapper.getResponse(), HttpStatus.OK));
92 protected GetTimeSlotsWrapper getTimeSlots(String request, String path, String uuid) throws Exception {
95 // STARTING REST API CALL AS AN FACTORY INSTACE
96 System.out.println("<== Get Time Slots Request START \n");
98 GetTimeSlotsRestObject<String> restObjStr = new GetTimeSlotsRestObject<String>();
99 String str = new String();
103 schedulerRestController.Get(str, uuid, path, restObjStr);
104 GetTimeSlotsWrapper schedulerRespWrapper = SchedulerUtil.getTimeSlotsWrapResponse(restObjStr);
107 "<== Get Time Slots Request END : Response = " + schedulerRespWrapper.getResponse() + '\n');
109 return schedulerRespWrapper;
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);
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 {
123 Date startingTime = new Date();
124 String startTimeRequest = requestDateFormat.format(startingTime);
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");
130 String uuid = UUID.randomUUID().toString();
132 scheduler_request.put("scheduleId", uuid);
133 System.out.println("<== UUID : " + uuid + '\n');
135 // adding uuid to the request payload
136 scheduler_request.put("scheduleId", uuid);
138 System.out.println("<== UUID : " + uuid + '\n');
139 System.out.println("Original Request : \n " + scheduler_request.toString() + '\n');
141 String path = SystemProperties.getProperty(SchedulerProperties.SCHEDULER_CREATE_NEW_VNF_CHANGE_INSTANCE_VAL)
144 PostCreateNewVnfWrapper responseWrapper = postSchedulingRequest(scheduler_request, path, uuid);
146 Date endTime = new Date();
147 String endTimeRequest = requestDateFormat.format(endTime);
148 System.out.println(endTimeRequest + " | Controller Scheduler - POST\n");
150 return (new ResponseEntity<String>(responseWrapper.getResponse(), HttpStatus.OK));
153 protected PostCreateNewVnfWrapper postSchedulingRequest(JSONObject request, String path, String uuid)
157 // STARTING REST API CALL AS AN FACTORY INSTACE
158 System.out.println("<== Post Create New Vnf Scheduling Request START \n");
160 PostCreateNewVnfRestObject<String> restObjStr = new PostCreateNewVnfRestObject<String>();
161 String str = new String();
164 schedulerRestController.<String>Post(str, request, path, restObjStr);
166 int status = restObjStr.getStatusCode();
167 if (status >= 200 && status <= 299) {
168 restObjStr.setUUID(uuid);
171 PostCreateNewVnfWrapper responseWrapper = SchedulerUtil.postCreateNewVnfWrapResponse(restObjStr);
173 System.out.println("<== Post Create New Vnf Scheduling Request END : Response = "
174 + responseWrapper.getResponse() + '\n');
176 return responseWrapper;
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);
185 @RequestMapping(value = "/submit_vnf_change_timeslots", method = RequestMethod.POST)
186 public ResponseEntity<String> postSubmitVnfChangeTimeslots(HttpServletRequest request,
187 @RequestBody JSONObject scheduler_request) throws Exception {
189 Date startingTime = new Date();
190 String startTimeRequest = requestDateFormat.format(startingTime);
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");
196 String uuid = (String) scheduler_request.get("scheduleId");
197 scheduler_request.remove("scheduleId");
199 System.out.println("<== UUID : " + uuid + '\n');
200 System.out.println("Original Request : \n " + scheduler_request.toString() + '\n');
202 String path = SystemProperties.getProperty(SchedulerProperties.SCHEDULER_SUBMIT_NEW_VNF_CHANGE)
203 .replace("{scheduleId}", uuid);
205 PostSubmitVnfChangeTimeSlotsWrapper responseWrapper = postSubmitSchedulingRequest(scheduler_request, path,
208 Date endTime = new Date();
209 String endTimeRequest = requestDateFormat.format(endTime);
210 System.out.println(endTimeRequest + " | Controller Scheduler - POST Submit\n");
212 return (new ResponseEntity<String>(responseWrapper.getResponse(), HttpStatus.OK));
215 protected PostSubmitVnfChangeTimeSlotsWrapper postSubmitSchedulingRequest(JSONObject request, String path,
216 String uuid) throws Exception {
219 // STARTING REST API CALL AS AN FACTORY INSTACE
220 System.out.println("<== Post Submit Scheduling Request START \n");
222 PostSubmitVnfChangeRestObject<String> restObjStr = new PostSubmitVnfChangeRestObject<String>();
223 String str = new String();
226 schedulerRestController.<String>Post(str, request, path, restObjStr);
228 int status = restObjStr.getStatusCode();
229 if (status >= 200 && status <= 299) {
230 restObjStr.setUUID(uuid);
233 PostSubmitVnfChangeTimeSlotsWrapper responseWrapper = SchedulerUtil
234 .postSubmitNewVnfWrapResponse(restObjStr);
237 "<== Post Submit Scheduling Request END : Response = " + responseWrapper.getResponse() + '\n');
239 return responseWrapper;
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);