843d94ce6cf4a01b49b7485e91e7c82ff580b5cb
[so.git] /
1 package org.onap.so.apihandlerinfra.infra.rest.validators;
2
3 import java.util.Map;
4 import java.util.Optional;
5 import java.util.regex.Pattern;
6 import org.onap.so.apihandlerinfra.Action;
7 import org.onap.so.apihandlerinfra.Actions;
8 import org.onap.so.apihandlerinfra.infra.rest.AAIDataRetrieval;
9 import org.onap.so.serviceinstancebeans.ServiceInstancesRequest;
10 import org.springframework.beans.factory.annotation.Autowired;
11 import org.springframework.stereotype.Component;
12
13
14 @Component
15 public class ServiceInstanceDeleteValidator implements RequestValidator {
16
17     @Autowired
18     AAIDataRetrieval aaiDataRetrieval;
19
20     @Override
21     public boolean shouldRunFor(String requestUri, ServiceInstancesRequest request, Actions action) {
22         boolean isALaCarte = false;
23         if (request.getRequestDetails() != null && request.getRequestDetails().getRequestParameters() != null) {
24             if (request.getRequestDetails().getRequestParameters().getALaCarte() == null) {
25                 isALaCarte = false;
26             } else {
27                 isALaCarte = request.getRequestDetails().getRequestParameters().getALaCarte();
28             }
29
30         }
31         return Pattern.compile("[Vv][5-8]/serviceInstances/[^/]+").matcher(requestUri).matches()
32                 && action.equals(Action.deleteInstance) && isALaCarte;
33     }
34
35     @Override
36     public Optional<String> validate(Map<String, String> instanceIdMap, ServiceInstancesRequest request,
37             Map<String, String> queryParams) {
38         if (aaiDataRetrieval.isServiceRelatedToGenericVnf(instanceIdMap.get("serviceInstanceId"))) {
39             return Optional.of("Cannot delete service it is still related to existing vf-modules");
40         } else if (aaiDataRetrieval.isServiceRelatedToNetworks(instanceIdMap.get("serviceInstanceId"))) {
41             return Optional.of("Cannot delete service it is still related to existing networks");
42         } else if (aaiDataRetrieval.isServiceRelatedToConfiguration(instanceIdMap.get("serviceInstanceId"))) {
43             return Optional.of("Cannot delete service it is still related to existing configurations");
44         } else {
45             return Optional.empty();
46         }
47     }
48 }