blob: b706be92cb951a56b725c2afa80bdcdc7c274177 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
|
package org.onap.so.bpmn.infrastructure.vfmodule;
import java.util.Optional;
import org.onap.aaiclient.client.aai.AAIResourcesClient;
import org.onap.aaiclient.client.aai.entities.AAIResultWrapper;
import org.onap.aaiclient.client.aai.entities.Relationships;
import org.onap.aaiclient.client.aai.entities.uri.AAIPluralResourceUri;
import org.onap.aaiclient.client.aai.entities.uri.AAIResourceUri;
import org.onap.aaiclient.client.aai.entities.uri.AAIUriFactory;
import org.onap.aaiclient.client.generated.fluentbuilders.AAIFluentTypeBuilder;
import org.onap.aaiclient.client.generated.fluentbuilders.AAIFluentTypeBuilder.Types;
import org.onap.so.bpmn.common.BuildingBlockExecution;
import org.onap.so.bpmn.servicedecomposition.bbobjects.CloudRegion;
import org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf;
import org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule;
import org.onap.so.bpmn.servicedecomposition.entities.GeneralBuildingBlock;
import org.onap.so.bpmn.servicedecomposition.entities.ResourceKey;
import org.onap.so.bpmn.servicedecomposition.tasks.ExtractPojosForBB;
import org.onap.so.client.exception.ExceptionBuilder;
import org.onap.so.cloud.resource.beans.CloudInformation;
import org.onap.so.cloud.resource.beans.NodeType;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
@Component
public class CreateVFModule {
private static final Logger logger = LoggerFactory.getLogger(CreateVFModule.class);
@Autowired
protected ExceptionBuilder exceptionUtil;
@Autowired
protected ExtractPojosForBB extractPojosForBB;
public void createInventoryVariable(BuildingBlockExecution execution) {
try {
GeneralBuildingBlock gBBInput = execution.getGeneralBuildingBlock();
VfModule vfModule = extractPojosForBB.extractByKey(execution, ResourceKey.VF_MODULE_ID);
GenericVnf vnf = extractPojosForBB.extractByKey(execution, ResourceKey.GENERIC_VNF_ID);
CloudInformation cloudInformation = new CloudInformation();
cloudInformation.setOwner(gBBInput.getCloudRegion().getCloudOwner());
cloudInformation.setRegionId(gBBInput.getCloudRegion().getLcpCloudRegionId());
String tenantId = gBBInput.getTenant().getTenantId();
if (tenantId == null) {
tenantId = gBBInput.getCloudRegion().getTenantId();
}
cloudInformation.setTenantId(tenantId);
cloudInformation.setTenantName(gBBInput.getTenant().getTenantName());
cloudInformation.setTenantContext(gBBInput.getTenant().getTenantContext());
cloudInformation.setTemplateInstanceId(execution.getVariable("heatStackId"));
cloudInformation.setNodeType(getNodeType(gBBInput.getCloudRegion()));
cloudInformation.setVnfName(vnf.getVnfName());
cloudInformation.setVnfId(vnf.getVnfId());
cloudInformation.setVfModuleId(vfModule.getVfModuleId());
execution.setVariable("cloudInformation", cloudInformation);
} catch (Exception e) {
logger.error("Error building CloudInformation Object for NC Inventory", e);
exceptionUtil.buildAndThrowWorkflowException(execution, 7000, e);
}
}
protected NodeType getNodeType(CloudRegion cloudRegion) {
AAIResourceUri cloudRegionUri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.cloudInfrastructure()
.cloudRegion(cloudRegion.getCloudOwner(), cloudRegion.getLcpCloudRegionId()));
AAIResourcesClient client = getAAIClient();
Optional<Relationships> relationships = client.get(cloudRegionUri).getRelationships();
if (relationships.isPresent()) {
AAIPluralResourceUri networkTechsGreenfieldUri = AAIUriFactory
.createResourceUri(AAIFluentTypeBuilder.cloudInfrastructure()
.cloudRegion(cloudRegion.getCloudOwner(), cloudRegion.getLcpCloudRegionId()))
.relatedTo(Types.NETWORK_TECHNOLOGIES.getFragment())
.queryParam("network-technology-name", NodeType.GREENFIELD.getNetworkTechnologyName());
AAIResultWrapper networkTechsGreenfield = client.get(networkTechsGreenfieldUri);
if (networkTechsGreenfield != null && !networkTechsGreenfield.isEmpty()) {
return NodeType.GREENFIELD;
}
}
return NodeType.BROWNFIELD;
}
protected AAIResourcesClient getAAIClient() {
return new AAIResourcesClient();
}
}
|