class VnfmAdapterCreateVnfTask {

    public void buildCreateVnfRequest(final BuildingBlockExecution execution) {
        try {
            LOGGER.debug("Executing buildCreateVnfRequest  ...");

            final GeneralBuildingBlock buildingBlock = execution.getGeneralBuildingBlock();
            final CloudRegion cloudRegion = buildingBlock.getCloudRegion();

            final GenericVnf vnf = extractPojosForBB.extractByKey(execution, GENERIC_VNF_ID);
            final ModelInfoGenericVnf modelInfoGenericVnf = vnf.getModelInfoGenericVnf();

            final InputParameter inputParameter = getInputParameter(execution);

            final CreateVnfRequest createVnfRequest = new CreateVnfRequest();

            createVnfRequest.setName(getName(vnf.getVnfName(), modelInfoGenericVnf.getModelInstanceName()));
            createVnfRequest.setTenant(getTenant(cloudRegion));
            createVnfRequest.setAdditionalParams(inputParameter.getAdditionalParams());
            createVnfRequest.setExternalVirtualLinks(inputParameter.getExtVirtualLinks());

            LOGGER.info("CreateVnfRequest : {}", createVnfRequest);

            execution.setVariable(CREATE_VNF_REQUEST_PARAM_NAME, createVnfRequest);

            LOGGER.debug("Finished executing buildCreateVnfRequest ...");
        } catch (final Exception exception) {
            LOGGER.error("Unable to execute buildCreateVnfRequest", exception);
            exceptionUtil.buildAndThrowWorkflowException(execution, 1200, exception);
        }
    }

    @Autowired public  VnfmAdapterCreateVnfTask(final ExceptionBuilder exceptionUtil, final ExtractPojosForBB extractPojosForBB,
            final VnfmAdapterServiceProvider vnfmAdapterServiceProvider);

}