c457034eca182a1e388dd89ffe26a5b1a110fcda
[so.git] / bpmn / so-bpmn-tasks / src / main / java / org / onap / so / bpmn / infrastructure / validations / CloudRegionOrchestrationValidator.java
1 package org.onap.so.bpmn.infrastructure.validations;
2
3 import java.util.Optional;
4 import java.util.regex.Pattern;
5
6 import org.onap.so.bpmn.common.BuildingBlockExecution;
7 import org.onap.so.bpmn.common.validation.PreBuildingBlockValidator;
8 import org.onap.so.bpmn.common.validation.Skip;
9 import org.onap.so.bpmn.servicedecomposition.bbobjects.CloudRegion;
10 import org.onap.so.client.exception.ExceptionBuilder;
11 import org.slf4j.Logger;
12 import org.slf4j.LoggerFactory;
13 import org.springframework.beans.factory.annotation.Autowired;
14 import org.springframework.stereotype.Component;
15
16 @Component
17 @Skip
18 public class CloudRegionOrchestrationValidator implements PreBuildingBlockValidator {
19
20         private static Logger logger = LoggerFactory.getLogger(CloudRegionOrchestrationValidator.class);
21         private final Pattern pattern = Pattern.compile("(?:Activate|Assign|Create|Deactivate|Delete|Unassign|Update)(?:Network|Vnf|VfModule|VolumeGroup|FabricConfiguration)BB");
22         
23         @Autowired
24         private ExceptionBuilder exceptionBuilder;
25
26         @Override
27         public boolean shouldRunFor(String bbName) {
28                 return pattern.matcher(bbName).find();
29         }
30                 
31         @Override
32         public Optional<String> validate(BuildingBlockExecution execution) {
33                 String msg = null;
34                 try {
35                         CloudRegion cloudRegion = execution.getGeneralBuildingBlock().getCloudRegion();
36                         if (Boolean.TRUE.equals(cloudRegion.getOrchestrationDisabled())) {
37                                 msg = String.format("Error: The request has failed due to orchestration currently disabled for the target cloud region %s for cloud owner %s", 
38                                                 cloudRegion.getLcpCloudRegionId(), cloudRegion.getCloudOwner());
39                                 logger.error(msg);
40                                 return Optional.ofNullable(msg);
41                         }
42                 }
43                 catch(Exception e) {
44                         logger.error("failed to validate", e);
45                         exceptionBuilder.buildAndThrowWorkflowException(execution, 7000, e);    
46                 }
47                 return Optional.empty();
48         }
49
50 }