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