61f757ba64d9b164d863674bc423862125a2c671
[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
12
13 public class ServiceInstanceDeleteValidator implements RequestValidator {
14
15     @Autowired
16     AAIDataRetrieval aaiDataRetrieval;
17
18     @Override
19     public boolean shouldRunFor(String requestUri, ServiceInstancesRequest request, Actions action) {
20         return Pattern.compile("[Vv][5-8]/serviceInstances/[^/]+").matcher(requestUri).matches()
21                 && action.equals(Action.deleteInstance);
22     }
23
24     @Override
25     public Optional<String> validate(Map<String, String> instanceIdMap, ServiceInstancesRequest request,
26             Map<String, String> queryParams) {
27         if (aaiDataRetrieval.isServiceRelatedToGenericVnf(instanceIdMap.get("serviceInstanceId"))) {
28             return Optional.of("Cannot delete service it is still related to existing vf-modules");
29         } else if (aaiDataRetrieval.isServiceRelatedToNetworks(instanceIdMap.get("serviceInstanceId"))) {
30             return Optional.of("Cannot delete service it is still related to existing networks");
31         } else if (aaiDataRetrieval.isServiceRelatedToConfiguration(instanceIdMap.get("serviceInstanceId"))) {
32             return Optional.of("Cannot delete service it is still related to existing configurations");
33         } else {
34             return Optional.empty();
35         }
36     }
37 }