@Override public BaseResult asyncCreateInstance(InstanceRequest request, User requestingUser) { logger.info( "Create instance for organization {} for subscription {}.", request.getOrganizationId(), request.getSubscriptionId()); ServiceInstance instance = null; try { final InstanceDescription descr = getInstanceDescription(request, requestingUser); instance = createPersistentServiceInstance(request, descr); timerService.initTimers(); List<LocalizedText> descriptions = descr.getDescription(); String successMsg = null; if (descriptions != null) { for (LocalizedText description : descriptions) { if (description.getLocale().equals(getLocale(requestingUser))) { successMsg = description.getText(); } } } return provResult.getSuccesfulResult(BaseResult.class, successMsg); } catch (Exception e) { logger.warn(e.getMessage(), e); return provResult.getErrorResult( BaseResult.class, e, getLocale(requestingUser), instance, null); } }
@Override public UserResult createUsers(String instanceId, List<User> users, User requestingUser) { logger.info("Create users for service instance with ID {}.", instanceId); ServiceInstance instance = null; try { instance = instanceDAO.getInstanceById(instanceId); checkInstanceAvailability(instance); final APPlatformController controller = APPlatformControllerFactory.getInstance(instance.getControllerId()); final ProvisioningSettings settings = configService.getProvisioningSettings(instance, UserMapper.toServiceUser(requestingUser)); // Forward request final InstanceStatusUsers status = controller.createUsers(instance.getInstanceId(), settings, mapToServiceUsers(users)); if (status != null) { // get modified users if (status.getChangedUsers() != null) { // merge returned users with existing users mergeServiceUsers(users, status.getChangedUsers()); } // forward call to provisioning service on application instance if (status.isInstanceProvisioningRequested()) { final ProvisioningService provisioning = provisioningFactory.getInstance(instance); final UserResult result = provisioning.createUsers(instanceId, users, requestingUser); if (provResult.isError(result)) { return result; } // Get modified users if (result.getUsers() != null) { users = result.getUsers(); } } // If everything worked well we will save all changed parameters instance.setInstanceParameters(status.getChangedParameters()); } instance.setProvisioningStatus(ProvisioningStatus.WAITING_FOR_USER_CREATION); em.persist(instance); timerService.initTimers(); final UserResult result = provResult.getOKResult(UserResult.class); result.setUsers(users); return result; } catch (Exception e) { logger.warn(e.getMessage(), e); return provResult.getErrorResult( UserResult.class, e, getLocale(requestingUser), instance, instanceId); } }
@Override public InstanceResult createInstance(InstanceRequest request, User requestingUser) { return provResult.getBaseResult( InstanceResult.class, 1, Messages.get(getLocale(requestingUser), "error_synchronous_provisioning")); }
@Override public BaseResult deactivateInstance(String instanceId, User requestingUser) { logger.info("Deactivate instance {}.", instanceId); ServiceInstance instance = null; try { instance = instanceDAO.getInstanceById(instanceId); checkInstanceAvailability(instance); final APPlatformController controller = APPlatformControllerFactory.getInstance(instance.getControllerId()); final ProvisioningSettings settings = configService.getProvisioningSettings(instance, UserMapper.toServiceUser(requestingUser)); // Forward request final InstanceStatus status = controller.deactivateInstance(instance.getInstanceId(), settings); if (status != null) { // forward call to provisioning service on application instance if (status.isInstanceProvisioningRequested()) { final ProvisioningService provisioning = provisioningFactory.getInstance(instance); final BaseResult result = provisioning.deactivateInstance(instanceId, requestingUser); if (provResult.isError(result)) { return result; } } // If everything worked well we will save all changed parameters instance.setInstanceParameters(status.getChangedParameters()); } // Update current state instance.setProvisioningStatus(ProvisioningStatus.WAITING_FOR_SYSTEM_DEACTIVATION); em.persist(instance); timerService.initTimers(); return provResult.newOkBaseResult(); } catch (Exception e) { logger.warn(e.getMessage(), e); return provResult.getErrorResult( BaseResult.class, e, getLocale(requestingUser), instance, instanceId); } }
@Override public BaseResult upgradeSubscription( String instanceId, String subscriptionId, List<ServiceParameter> parameterValues, User requestingUser) { return provResult.getBaseResult( BaseResult.class, 1, Messages.get(getLocale(requestingUser), "error_synchronous_provisioning")); }
private BaseResult modifySubscription( String instanceId, String subscriptionId, List<ServiceParameter> parameterValues, final HashMap<String, String> parameterMap, ProvisioningStatus targetStatus, User requestingUser) { ServiceInstance instance = null; try { instance = instanceDAO.getInstanceById(instanceId); instance.prepareRollback(); checkInstanceAvailability(instance); final HashMap<String, String> controllerSettings = configService.getControllerConfigurationSettings(instance.getControllerId()); final APPlatformController controller = APPlatformControllerFactory.getInstance(instance.getControllerId()); final ProvisioningSettings currentSettings = configService.getProvisioningSettings(instance, UserMapper.toServiceUser(requestingUser)); final ProvisioningSettings newSettings = new ProvisioningSettings(parameterMap, controllerSettings, instance.getDefaultLocale()); newSettings.setAuthentication(currentSettings.getAuthentication()); configService.copyCredentialsFromControllerSettings(newSettings, controllerSettings); newSettings.setRequestingUser(UserMapper.toServiceUser(requestingUser)); newSettings.setSubscriptionId(subscriptionId); // Forward modification request final InstanceStatus status = controller.modifyInstance(instance.getInstanceId(), currentSettings, newSettings); if (status != null) { // forward call to provisioning service on application instance if (status.isInstanceProvisioningRequested()) { final ProvisioningService provisioning = provisioningFactory.getInstance(instance); final List<ServiceParameter> filteredParameters = InstanceParameterFilter.getFilteredInstanceParametersForService(parameterValues); final BaseResult result = provisioning.modifySubscription( instanceId, subscriptionId, filteredParameters, requestingUser); if (provResult.isError(result)) { return result; } } // If everything worked well we will save all changed parameters instance.setInstanceParameters(status.getChangedParameters()); } instance.setProvisioningStatus(targetStatus); instance.setSubscriptionId(subscriptionId); em.persist(instance); timerService.initTimers(); return provResult.newOkBaseResult(); } catch (Exception e) { logger.warn(e.getMessage(), e); return provResult.getErrorResult( BaseResult.class, e, getLocale(requestingUser), instance, instanceId); } }