InstanceDescription getInstanceDescription(InstanceRequest request, User requestingUser) throws APPlatformException, BadResultException { final HashMap<String, String> parameters = createParameterMap(request.getParameterValue()); String controllerId = parameters.get(InstanceParameter.CONTROLLER_ID); if (controllerId == null) { logger.warn("The technical service does not define a controller implementation"); throw new BadResultException(Messages.get(request.getDefaultLocale(), "error_configuration")); } HashMap<String, String> controllerSettings = configService.getControllerConfigurationSettings(controllerId); final ProvisioningSettings settings = new ProvisioningSettings(parameters, controllerSettings, request.getDefaultLocale()); settings.setOrganizationId(request.getOrganizationId()); settings.setOrganizationName(request.getOrganizationName()); settings.setSubscriptionId(request.getSubscriptionId()); settings.setBesLoginUrl(request.getLoginUrl()); ServiceInstance si = new ServiceInstance(); si.setInstanceParameters(createParameters(si, parameters)); si.setControllerId(controllerId); settings.setAuthentication( configService.getAuthenticationForBESTechnologyManager(controllerId, si, null)); configService.copyCredentialsFromControllerSettings(settings, controllerSettings); settings.setRequestingUser(UserMapper.toServiceUser(requestingUser)); final APPlatformController controller = APPlatformControllerFactory.getInstance(controllerId); final InstanceDescription descr = controller.createInstance(settings); // Check whether instanceId is filled and unique if (Strings.isEmpty(descr.getInstanceId())) { logger.error("Instance ID not specified by controller."); throw new BadResultException( Messages.get(request.getDefaultLocale(), "error_instanceid_empty")); } if (instanceDAO.exists(descr.getInstanceId())) { logger.error("Instance ID " + descr.getInstanceId() + " already used by another instance."); throw new BadResultException( Messages.get( request.getDefaultLocale(), "error_instanceid_exists", descr.getInstanceId())); } return descr; }
ServiceInstance createPersistentServiceInstance( InstanceRequest request, InstanceDescription descr) throws BadResultException { final HashMap<String, String> parameters = createParameterMap(request.getParameterValue()); String controllerId = parameters.get(InstanceParameter.CONTROLLER_ID); ServiceInstance si = new ServiceInstance(); si.setOrganizationId(request.getOrganizationId()); si.setOrganizationName(request.getOrganizationName()); si.setSubscriptionId(request.getSubscriptionId()); si.setDefaultLocale(request.getDefaultLocale()); si.setProvisioningStatus(ProvisioningStatus.WAITING_FOR_SYSTEM_CREATION); si.setControllerId(controllerId); si.setBesLoginURL(request.getLoginUrl()); si.setRequestTime(System.currentTimeMillis()); si.setInstanceParameters(createParameters(si, descr.getChangedParameters())); si.setServiceBaseURL(descr.getBaseUrl()); si.setInstanceId(descr.getInstanceId()); em.persist(si); return si; }