2 * ============LICENSE_START=======================================================
4 * ================================================================================
5 * Copyright (C) 2017 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=========================================================
20 package org.openecomp.policy.pdp.rest.api.controller;
22 import io.swagger.annotations.Api;
23 import io.swagger.annotations.ApiImplicitParam;
24 import io.swagger.annotations.ApiImplicitParams;
25 import io.swagger.annotations.ApiOperation;
27 import java.lang.reflect.InvocationTargetException;
28 import java.util.Collection;
29 import java.util.concurrent.atomic.AtomicLong;
31 import javax.servlet.http.HttpServletRequest;
33 import org.openecomp.policy.api.ConfigRequestParameters;
34 import org.openecomp.policy.api.DecisionRequestParameters;
35 import org.openecomp.policy.api.DecisionResponse;
36 import org.openecomp.policy.api.DeletePolicyParameters;
37 import org.openecomp.policy.api.DictionaryParameters;
38 import org.openecomp.policy.api.DictionaryResponse;
39 import org.openecomp.policy.api.EventRequestParameters;
40 import org.openecomp.policy.api.MetricsResponse;
41 import org.openecomp.policy.api.PolicyParameters;
42 import org.openecomp.policy.api.PolicyResponse;
43 import org.openecomp.policy.api.PushPolicyParameters;
44 import org.openecomp.policy.common.logging.flexlogger.FlexLogger;
45 import org.openecomp.policy.common.logging.flexlogger.Logger;
46 import org.openecomp.policy.pdp.rest.XACMLPdpServlet;
47 import org.openecomp.policy.pdp.rest.api.models.ConfigFirewallPolicyAPIRequest;
48 import org.openecomp.policy.pdp.rest.api.models.ConfigNameRequest;
49 import org.openecomp.policy.pdp.rest.api.models.ConfigPolicyAPIRequest;
50 import org.openecomp.policy.pdp.rest.api.models.PolicyConfig;
51 import org.openecomp.policy.pdp.rest.api.services.CreateUpdateConfigPolicyService;
52 import org.openecomp.policy.pdp.rest.api.services.CreateUpdateDictionaryService;
53 import org.openecomp.policy.pdp.rest.api.services.CreateUpdateFirewallPolicyService;
54 import org.openecomp.policy.pdp.rest.api.services.CreateUpdatePolicyService;
55 import org.openecomp.policy.pdp.rest.api.services.DeletePolicyService;
56 import org.openecomp.policy.pdp.rest.api.services.GetConfigService;
57 import org.openecomp.policy.pdp.rest.api.services.GetDecisionService;
58 import org.openecomp.policy.pdp.rest.api.services.GetDictionaryService;
59 import org.openecomp.policy.pdp.rest.api.services.GetMetricsService;
60 import org.openecomp.policy.pdp.rest.api.services.ListConfigService;
61 import org.openecomp.policy.pdp.rest.api.services.PolicyEngineImportService;
62 import org.openecomp.policy.pdp.rest.api.services.PushPolicyService;
63 import org.openecomp.policy.pdp.rest.api.services.SendEventService;
64 import org.openecomp.policy.pdp.rest.config.PDPApiAuth;
65 import org.springframework.http.HttpStatus;
66 import org.springframework.http.ResponseEntity;
67 import org.springframework.http.converter.HttpMessageNotReadableException;
68 import org.springframework.web.bind.annotation.ExceptionHandler;
69 import org.springframework.web.bind.annotation.RequestBody;
70 import org.springframework.web.bind.annotation.RequestHeader;
71 import org.springframework.web.bind.annotation.RequestMapping;
72 import org.springframework.web.bind.annotation.RequestMethod;
73 import org.springframework.web.bind.annotation.RequestParam;
74 import org.springframework.web.bind.annotation.ResponseBody;
75 import org.springframework.web.bind.annotation.RestController;
76 import org.springframework.web.multipart.MultipartFile;
78 import springfox.documentation.annotations.ApiIgnore;
81 @Api(value = "Policy Engine Services")
83 public class PolicyEngineServices {
84 private static Logger logger = FlexLogger
85 .getLogger(PolicyEngineServices.class.getName());
86 private final AtomicLong configCounter = new AtomicLong();
87 private final AtomicLong configNameCounter = new AtomicLong();
88 private final AtomicLong eventCounter = new AtomicLong();
89 private final AtomicLong decisionCounter = new AtomicLong();
90 private final AtomicLong pushCounter = new AtomicLong();
91 private final AtomicLong deleteCounter = new AtomicLong();
92 private final AtomicLong createPolicyCounter = new AtomicLong();
93 private final AtomicLong updatePolicyCounter = new AtomicLong();
94 private final AtomicLong createDictionaryCounter = new AtomicLong();
95 private final AtomicLong updateDictionaryCounter = new AtomicLong();
96 private final AtomicLong getDictionaryCounter = new AtomicLong();
97 private final AtomicLong policyEngineImportCounter = new AtomicLong();
98 private final AtomicLong deprecatedCounter = new AtomicLong();
99 private final AtomicLong metricCounter = new AtomicLong();
102 @ApiImplicitParam(name = "Authorization", required = true, paramType = "Header"),
103 @ApiImplicitParam(name = "Environment", required = true, paramType = "Header") })
104 @ApiOperation(value = "Gets the configuration from the PolicyDecisionPoint(PDP)")
105 @RequestMapping(value = "/getConfig", method = RequestMethod.POST)
107 public ResponseEntity<Collection<PolicyConfig>> getConfig(
108 @RequestBody ConfigRequestParameters configRequestParameters,
109 @RequestHeader(value = "ClientAuth", required = true) String clientEncoding,
110 @RequestHeader(value = "X-ECOMP-RequestID", required = false) String requestID) {
111 Collection<PolicyConfig> policyConfig = null;
112 HttpStatus status = HttpStatus.UNAUTHORIZED;
113 // Check Permissions.
114 if (PDPApiAuth.checkPermissions(clientEncoding, requestID, "getConfig")) {
115 GetConfigService getConfigService = new GetConfigService(
116 configRequestParameters, requestID);
117 policyConfig = getConfigService.getResult();
118 status = getConfigService.getResponseCode();
120 configCounter.incrementAndGet();
121 return new ResponseEntity<Collection<PolicyConfig>>(policyConfig, status);
125 @ApiImplicitParam(name = "Authorization", required = true, paramType = "Header"),
126 @ApiImplicitParam(name = "Environment", required = true, paramType = "Header") })
127 @ApiOperation(value = "Gets the configuration from the PolicyDecisionPoint(PDP) using PolicyName")
128 @RequestMapping(value = "/getConfigByPolicyName", method = RequestMethod.POST)
131 public ResponseEntity<Collection<PolicyConfig>> getConfigByPolicyName(
132 @RequestBody ConfigNameRequest configNameRequest,
133 @RequestHeader(value = "ClientAuth", required = true) String clientEncoding,
134 @RequestHeader(value = "X-ECOMP-RequestID", required = false) String requestID) {
135 Collection<PolicyConfig> policyConfig = null;
136 HttpStatus status = HttpStatus.UNAUTHORIZED;
137 // Check Permissions.
138 if (PDPApiAuth.checkPermissions(clientEncoding, requestID,
139 "getConfigByPolicyName")) {
140 ConfigRequestParameters configRequestParameters = new ConfigRequestParameters();
141 configRequestParameters.setPolicyName(configNameRequest
143 GetConfigService getConfigService = new GetConfigService(
144 configRequestParameters, requestID);
145 policyConfig = getConfigService.getResult();
146 status = getConfigService.getResponseCode();
148 configNameCounter.incrementAndGet();
149 return new ResponseEntity<>(policyConfig, status);
153 @ApiImplicitParam(name = "Authorization", required = true, paramType = "Header"),
154 @ApiImplicitParam(name = "Environment", required = true, paramType = "Header") })
155 @ApiOperation(value = "Gets the list of configuration policies from the PDP")
156 @RequestMapping(value = "/listConfig", method = RequestMethod.POST)
158 public ResponseEntity<Collection<String>> listConfig(
159 @RequestBody ConfigRequestParameters configRequestParameters,
160 @RequestHeader(value = "ClientAuth", required = true) String clientEncoding,
161 @RequestHeader(value = "X-ECOMP-RequestID", required = false) String requestID) {
162 Collection<String> results = null;
163 HttpStatus status = HttpStatus.UNAUTHORIZED;
164 // Check Permissions.
166 .checkPermissions(clientEncoding, requestID, "listConfig")) {
167 ListConfigService listConfigService = new ListConfigService(
168 configRequestParameters, requestID);
169 results = listConfigService.getResult();
170 status = listConfigService.getResponseCode();
172 configCounter.incrementAndGet();
173 return new ResponseEntity<>(results, status);
177 @ApiImplicitParam(name ="Authorization", required = true, paramType = "Header"),
178 @ApiImplicitParam(name ="Environment", required = true, paramType = "Header")
180 @ApiOperation(value= "Gets the policy metrics from the PolicyAccessPoint(PAP)")
181 @RequestMapping(value="/getMetrics", method=RequestMethod.GET)
183 public ResponseEntity<MetricsResponse> getMetrics(
184 @RequestHeader(value="ClientAuth", required=true)String clientEncoding,
185 @RequestHeader(value="X-ECOMP-RequestID", required=false)String requestID) {
186 MetricsResponse response = null;
187 HttpStatus status = HttpStatus.UNAUTHORIZED;
188 // Check Permissions.
189 if(PDPApiAuth.checkPermissions(clientEncoding, requestID, "getMetrics")){
190 GetMetricsService getMetricsService = new GetMetricsService(requestID);
191 response = getMetricsService.getResult();
192 status = getMetricsService.getResponseCode();
194 metricCounter.incrementAndGet();
195 return new ResponseEntity<>(response, status);
199 @ApiImplicitParam(name = "Authorization", required = true, paramType = "Header"),
200 @ApiImplicitParam(name = "Environment", required = true, paramType = "Header") })
201 @ApiOperation(value = "Sends the Events specified to the Policy Engine")
202 @RequestMapping(value = "/sendEvent", method = RequestMethod.POST)
204 public ResponseEntity<Collection<PolicyResponse>> sendEvent(
205 @RequestBody EventRequestParameters eventRequestParameters,
206 @RequestHeader(value = "ClientAuth", required = true) String clientEncoding,
207 @RequestHeader(value = "X-ECOMP-RequestID", required = false) String requestID) {
208 Collection<PolicyResponse> policyResponse = null;
209 HttpStatus status = HttpStatus.UNAUTHORIZED;
210 // Check Permissions.
211 if (PDPApiAuth.checkPermissions(clientEncoding, requestID, "sendEvent")) {
212 SendEventService sendEventService = new SendEventService(
213 eventRequestParameters, requestID);
214 policyResponse = sendEventService.getResult();
215 status = sendEventService.getResponseCode();
217 eventCounter.incrementAndGet();
218 return new ResponseEntity<>(policyResponse,
223 @ApiImplicitParam(name = "Authorization", required = true, paramType = "Header"),
224 @ApiImplicitParam(name = "Environment", required = true, paramType = "Header") })
225 @ApiOperation(value = "Gets the Decision using specified decision parameters")
226 @RequestMapping(value = "/getDecision", method = RequestMethod.POST)
228 public ResponseEntity<DecisionResponse> getDecision(
229 @RequestBody DecisionRequestParameters decisionRequestParameters,
230 @RequestHeader(value = "ClientAuth", required = true) String clientEncoding,
231 @RequestHeader(value = "X-ECOMP-RequestID", required = false) String requestID) {
232 DecisionResponse decisionResponse = null;
233 HttpStatus status = HttpStatus.UNAUTHORIZED;
234 // Check Permissions.
235 if (PDPApiAuth.checkPermissions(clientEncoding, requestID,
237 GetDecisionService getDecisionService = new GetDecisionService(
238 decisionRequestParameters, requestID);
239 decisionResponse = getDecisionService.getResult();
240 status = getDecisionService.getResponseCode();
242 decisionCounter.incrementAndGet();
243 return new ResponseEntity<>(decisionResponse, status);
247 @ApiImplicitParam(name = "Authorization", required = true, paramType = "Header"),
248 @ApiImplicitParam(name = "Environment", required = true, paramType = "Header") })
249 @ApiOperation(value = "Pushes the specified policy to the PDP Group.")
250 @RequestMapping(value = "/pushPolicy", method = RequestMethod.PUT)
252 public ResponseEntity<String> pushPolicy(
253 @RequestBody PushPolicyParameters pushPolicyParameters,
254 @RequestHeader(value = "ClientAuth", required = true) String clientEncoding,
255 @RequestHeader(value = "X-ECOMP-RequestID", required = false) String requestID) {
256 String response = null;
257 HttpStatus status = HttpStatus.UNAUTHORIZED;
258 // Check Permissions.
260 .checkPermissions(clientEncoding, requestID, "pushPolicy")) {
261 PushPolicyService pushPolicyService = new PushPolicyService(
262 pushPolicyParameters, requestID);
263 response = pushPolicyService.getResult();
264 status = pushPolicyService.getResponseCode();
266 pushCounter.incrementAndGet();
267 return new ResponseEntity<>(response, status);
271 @ApiImplicitParam(name = "Authorization", required = true, paramType = "Header"),
272 @ApiImplicitParam(name = "Environment", required = true, paramType = "Header") })
273 @ApiOperation(value = "Deletes the specified policy from the PDP Group or PAP.")
274 @RequestMapping(value = "/deletePolicy", method = RequestMethod.DELETE)
276 public ResponseEntity<String> deletePolicy(
277 @RequestBody DeletePolicyParameters deletePolicyParameters,
278 @RequestHeader(value = "ClientAuth", required = true) String clientEncoding,
279 @RequestHeader(value = "X-ECOMP-RequestID", required = false) String requestID) {
280 String response = null;
281 HttpStatus status = HttpStatus.UNAUTHORIZED;
282 // Check Permissions.
283 if (PDPApiAuth.checkPermissions(clientEncoding, requestID,
285 DeletePolicyService deletePolicyService = new DeletePolicyService(
286 deletePolicyParameters, requestID);
287 response = deletePolicyService.getResult();
288 status = deletePolicyService.getResponseCode();
290 deleteCounter.incrementAndGet();
291 return new ResponseEntity<>(response, status);
295 @ApiImplicitParam(name = "Authorization", required = true, paramType = "Header"),
296 @ApiImplicitParam(name = "Environment", required = true, paramType = "Header") })
297 @ApiOperation(value = "Creates a Policy based on given Policy Parameters.")
298 @RequestMapping(value = "/createPolicy", method = RequestMethod.PUT)
300 public ResponseEntity<String> createPolicy(
301 @RequestBody PolicyParameters policyParameters,
302 @RequestHeader(value = "ClientAuth", required = true) String clientEncoding,
303 @RequestHeader(value = "X-ECOMP-RequestID", required = false) String requestID) {
304 String response = null;
305 HttpStatus status = HttpStatus.UNAUTHORIZED;
306 // Check Permissions.
307 if (PDPApiAuth.checkPermissions(clientEncoding, requestID,
309 CreateUpdatePolicyService createPolicyService;
311 createPolicyService = (CreateUpdatePolicyService) XACMLPdpServlet.getCreateUpdatePolicyConstructor().newInstance(
312 policyParameters, requestID, false);
313 response = createPolicyService.getResult();
314 status = createPolicyService.getResponseCode();
315 } catch (InstantiationException | IllegalAccessException
316 | IllegalArgumentException | InvocationTargetException e) {
317 logger.error(e.getMessage());
318 response = "Problem with CreateUpdate Policy Service. ";
319 status = HttpStatus.INTERNAL_SERVER_ERROR;
322 createPolicyCounter.incrementAndGet();
323 return new ResponseEntity<>(response, status);
327 @ApiImplicitParam(name = "Authorization", required = true, paramType = "Header"),
328 @ApiImplicitParam(name = "Environment", required = true, paramType = "Header") })
329 @ApiOperation(value = "Updates a Policy based on given Policy Parameters.")
330 @RequestMapping(value = "/updatePolicy", method = RequestMethod.PUT)
332 public ResponseEntity<String> updatePolicy(
333 @RequestBody PolicyParameters policyParameters,
334 @RequestHeader(value = "ClientAuth", required = true) String clientEncoding,
335 @RequestHeader(value = "X-ECOMP-RequestID", required = false) String requestID) {
336 String response = null;
337 HttpStatus status = HttpStatus.UNAUTHORIZED;
338 // Check Permissions.
339 if (PDPApiAuth.checkPermissions(clientEncoding, requestID,
341 CreateUpdatePolicyService updatePolicyService;
343 updatePolicyService = (CreateUpdatePolicyService) XACMLPdpServlet.getCreateUpdatePolicyConstructor().newInstance(
344 policyParameters, requestID, true);
345 response = updatePolicyService.getResult();
346 status = updatePolicyService.getResponseCode();
347 } catch (InstantiationException | IllegalAccessException
348 | IllegalArgumentException | InvocationTargetException e) {
349 logger.error(e.getMessage());
350 response = "Problem with CreateUpdate Policy Service. ";
351 status = HttpStatus.INTERNAL_SERVER_ERROR;
354 updatePolicyCounter.incrementAndGet();
355 return new ResponseEntity<>(response, status);
359 @ApiImplicitParam(name = "Authorization", required = true, paramType = "Header"),
360 @ApiImplicitParam(name = "Environment", required = true, paramType = "Header") })
361 @ApiOperation(value = "Creates a Dictionary Item for a specific dictionary based on given Parameters.")
362 @RequestMapping(value = "/createDictionaryItem", method = RequestMethod.PUT)
364 public ResponseEntity<String> createDictionaryItem(
365 @RequestBody DictionaryParameters dictionaryParameters,
366 @RequestHeader(value = "ClientAuth", required = true) String clientEncoding,
367 @RequestHeader(value = "X-ECOMP-RequestID", required = false) String requestID) {
368 String response = null;
369 HttpStatus status = HttpStatus.UNAUTHORIZED;
370 // Check Permissions.
371 if (PDPApiAuth.checkPermissions(clientEncoding, requestID,
372 "createDictionary")) {
373 CreateUpdateDictionaryService createDictionaryService = new CreateUpdateDictionaryService(
374 dictionaryParameters, requestID, false);
375 response = createDictionaryService.getResult();
376 status = createDictionaryService.getResponseCode();
378 createDictionaryCounter.incrementAndGet();
379 return new ResponseEntity<>(response, status);
383 @ApiImplicitParam(name = "Authorization", required = true, paramType = "Header"),
384 @ApiImplicitParam(name = "Environment", required = true, paramType = "Header") })
385 @ApiOperation(value = "Updates a Dictionary Item for a specific dictionary based on given Parameters.")
386 @RequestMapping(value = "/updateDictionaryItem", method = RequestMethod.PUT)
388 public ResponseEntity<String> updateDictionaryItem(
389 @RequestBody DictionaryParameters dictionaryParameters,
390 @RequestHeader(value = "ClientAuth", required = true) String clientEncoding,
391 @RequestHeader(value = "X-ECOMP-RequestID", required = false) String requestID) {
392 String response = null;
393 HttpStatus status = HttpStatus.UNAUTHORIZED;
394 // Check Permissions.
395 if (PDPApiAuth.checkPermissions(clientEncoding, requestID,
396 "updateDictionary")) {
397 CreateUpdateDictionaryService updateDictionaryService = new CreateUpdateDictionaryService(
398 dictionaryParameters, requestID, true);
399 response = updateDictionaryService.getResult();
400 status = updateDictionaryService.getResponseCode();
402 updateDictionaryCounter.incrementAndGet();
403 return new ResponseEntity<>(response, status);
407 @ApiImplicitParam(name = "Authorization", required = true, paramType = "Header"),
408 @ApiImplicitParam(name = "Environment", required = true, paramType = "Header") })
409 @ApiOperation(value = "Gets the dictionary items from the PAP")
410 @RequestMapping(value = "/getDictionaryItems", method = RequestMethod.POST)
412 public ResponseEntity<DictionaryResponse> getDictionaryItems(
413 @RequestBody DictionaryParameters dictionaryParameters,
414 @RequestHeader(value = "ClientAuth", required = true) String clientEncoding,
415 @RequestHeader(value = "X-ECOMP-RequestID", required = false) String requestID) {
416 DictionaryResponse dictionaryResponse = null;
417 HttpStatus status = HttpStatus.UNAUTHORIZED;
418 // Check Permissions.
419 if (PDPApiAuth.checkPermissions(clientEncoding, requestID,
421 GetDictionaryService getDictionaryService = new GetDictionaryService(
422 dictionaryParameters, requestID);
423 dictionaryResponse = getDictionaryService.getResult();
424 status = getDictionaryService.getResponseCode();
426 getDictionaryCounter.incrementAndGet();
427 return new ResponseEntity<>(dictionaryResponse,
432 @ApiImplicitParam(name = "Authorization", required = true, paramType = "Header"),
433 @ApiImplicitParam(name = "Environment", required = true, paramType = "Header") })
434 @ApiOperation(value = "Imports Policy based on the parameters which represent the service used to create a policy Service.")
435 @RequestMapping(value = "/policyEngineImport", method = RequestMethod.POST)
437 public ResponseEntity<String> policyEngineImport(
438 @RequestParam("importParametersJson") String importParametersJson,
439 @RequestParam("file") MultipartFile file,
440 @RequestHeader(value = "ClientAuth", required = true) String clientEncoding,
441 @RequestHeader(value = "X-ECOMP-RequestID", required = false) String requestID) {
442 String response = null;
443 HttpStatus status = HttpStatus.UNAUTHORIZED;
444 // Check Permissions.
445 if (PDPApiAuth.checkPermissions(clientEncoding, requestID,
446 "policyEngineImport")) {
447 PolicyEngineImportService policyEngineImportService = new PolicyEngineImportService(
448 importParametersJson, file, requestID);
449 response = policyEngineImportService.getResult();
450 status = policyEngineImportService.getResponseCode();
452 policyEngineImportCounter.incrementAndGet();
453 return new ResponseEntity<>(response, status);
457 @ApiImplicitParam(name = "Authorization", required = true, paramType = "Header"),
458 @ApiImplicitParam(name = "Environment", required = true, paramType = "Header") })
459 @ApiOperation(value = "Creates a Config Policy based on given Policy Parameters.")
460 @RequestMapping(value = "/createConfig", method = RequestMethod.PUT)
463 public ResponseEntity<String> createConfig(
464 @RequestBody ConfigPolicyAPIRequest configPolicyAPIRequest,
465 @RequestHeader(value = "ClientAuth", required = true) String clientEncoding,
466 @RequestHeader(value = "X-ECOMP-RequestID", required = false) String requestID) {
467 String response = null;
468 HttpStatus status = HttpStatus.UNAUTHORIZED;
469 // Check Permissions.
470 if (PDPApiAuth.checkPermissions(clientEncoding, requestID,
472 CreateUpdateConfigPolicyService createPolicyService = new CreateUpdateConfigPolicyService(
473 configPolicyAPIRequest, requestID, false);
474 response = createPolicyService.getResult();
475 status = createPolicyService.getResponseCode();
477 deprecatedCounter.incrementAndGet();
478 return new ResponseEntity<>(response, status);
482 @ApiImplicitParam(name = "Authorization", required = true, paramType = "Header"),
483 @ApiImplicitParam(name = "Environment", required = true, paramType = "Header") })
484 @ApiOperation(value = "Updates a Config Policy based on given Policy Parameters.")
485 @RequestMapping(value = "/updateConfig", method = RequestMethod.PUT)
488 public ResponseEntity<String> updateConfig(
489 @RequestBody ConfigPolicyAPIRequest configPolicyAPIRequest,
490 @RequestHeader(value = "ClientAuth", required = true) String clientEncoding,
491 @RequestHeader(value = "X-ECOMP-RequestID", required = false) String requestID) {
492 String response = null;
493 HttpStatus status = HttpStatus.UNAUTHORIZED;
494 // Check Permissions.
495 if (PDPApiAuth.checkPermissions(clientEncoding, requestID,
497 CreateUpdateConfigPolicyService updatePolicyService = new CreateUpdateConfigPolicyService(
498 configPolicyAPIRequest, requestID, true);
499 response = updatePolicyService.getResult();
500 status = updatePolicyService.getResponseCode();
502 deprecatedCounter.incrementAndGet();
503 return new ResponseEntity<>(response, status);
507 @ApiImplicitParam(name = "Authorization", required = true, paramType = "Header"),
508 @ApiImplicitParam(name = "Environment", required = true, paramType = "Header") })
509 @ApiOperation(value = "Creates a Config Firewall Policy")
510 @RequestMapping(value = "/createFirewallConfig", method = RequestMethod.PUT)
513 public ResponseEntity<String> createFirewallConfig(
514 @RequestBody ConfigFirewallPolicyAPIRequest configFirewallPolicyAPIRequest,
515 @RequestHeader(value = "ClientAuth", required = true) String clientEncoding,
516 @RequestHeader(value = "X-ECOMP-RequestID", required = false) String requestID) {
517 String response = null;
518 HttpStatus status = HttpStatus.UNAUTHORIZED;
519 // Check Permissions.
520 if (PDPApiAuth.checkPermissions(clientEncoding, requestID,
522 CreateUpdateFirewallPolicyService createFirewallPolicyService = new CreateUpdateFirewallPolicyService(
523 configFirewallPolicyAPIRequest, requestID, false);
524 response = createFirewallPolicyService.getResult();
525 status = createFirewallPolicyService.getResponseCode();
527 deprecatedCounter.incrementAndGet();
528 return new ResponseEntity<>(response, status);
532 @ApiImplicitParam(name = "Authorization", required = true, paramType = "Header"),
533 @ApiImplicitParam(name = "Environment", required = true, paramType = "Header") })
534 @ApiOperation(value = "Updates a Config Firewall Policy")
535 @RequestMapping(value = "/updateFirewallConfig", method = RequestMethod.PUT)
538 public ResponseEntity<String> updateFirewallConfig(
539 @RequestBody ConfigFirewallPolicyAPIRequest configFirewallPolicyAPIRequest,
540 @RequestHeader(value = "ClientAuth", required = true) String clientEncoding,
541 @RequestHeader(value = "X-ECOMP-RequestID", required = false) String requestID) {
542 String response = null;
543 HttpStatus status = HttpStatus.UNAUTHORIZED;
544 // Check Permissions.
545 if (PDPApiAuth.checkPermissions(clientEncoding, requestID,
547 CreateUpdateFirewallPolicyService updateFirewallPolicyService = new CreateUpdateFirewallPolicyService(
548 configFirewallPolicyAPIRequest, requestID, true);
549 response = updateFirewallPolicyService.getResult();
550 status = updateFirewallPolicyService.getResponseCode();
552 deprecatedCounter.incrementAndGet();
553 return new ResponseEntity<>(response, status);
556 @ApiOperation(value = "Gets the API Services usage Information")
558 @RequestMapping(value = "/count", method = RequestMethod.GET)
559 public String getCount() {
560 return "Total Config Calls : " + configCounter + "\n"
561 + "Total Config calls made using Policy File Name: "
562 + configNameCounter + "\n" + "Total Event Calls : "
563 + eventCounter + "\nTotal Decision Calls: " + decisionCounter
564 + "\nTotal Push policy Calls: " + pushCounter
565 + "\nTotal Delete Policy Calls: " + deleteCounter
566 + "\nTotal Create Policy Calls: " + createPolicyCounter
567 + "\nTotal Update Policy Calls: " + updatePolicyCounter
568 + "\nTotal Create Dictionary Calls: " + createDictionaryCounter
569 + "\nTotal Update Dictionary Calls: " + updateDictionaryCounter
570 + "\nTotal Get Dictionary Calls: " + getDictionaryCounter
571 + "\nTotal PolicyEngine Import Calls: "
572 + policyEngineImportCounter
573 + "\nTotal Deprecated Policy Calls: " + deprecatedCounter
574 + "\nTotal Metrics Calls:" + metricCounter;
577 @ExceptionHandler({ HttpMessageNotReadableException.class })
578 public ResponseEntity<String> messageNotReadableExceptionHandler(
579 HttpServletRequest req, HttpMessageNotReadableException exception) {
580 logger.error("Request not readable: {}", exception);
581 StringBuilder message = new StringBuilder();
582 message.append(exception.getMessage());
583 if (exception.getCause() != null) {
584 message.append(" Reason Caused: "
585 + exception.getCause().getMessage());
587 return new ResponseEntity<>(message.toString(), HttpStatus.BAD_REQUEST);