private List<ResourceImpl> getDefaultResources(String accountId) throws NotFoundException, ServerException { List<ResourceImpl> defaultResources = new ArrayList<>(); final Account account = accountManager.getById(accountId); final DefaultResourcesProvider defaultResourcesProvider = defaultResourcesProviders.get(account.getType()); if (defaultResourcesProvider != null) { defaultResources.addAll(defaultResourcesProvider.getResources(accountId)); } return defaultResources; } }
@Override public Optional<Resource> getUsedResource(String accountId) throws NotFoundException, ServerException { final Account account = accountManager.getById(accountId); final List<WorkspaceImpl> accountWorkspaces = Pages.stream( (maxItems, skipCount) -> workspaceManagerProvider .get() .getByNamespace(account.getName(), false, maxItems, skipCount)) .collect(Collectors.toList()); if (!accountWorkspaces.isEmpty()) { return Optional.of( new ResourceImpl( WorkspaceResourceType.ID, accountWorkspaces.size(), WorkspaceResourceType.UNIT)); } else { return Optional.empty(); } } }
/** * Returns list of resources which are available for usage by given account. * * @param accountId id of account * @return list of resources which are available for usage by given account * @throws NotFoundException when account with specified id was not found * @throws ServerException when some exception occurred while resources fetching */ public List<? extends Resource> getAvailableResources(String accountId) throws NotFoundException, ServerException { final Account account = accountManager.getById(accountId); final AvailableResourcesProvider availableResourcesProvider = accountTypeToAvailableResourcesProvider.get(account.getType()); if (availableResourcesProvider == null) { return defaultAvailableResourcesProvider.getAvailableResources(accountId); } return availableResourcesProvider.getAvailableResources(accountId); }
@Override public Optional<Resource> getUsedResource(String accountId) throws NotFoundException, ServerException { final Account account = accountManager.getById(accountId); final long currentlyUsedRuntimes = Pages.stream( (maxItems, skipCount) -> workspaceManagerProvider .get() .getByNamespace(account.getName(), false, maxItems, skipCount)) .filter(ws -> STOPPED != ws.getStatus()) .count(); if (currentlyUsedRuntimes > 0) { return Optional.of( new ResourceImpl( RuntimeResourceType.ID, currentlyUsedRuntimes, RuntimeResourceType.UNIT)); } else { return Optional.empty(); } } }
/** * Acquire resources lock for specified account. * * @param accountId account id to lock resources * @return lock for unlocking resources when resources operation finishes * @throws NotFoundException when account with specified {@code account id} was not found * @throws ServerException when any other error occurs */ public Unlocker lock(String accountId) throws NotFoundException, ServerException { final Account account = accountManager.getById(accountId); final ResourceLockKeyProvider resourceLockKeyProvider = accountTypeToLockProvider.get(account.getType()); String lockKey; if (resourceLockKeyProvider == null) { // this account type doesn't have custom lock provider. // Lock resources by current account lockKey = accountId; } else { lockKey = resourceLockKeyProvider.getLockKey(accountId); } return stripedLocks.writeLock(lockKey); }
@Override public Optional<Resource> getUsedResource(String accountId) throws NotFoundException, ServerException { final Account account = accountManager.getById(accountId); List<WorkspaceImpl> activeWorkspaces = Pages.stream(