@Override public long getEntityOwnerId() { Volume volume = _entityMgr.findById(Volume.class, getVolumeId()); if (volume == null) { throw new InvalidParameterValueException("Unable to find volume by id=" + volumeId); } Account account = _accountService.getAccount(volume.getAccountId()); // Can create templates for enabled projects/accounts only if (account.getType() == Account.ACCOUNT_TYPE_PROJECT) { Project project = _projectService.findByProjectAccountId(volume.getAccountId()); if (project.getState() != Project.State.Active) { throw new PermissionDeniedException( "Can't add resources to the project id=" + project.getId() + " in state=" + project.getState() + " as it's no longer active"); } } else if (account.getState() == Account.State.disabled) { throw new PermissionDeniedException("The owner of template is disabled: " + account); } return volume.getAccountId(); }
@Override public void create() throws ResourceAllocationException { UserContext.current().setEventDetails("Project Name: " + getName()); Project project = _projectService.createProject(getName(), getDisplayText(), getAccountName(), getDomainId()); if (project != null) { this.setEntityId(project.getId()); } else { throw new ServerApiException(BaseCmd.INTERNAL_ERROR, "Failed to create a project"); } }
@Override public long getEntityOwnerId() { final Long volumeId = getVolumeId(); final Long snapshotId = getSnapshotId(); final Account callingAccount = CallContext.current().getCallingAccount(); if (volumeId != null) { final Volume volume = _entityMgr.findById(Volume.class, volumeId); if (volume != null) { _accountService.checkAccess( callingAccount, SecurityChecker.AccessType.UseEntry, false, volume); } else { throw new InvalidParameterValueException("Unable to find volume by id=" + volumeId); } } else { final Snapshot snapshot = _entityMgr.findById(Snapshot.class, snapshotId); if (snapshot != null) { _accountService.checkAccess( callingAccount, SecurityChecker.AccessType.UseEntry, false, snapshot); } else { throw new InvalidParameterValueException("Unable to find snapshot by id=" + snapshotId); } } if (projectId != null) { final Project project = _projectService.getProject(projectId); if (project != null) { if (project.getState() == Project.State.Active) { final Account projectAccount = _accountService.getAccount(project.getProjectAccountId()); _accountService.checkAccess( callingAccount, SecurityChecker.AccessType.UseEntry, false, projectAccount); return project.getProjectAccountId(); } else { final PermissionDeniedException ex = new PermissionDeniedException( "Can't add resources to the project with specified projectId in state=" + project.getState() + " as it's no longer active"); ex.addProxyObject(project.getUuid(), "projectId"); throw ex; } } else { throw new InvalidParameterValueException("Unable to find project by id"); } } return callingAccount.getId(); }