use of org.onap.so.client.sniro.beans.PlacementInfo in project so by onap.
the class SniroHomingV2 method callSniro.
/**
* Generates the request payload then sends to sniro manager to perform homing and licensing for the provided
* demands
*
* @param execution
*/
public void callSniro(BuildingBlockExecution execution) {
logger.debug("Started Sniro Homing Call Sniro");
try {
GeneralBuildingBlock bb = execution.getGeneralBuildingBlock();
RequestContext requestContext = bb.getRequestContext();
RequestParameters requestParams = requestContext.getRequestParameters();
String requestId = requestContext.getMsoRequestId();
ServiceInstance serviceInstance = bb.getCustomer().getServiceSubscription().getServiceInstances().get(0);
Customer customer = bb.getCustomer();
String timeout = execution.getVariable("timeout");
if (isBlank(timeout)) {
timeout = env.getProperty("sniro.manager.timeout", "PT30M");
}
SniroManagerRequest request = new SniroManagerRequest();
RequestInfo requestInfo = buildRequestInfo(requestId, timeout);
request.setRequestInformation(requestInfo);
ServiceInfo serviceInfo = buildServiceInfo(serviceInstance);
request.setServiceInformation(serviceInfo);
PlacementInfo placementInfo = buildPlacementInfo(customer, requestParams);
List<Demand> placementDemands = buildPlacementDemands(serviceInstance);
placementInfo.setDemands(placementDemands);
request.setPlacementInformation(placementInfo);
LicenseInfo licenseInfo = new LicenseInfo();
List<Demand> licenseDemands = buildLicenseDemands(serviceInstance);
licenseInfo.setDemands(licenseDemands);
request.setLicenseInformation(licenseInfo);
if (!placementDemands.isEmpty() || !licenseDemands.isEmpty()) {
client.postDemands(request);
} else {
logger.debug(SERVICE_MISSING_DATA + "resources eligible for homing or licensing");
throw new BpmnError(UNPROCESSABLE, SERVICE_MISSING_DATA + "resources eligible for homing or licensing");
}
// Variables for ReceiveWorkflowMessage subflow
execution.setVariable("asyncCorrelator", requestId);
execution.setVariable("asyncMessageType", "SNIROResponse");
execution.setVariable("asyncTimeout", timeout);
logger.trace("Completed Sniro Homing Call Sniro");
} catch (BpmnError e) {
logger.error(EXCEPTION_OCCURRED, e);
exceptionUtil.buildAndThrowWorkflowException(execution, Integer.parseInt(e.getErrorCode()), e.getMessage(), ONAPComponents.SNIRO);
} catch (BadResponseException e) {
logger.error(EXCEPTION_OCCURRED, e);
exceptionUtil.buildAndThrowWorkflowException(execution, 400, e.getMessage(), ONAPComponents.SNIRO);
} catch (Exception e) {
logger.error(EXCEPTION_OCCURRED, e);
exceptionUtil.buildAndThrowWorkflowException(execution, INTERNAL, "Internal Error - occurred while preparing sniro request: " + e.getMessage(), ONAPComponents.SO);
}
}
use of org.onap.so.client.sniro.beans.PlacementInfo in project so by onap.
the class SniroHomingV2 method buildPlacementInfo.
/**
* Builds initial section of placement info for the homing/licensing request
*/
private PlacementInfo buildPlacementInfo(Customer customer, RequestParameters requestParams) {
PlacementInfo placementInfo = new PlacementInfo();
if (customer != null) {
logger.debug("Adding subscriber to placement information");
SubscriberInfo subscriber = new SubscriberInfo();
subscriber.setGlobalSubscriberId(customer.getGlobalCustomerId());
subscriber.setSubscriberName(customer.getSubscriberName());
subscriber.setSubscriberCommonSiteId(customer.getSubscriberCommonSiteId());
placementInfo.setSubscriberInfo(subscriber);
if (requestParams != null) {
logger.debug("Adding request parameters to placement information");
placementInfo.setRequestParameters(requestParams.toJsonString());
}
} else {
throw new BpmnError(UNPROCESSABLE, SERVICE_MISSING_DATA + "customer");
}
return placementInfo;
}
Aggregations