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,
126 @ApiImplicitParam(name = "Authorization", required = true, paramType = "Header"),
127 @ApiImplicitParam(name = "Environment", required = true, paramType = "Header") })
128 @ApiOperation(value = "Gets the configuration from the PolicyDecisionPoint(PDP) using PolicyName")
129 @RequestMapping(value = "/getConfigByPolicyName", method = RequestMethod.POST)
132 public ResponseEntity<Collection<PolicyConfig>> getConfigByPolicyName(
133 @RequestBody ConfigNameRequest configNameRequest,
134 @RequestHeader(value = "ClientAuth", required = true) String clientEncoding,
135 @RequestHeader(value = "X-ECOMP-RequestID", required = false) String requestID) {
136 Collection<PolicyConfig> policyConfig = null;
137 HttpStatus status = HttpStatus.UNAUTHORIZED;
138 // Check Permissions.
139 if (PDPApiAuth.checkPermissions(clientEncoding, requestID,
140 "getConfigByPolicyName")) {
141 ConfigRequestParameters configRequestParameters = new ConfigRequestParameters();
142 configRequestParameters.setPolicyName(configNameRequest
144 GetConfigService getConfigService = new GetConfigService(
145 configRequestParameters, requestID);
146 policyConfig = getConfigService.getResult();
147 status = getConfigService.getResponseCode();
149 configNameCounter.incrementAndGet();
150 return new ResponseEntity<Collection<PolicyConfig>>(policyConfig,
155 @ApiImplicitParam(name = "Authorization", required = true, paramType = "Header"),
156 @ApiImplicitParam(name = "Environment", required = true, paramType = "Header") })
157 @ApiOperation(value = "Gets the list of configuration policies from the PDP")
158 @RequestMapping(value = "/listConfig", method = RequestMethod.POST)
160 public ResponseEntity<Collection<String>> listConfig(
161 @RequestBody ConfigRequestParameters configRequestParameters,
162 @RequestHeader(value = "ClientAuth", required = true) String clientEncoding,
163 @RequestHeader(value = "X-ECOMP-RequestID", required = false) String requestID) {
164 Collection<String> results = null;
165 HttpStatus status = HttpStatus.UNAUTHORIZED;
166 // Check Permissions.
168 .checkPermissions(clientEncoding, requestID, "listConfig")) {
169 ListConfigService listConfigService = new ListConfigService(
170 configRequestParameters, requestID);
171 results = listConfigService.getResult();
172 status = listConfigService.getResponseCode();
174 configCounter.incrementAndGet();
175 return new ResponseEntity<Collection<String>>(results, status);
179 @ApiImplicitParam(name ="Authorization", required = true, paramType = "Header"),
180 @ApiImplicitParam(name ="Environment", required = true, paramType = "Header")
182 @ApiOperation(value= "Gets the policy metrics from the PolicyAccessPoint(PAP)")
183 @RequestMapping(value="/getMetrics", method=RequestMethod.GET)
185 public ResponseEntity<MetricsResponse> getMetrics(
186 @RequestHeader(value="ClientAuth", required=true)String clientEncoding,
187 @RequestHeader(value="X-ECOMP-RequestID", required=false)String requestID) {
188 MetricsResponse response = null;
189 HttpStatus status = HttpStatus.UNAUTHORIZED;
190 // Check Permissions.
191 if(PDPApiAuth.checkPermissions(clientEncoding, requestID, "getMetrics")){
192 GetMetricsService getMetricsService = new GetMetricsService(requestID);
193 response = getMetricsService.getResult();
194 status = getMetricsService.getResponseCode();
196 metricCounter.incrementAndGet();
197 return new ResponseEntity<MetricsResponse>(response, status);
201 @ApiImplicitParam(name = "Authorization", required = true, paramType = "Header"),
202 @ApiImplicitParam(name = "Environment", required = true, paramType = "Header") })
203 @ApiOperation(value = "Sends the Events specified to the Policy Engine")
204 @RequestMapping(value = "/sendEvent", method = RequestMethod.POST)
206 public ResponseEntity<Collection<PolicyResponse>> sendEvent(
207 @RequestBody EventRequestParameters eventRequestParameters,
208 @RequestHeader(value = "ClientAuth", required = true) String clientEncoding,
209 @RequestHeader(value = "X-ECOMP-RequestID", required = false) String requestID) {
210 Collection<PolicyResponse> policyResponse = null;
211 HttpStatus status = HttpStatus.UNAUTHORIZED;
212 // Check Permissions.
213 if (PDPApiAuth.checkPermissions(clientEncoding, requestID, "sendEvent")) {
214 SendEventService sendEventService = new SendEventService(
215 eventRequestParameters, requestID);
216 policyResponse = sendEventService.getResult();
217 status = sendEventService.getResponseCode();
219 eventCounter.incrementAndGet();
220 return new ResponseEntity<Collection<PolicyResponse>>(policyResponse,
225 @ApiImplicitParam(name = "Authorization", required = true, paramType = "Header"),
226 @ApiImplicitParam(name = "Environment", required = true, paramType = "Header") })
227 @ApiOperation(value = "Gets the Decision using specified decision parameters")
228 @RequestMapping(value = "/getDecision", method = RequestMethod.POST)
230 public ResponseEntity<DecisionResponse> getDecision(
231 @RequestBody DecisionRequestParameters decisionRequestParameters,
232 @RequestHeader(value = "ClientAuth", required = true) String clientEncoding,
233 @RequestHeader(value = "X-ECOMP-RequestID", required = false) String requestID) {
234 DecisionResponse decisionResponse = null;
235 HttpStatus status = HttpStatus.UNAUTHORIZED;
236 // Check Permissions.
237 if (PDPApiAuth.checkPermissions(clientEncoding, requestID,
239 GetDecisionService getDecisionService = new GetDecisionService(
240 decisionRequestParameters, requestID);
241 decisionResponse = getDecisionService.getResult();
242 status = getDecisionService.getResponseCode();
244 decisionCounter.incrementAndGet();
245 return new ResponseEntity<DecisionResponse>(decisionResponse, status);
249 @ApiImplicitParam(name = "Authorization", required = true, paramType = "Header"),
250 @ApiImplicitParam(name = "Environment", required = true, paramType = "Header") })
251 @ApiOperation(value = "Pushes the specified policy to the PDP Group.")
252 @RequestMapping(value = "/pushPolicy", method = RequestMethod.PUT)
254 public ResponseEntity<String> pushPolicy(
255 @RequestBody PushPolicyParameters pushPolicyParameters,
256 @RequestHeader(value = "ClientAuth", required = true) String clientEncoding,
257 @RequestHeader(value = "X-ECOMP-RequestID", required = false) String requestID) {
258 String response = null;
259 HttpStatus status = HttpStatus.UNAUTHORIZED;
260 // Check Permissions.
262 .checkPermissions(clientEncoding, requestID, "pushPolicy")) {
263 PushPolicyService pushPolicyService = new PushPolicyService(
264 pushPolicyParameters, requestID);
265 response = pushPolicyService.getResult();
266 status = pushPolicyService.getResponseCode();
268 pushCounter.incrementAndGet();
269 return new ResponseEntity<String>(response, status);
273 @ApiImplicitParam(name = "Authorization", required = true, paramType = "Header"),
274 @ApiImplicitParam(name = "Environment", required = true, paramType = "Header") })
275 @ApiOperation(value = "Deletes the specified policy from the PDP Group or PAP.")
276 @RequestMapping(value = "/deletePolicy", method = RequestMethod.DELETE)
278 public ResponseEntity<String> deletePolicy(
279 @RequestBody DeletePolicyParameters deletePolicyParameters,
280 @RequestHeader(value = "ClientAuth", required = true) String clientEncoding,
281 @RequestHeader(value = "X-ECOMP-RequestID", required = false) String requestID) {
282 String response = null;
283 HttpStatus status = HttpStatus.UNAUTHORIZED;
284 // Check Permissions.
285 if (PDPApiAuth.checkPermissions(clientEncoding, requestID,
287 DeletePolicyService deletePolicyService = new DeletePolicyService(
288 deletePolicyParameters, requestID);
289 response = deletePolicyService.getResult();
290 status = deletePolicyService.getResponseCode();
292 deleteCounter.incrementAndGet();
293 return new ResponseEntity<String>(response, status);
297 @ApiImplicitParam(name = "Authorization", required = true, paramType = "Header"),
298 @ApiImplicitParam(name = "Environment", required = true, paramType = "Header") })
299 @ApiOperation(value = "Creates a Policy based on given Policy Parameters.")
300 @RequestMapping(value = "/createPolicy", method = RequestMethod.PUT)
302 public ResponseEntity<String> createPolicy(
303 @RequestBody PolicyParameters policyParameters,
304 @RequestHeader(value = "ClientAuth", required = true) String clientEncoding,
305 @RequestHeader(value = "X-ECOMP-RequestID", required = false) String requestID) {
306 String response = null;
307 HttpStatus status = HttpStatus.UNAUTHORIZED;
308 // Check Permissions.
309 if (PDPApiAuth.checkPermissions(clientEncoding, requestID,
311 CreateUpdatePolicyService createPolicyService;
313 createPolicyService = (CreateUpdatePolicyService) XACMLPdpServlet.getCreateUpdatePolicyConstructor().newInstance(
314 policyParameters, requestID, false);
315 response = createPolicyService.getResult();
316 status = createPolicyService.getResponseCode();
317 } catch (InstantiationException | IllegalAccessException
318 | IllegalArgumentException | InvocationTargetException e) {
319 LOGGER.error(e.getMessage());
320 response = "Problem with CreateUpdate Policy Service. ";
321 status = HttpStatus.INTERNAL_SERVER_ERROR;
324 createPolicyCounter.incrementAndGet();
325 return new ResponseEntity<String>(response, status);
329 @ApiImplicitParam(name = "Authorization", required = true, paramType = "Header"),
330 @ApiImplicitParam(name = "Environment", required = true, paramType = "Header") })
331 @ApiOperation(value = "Updates a Policy based on given Policy Parameters.")
332 @RequestMapping(value = "/updatePolicy", method = RequestMethod.PUT)
334 public ResponseEntity<String> updatePolicy(
335 @RequestBody PolicyParameters policyParameters,
336 @RequestHeader(value = "ClientAuth", required = true) String clientEncoding,
337 @RequestHeader(value = "X-ECOMP-RequestID", required = false) String requestID) {
338 String response = null;
339 HttpStatus status = HttpStatus.UNAUTHORIZED;
340 // Check Permissions.
341 if (PDPApiAuth.checkPermissions(clientEncoding, requestID,
343 CreateUpdatePolicyService updatePolicyService;
345 updatePolicyService = (CreateUpdatePolicyService) XACMLPdpServlet.getCreateUpdatePolicyConstructor().newInstance(
346 policyParameters, requestID, true);
347 response = updatePolicyService.getResult();
348 status = updatePolicyService.getResponseCode();
349 } catch (InstantiationException | IllegalAccessException
350 | IllegalArgumentException | InvocationTargetException e) {
351 LOGGER.error(e.getMessage());
352 response = "Problem with CreateUpdate Policy Service. ";
353 status = HttpStatus.INTERNAL_SERVER_ERROR;
356 updatePolicyCounter.incrementAndGet();
357 return new ResponseEntity<String>(response, status);
361 @ApiImplicitParam(name = "Authorization", required = true, paramType = "Header"),
362 @ApiImplicitParam(name = "Environment", required = true, paramType = "Header") })
363 @ApiOperation(value = "Creates a Dictionary Item for a specific dictionary based on given Parameters.")
364 @RequestMapping(value = "/createDictionaryItem", method = RequestMethod.PUT)
366 public ResponseEntity<String> createDictionaryItem(
367 @RequestBody DictionaryParameters dictionaryParameters,
368 @RequestHeader(value = "ClientAuth", required = true) String clientEncoding,
369 @RequestHeader(value = "X-ECOMP-RequestID", required = false) String requestID) {
370 String response = null;
371 HttpStatus status = HttpStatus.UNAUTHORIZED;
372 // Check Permissions.
373 if (PDPApiAuth.checkPermissions(clientEncoding, requestID,
374 "createDictionary")) {
375 CreateUpdateDictionaryService createDictionaryService = new CreateUpdateDictionaryService(
376 dictionaryParameters, requestID, false);
377 response = createDictionaryService.getResult();
378 status = createDictionaryService.getResponseCode();
380 createDictionaryCounter.incrementAndGet();
381 return new ResponseEntity<String>(response, status);
385 @ApiImplicitParam(name = "Authorization", required = true, paramType = "Header"),
386 @ApiImplicitParam(name = "Environment", required = true, paramType = "Header") })
387 @ApiOperation(value = "Updates a Dictionary Item for a specific dictionary based on given Parameters.")
388 @RequestMapping(value = "/updateDictionaryItem", method = RequestMethod.PUT)
390 public ResponseEntity<String> updateDictionaryItem(
391 @RequestBody DictionaryParameters dictionaryParameters,
392 @RequestHeader(value = "ClientAuth", required = true) String clientEncoding,
393 @RequestHeader(value = "X-ECOMP-RequestID", required = false) String requestID) {
394 String response = null;
395 HttpStatus status = HttpStatus.UNAUTHORIZED;
396 // Check Permissions.
397 if (PDPApiAuth.checkPermissions(clientEncoding, requestID,
398 "updateDictionary")) {
399 CreateUpdateDictionaryService updateDictionaryService = new CreateUpdateDictionaryService(
400 dictionaryParameters, requestID, true);
401 response = updateDictionaryService.getResult();
402 status = updateDictionaryService.getResponseCode();
404 updateDictionaryCounter.incrementAndGet();
405 return new ResponseEntity<String>(response, status);
409 @ApiImplicitParam(name = "Authorization", required = true, paramType = "Header"),
410 @ApiImplicitParam(name = "Environment", required = true, paramType = "Header") })
411 @ApiOperation(value = "Gets the dictionary items from the PAP")
412 @RequestMapping(value = "/getDictionaryItems", method = RequestMethod.POST)
414 public ResponseEntity<DictionaryResponse> getDictionaryItems(
415 @RequestBody DictionaryParameters dictionaryParameters,
416 @RequestHeader(value = "ClientAuth", required = true) String clientEncoding,
417 @RequestHeader(value = "X-ECOMP-RequestID", required = false) String requestID) {
418 DictionaryResponse dictionaryResponse = null;
419 HttpStatus status = HttpStatus.UNAUTHORIZED;
420 // Check Permissions.
421 if (PDPApiAuth.checkPermissions(clientEncoding, requestID,
423 GetDictionaryService getDictionaryService = new GetDictionaryService(
424 dictionaryParameters, requestID);
425 dictionaryResponse = getDictionaryService.getResult();
426 status = getDictionaryService.getResponseCode();
428 getDictionaryCounter.incrementAndGet();
429 return new ResponseEntity<DictionaryResponse>(dictionaryResponse,
434 @ApiImplicitParam(name = "Authorization", required = true, paramType = "Header"),
435 @ApiImplicitParam(name = "Environment", required = true, paramType = "Header") })
436 @ApiOperation(value = "Imports Policy based on the parameters which represent the service used to create a policy Service.")
437 @RequestMapping(value = "/policyEngineImport", method = RequestMethod.POST)
439 public ResponseEntity<String> policyEngineImport(
440 @RequestParam("importParametersJson") String importParametersJson,
441 @RequestParam("file") MultipartFile file,
442 @RequestHeader(value = "ClientAuth", required = true) String clientEncoding,
443 @RequestHeader(value = "X-ECOMP-RequestID", required = false) String requestID) {
444 String response = null;
445 HttpStatus status = HttpStatus.UNAUTHORIZED;
446 // Check Permissions.
447 if (PDPApiAuth.checkPermissions(clientEncoding, requestID,
448 "policyEngineImport")) {
449 PolicyEngineImportService policyEngineImportService = new PolicyEngineImportService(
450 importParametersJson, file, requestID);
451 response = policyEngineImportService.getResult();
452 status = policyEngineImportService.getResponseCode();
454 policyEngineImportCounter.incrementAndGet();
455 return new ResponseEntity<String>(response, status);
459 @ApiImplicitParam(name = "Authorization", required = true, paramType = "Header"),
460 @ApiImplicitParam(name = "Environment", required = true, paramType = "Header") })
461 @ApiOperation(value = "Creates a Config Policy based on given Policy Parameters.")
462 @RequestMapping(value = "/createConfig", method = RequestMethod.PUT)
465 public ResponseEntity<String> createConfig(
466 @RequestBody ConfigPolicyAPIRequest configPolicyAPIRequest,
467 @RequestHeader(value = "ClientAuth", required = true) String clientEncoding,
468 @RequestHeader(value = "X-ECOMP-RequestID", required = false) String requestID) {
469 String response = null;
470 HttpStatus status = HttpStatus.UNAUTHORIZED;
471 // Check Permissions.
472 if (PDPApiAuth.checkPermissions(clientEncoding, requestID,
474 CreateUpdateConfigPolicyService createPolicyService = new CreateUpdateConfigPolicyService(
475 configPolicyAPIRequest, requestID, false);
476 response = createPolicyService.getResult();
477 status = createPolicyService.getResponseCode();
479 deprecatedCounter.incrementAndGet();
480 return new ResponseEntity<String>(response, status);
484 @ApiImplicitParam(name = "Authorization", required = true, paramType = "Header"),
485 @ApiImplicitParam(name = "Environment", required = true, paramType = "Header") })
486 @ApiOperation(value = "Updates a Config Policy based on given Policy Parameters.")
487 @RequestMapping(value = "/updateConfig", method = RequestMethod.PUT)
490 public ResponseEntity<String> updateConfig(
491 @RequestBody ConfigPolicyAPIRequest configPolicyAPIRequest,
492 @RequestHeader(value = "ClientAuth", required = true) String clientEncoding,
493 @RequestHeader(value = "X-ECOMP-RequestID", required = false) String requestID) {
494 String response = null;
495 HttpStatus status = HttpStatus.UNAUTHORIZED;
496 // Check Permissions.
497 if (PDPApiAuth.checkPermissions(clientEncoding, requestID,
499 CreateUpdateConfigPolicyService updatePolicyService = new CreateUpdateConfigPolicyService(
500 configPolicyAPIRequest, requestID, true);
501 response = updatePolicyService.getResult();
502 status = updatePolicyService.getResponseCode();
504 deprecatedCounter.incrementAndGet();
505 return new ResponseEntity<String>(response, status);
509 @ApiImplicitParam(name = "Authorization", required = true, paramType = "Header"),
510 @ApiImplicitParam(name = "Environment", required = true, paramType = "Header") })
511 @ApiOperation(value = "Creates a Config Firewall Policy")
512 @RequestMapping(value = "/createFirewallConfig", method = RequestMethod.PUT)
515 public ResponseEntity<String> createFirewallConfig(
516 @RequestBody ConfigFirewallPolicyAPIRequest configFirewallPolicyAPIRequest,
517 @RequestHeader(value = "ClientAuth", required = true) String clientEncoding,
518 @RequestHeader(value = "X-ECOMP-RequestID", required = false) String requestID) {
519 String response = null;
520 HttpStatus status = HttpStatus.UNAUTHORIZED;
521 // Check Permissions.
522 if (PDPApiAuth.checkPermissions(clientEncoding, requestID,
524 CreateUpdateFirewallPolicyService createFirewallPolicyService = new CreateUpdateFirewallPolicyService(
525 configFirewallPolicyAPIRequest, requestID, false);
526 response = createFirewallPolicyService.getResult();
527 status = createFirewallPolicyService.getResponseCode();
529 deprecatedCounter.incrementAndGet();
530 return new ResponseEntity<String>(response, status);
534 @ApiImplicitParam(name = "Authorization", required = true, paramType = "Header"),
535 @ApiImplicitParam(name = "Environment", required = true, paramType = "Header") })
536 @ApiOperation(value = "Updates a Config Firewall Policy")
537 @RequestMapping(value = "/updateFirewallConfig", method = RequestMethod.PUT)
540 public ResponseEntity<String> updateFirewallConfig(
541 @RequestBody ConfigFirewallPolicyAPIRequest configFirewallPolicyAPIRequest,
542 @RequestHeader(value = "ClientAuth", required = true) String clientEncoding,
543 @RequestHeader(value = "X-ECOMP-RequestID", required = false) String requestID) {
544 String response = null;
545 HttpStatus status = HttpStatus.UNAUTHORIZED;
546 // Check Permissions.
547 if (PDPApiAuth.checkPermissions(clientEncoding, requestID,
549 CreateUpdateFirewallPolicyService updateFirewallPolicyService = new CreateUpdateFirewallPolicyService(
550 configFirewallPolicyAPIRequest, requestID, true);
551 response = updateFirewallPolicyService.getResult();
552 status = updateFirewallPolicyService.getResponseCode();
554 deprecatedCounter.incrementAndGet();
555 return new ResponseEntity<String>(response, status);
558 @ApiOperation(value = "Gets the API Services usage Information")
560 @RequestMapping(value = "/count", method = RequestMethod.GET)
561 public String getCount() {
562 return "Total Config Calls : " + configCounter + "\n"
563 + "Total Config calls made using Policy File Name: "
564 + configNameCounter + "\n" + "Total Event Calls : "
565 + eventCounter + "\nTotal Decision Calls: " + decisionCounter
566 + "\nTotal Push policy Calls: " + pushCounter
567 + "\nTotal Delete Policy Calls: " + deleteCounter
568 + "\nTotal Create Policy Calls: " + createPolicyCounter
569 + "\nTotal Update Policy Calls: " + updatePolicyCounter
570 + "\nTotal Create Dictionary Calls: " + createDictionaryCounter
571 + "\nTotal Update Dictionary Calls: " + updateDictionaryCounter
572 + "\nTotal Get Dictionary Calls: " + getDictionaryCounter
573 + "\nTotal PolicyEngine Import Calls: "
574 + policyEngineImportCounter
575 + "\nTotal Deprecated Policy Calls: " + deprecatedCounter
576 + "\nTotal Metrics Calls:" + metricCounter;
579 @ExceptionHandler({ HttpMessageNotReadableException.class })
580 public ResponseEntity<String> messageNotReadableExceptionHandler(
581 HttpServletRequest req, HttpMessageNotReadableException exception) {
582 LOGGER.error("Request not readable: {}", exception);
583 StringBuilder message = new StringBuilder();
584 message.append(exception.getMessage());
585 if (exception.getCause() != null) {
586 message.append(" Reason Caused: "
587 + exception.getCause().getMessage());
589 return new ResponseEntity<>(message.toString(), HttpStatus.BAD_REQUEST);