/** * @param cmd * @return */ protected Account getOwner(final RegisterSSHKeyPairCmd cmd) { final Account caller = getCaller(); final Account owner = _accountMgr.finalizeOwner(caller, cmd.getAccountName(), cmd.getDomainId(), cmd.getProjectId()); return owner; }
@Override public ArrayList<String> getCloudIdentifierResponse(final long userId) { final Account caller = getCaller();
final Map<String, Object> capabilities = new HashMap<String, Object>(); final Account caller = getCaller(); boolean securityGroupsEnabled = false; boolean elasticLoadBalancerEnabled = false;
@Override public InstanceGroupVO updateVmGroup(final UpdateVMGroupCmd cmd) { final Account caller = getCaller(); final Long groupId = cmd.getId(); final String groupName = cmd.getGroupName(); // Verify input parameters final InstanceGroupVO group = _vmGroupDao.findById(groupId.longValue()); if (group == null) { final InvalidParameterValueException ex = new InvalidParameterValueException("unable to find a vm group with specified groupId"); ex.addProxyObject(groupId.toString(), "groupId"); throw ex; } _accountMgr.checkAccess(caller, null, true, group); // Check if name is already in use by this account (exclude this group) final boolean isNameInUse = _vmGroupDao.isNameInUse(group.getAccountId(), groupName); if (isNameInUse && !group.getName().equals(groupName)) { throw new InvalidParameterValueException("Unable to update vm group, a group with name " + groupName + " already exists for account"); } if (groupName != null) { _vmGroupDao.updateVmGroup(groupId, groupName); } return _vmGroupDao.findById(groupId); }
@Override public boolean archiveEvents(final ArchiveEventsCmd cmd) { final Account caller = getCaller(); final List<Long> ids = cmd.getIds(); boolean result = true; List<Long> permittedAccountIds = new ArrayList<Long>(); if (_accountService.isNormalUser(caller.getId()) || caller.getType() == Account.ACCOUNT_TYPE_PROJECT) { permittedAccountIds.add(caller.getId()); } else { final DomainVO domain = _domainDao.findById(caller.getDomainId()); final List<Long> permittedDomainIds = _domainDao.getDomainChildrenIds(domain.getPath()); permittedAccountIds = _accountDao.getAccountIdsForDomains(permittedDomainIds); } final List<EventVO> events = _eventDao.listToArchiveOrDeleteEvents(ids, cmd.getType(), cmd.getStartDate(), cmd.getEndDate(), permittedAccountIds); final ControlledEntity[] sameOwnerEvents = events.toArray(new ControlledEntity[events.size()]); _accountMgr.checkAccess(CallContext.current().getCallingAccount(), null, false, sameOwnerEvents); if (ids != null && events.size() < ids.size()) { result = false; return result; } _eventDao.archiveEvents(events); return result; }
@Override public String getVMPassword(final GetVMPasswordCmd cmd) { final Account caller = getCaller(); final UserVmVO vm = _userVmDao.findById(cmd.getId()); if (vm == null) { final InvalidParameterValueException ex = new InvalidParameterValueException("No VM with specified id found."); ex.addProxyObject(cmd.getId().toString(), "vmId"); throw ex; } // make permission check _accountMgr.checkAccess(caller, null, true, vm); _userVmDao.loadDetails(vm); final String password = vm.getDetail("Encrypted.Password"); if (password == null || password.equals("")) { final InvalidParameterValueException ex = new InvalidParameterValueException( "No password for VM with specified id found. " + "If VM is created from password enabled template and SSH keypair is assigned to VM then only password can be retrieved."); ex.addProxyObject(vm.getUuid(), "vmId"); throw ex; } return password; }
@Override public boolean deleteEvents(final DeleteEventsCmd cmd) { final Account caller = getCaller(); final List<Long> ids = cmd.getIds(); boolean result = true; List<Long> permittedAccountIds = new ArrayList<Long>(); if (_accountMgr.isNormalUser(caller.getId()) || caller.getType() == Account.ACCOUNT_TYPE_PROJECT) { permittedAccountIds.add(caller.getId()); } else { final DomainVO domain = _domainDao.findById(caller.getDomainId()); final List<Long> permittedDomainIds = _domainDao.getDomainChildrenIds(domain.getPath()); permittedAccountIds = _accountDao.getAccountIdsForDomains(permittedDomainIds); } final List<EventVO> events = _eventDao.listToArchiveOrDeleteEvents(ids, cmd.getType(), cmd.getStartDate(), cmd.getEndDate(), permittedAccountIds); final ControlledEntity[] sameOwnerEvents = events.toArray(new ControlledEntity[events.size()]); _accountMgr.checkAccess(CallContext.current().getCallingAccount(), null, false, sameOwnerEvents); if (ids != null && events.size() < ids.size()) { result = false; return result; } for (final EventVO event : events) { _eventDao.remove(event.getId()); } return result; }
@Override public Pair<List<? extends StoragePool>, List<? extends StoragePool>> listStoragePoolsForMigrationOfVolume(final Long volumeId) { final Account caller = getCaller(); if (!_accountMgr.isRootAdmin(caller.getId())) { if (s_logger.isDebugEnabled()) {
@Override public Ternary<Pair<List<? extends Host>, Integer>, List<? extends Host>, Map<Host, Boolean>> listHostsForMigrationOfVM(final Long vmId, final Long startIndex, final Long pageSize, final String keyword) { final Account caller = getCaller(); if (!_accountMgr.isRootAdmin(caller.getId())) { if (s_logger.isDebugEnabled()) {
@Override public SSHKeyPair createSSHKeyPair(final CreateSSHKeyPairCmd cmd) { final Account caller = getCaller(); final String accountName = cmd.getAccountName(); final Long domainId = cmd.getDomainId(); final Long projectId = cmd.getProjectId(); final Account owner = _accountMgr.finalizeOwner(caller, accountName, domainId, projectId); final SSHKeyPairVO s = _sshKeyPairDao.findByName(owner.getAccountId(), owner.getDomainId(), cmd.getName()); if (s != null) { throw new InvalidParameterValueException("A key pair with name '" + cmd.getName() + "' already exists."); } final SSHKeysHelper keys = new SSHKeysHelper(sshKeyLength.value()); final String name = cmd.getName(); final String publicKey = keys.getPublicKey(); final String fingerprint = keys.getPublicKeyFingerPrint(); final String privateKey = keys.getPrivateKey(); return createAndSaveSSHKeyPair(name, fingerprint, publicKey, privateKey, owner); }
@Override public boolean deleteSSHKeyPair(final DeleteSSHKeyPairCmd cmd) { final Account caller = getCaller(); final String accountName = cmd.getAccountName(); final Long domainId = cmd.getDomainId();
@Override public Pair<List<? extends SSHKeyPair>, Integer> listSSHKeyPairs(final ListSSHKeyPairsCmd cmd) { final String name = cmd.getName(); final String fingerPrint = cmd.getFingerprint(); final String keyword = cmd.getKeyword(); final Account caller = getCaller(); final List<Long> permittedAccounts = new ArrayList<Long>(); final Ternary<Long, Boolean, ListProjectResourcesCriteria> domainIdRecursiveListProject = new Ternary<Long, Boolean, ListProjectResourcesCriteria>(cmd.getDomainId(), cmd.isRecursive(), null); _accountMgr.buildACLSearchParameters(caller, null, cmd.getAccountName(), cmd.getProjectId(), permittedAccounts, domainIdRecursiveListProject, cmd.listAll(), false); final Long domainId = domainIdRecursiveListProject.first(); final Boolean isRecursive = domainIdRecursiveListProject.second(); final ListProjectResourcesCriteria listProjectResourcesCriteria = domainIdRecursiveListProject.third(); final SearchBuilder<SSHKeyPairVO> sb = _sshKeyPairDao.createSearchBuilder(); _accountMgr.buildACLSearchBuilder(sb, domainId, isRecursive, permittedAccounts, listProjectResourcesCriteria); final Filter searchFilter = new Filter(SSHKeyPairVO.class, "id", false, cmd.getStartIndex(), cmd.getPageSizeVal()); final SearchCriteria<SSHKeyPairVO> sc = sb.create(); _accountMgr.buildACLSearchCriteria(sc, domainId, isRecursive, permittedAccounts, listProjectResourcesCriteria); if (name != null) { sc.addAnd("name", SearchCriteria.Op.EQ, name); } if (fingerPrint != null) { sc.addAnd("fingerprint", SearchCriteria.Op.EQ, fingerPrint); } if (keyword != null) { sc.addOr("name", SearchCriteria.Op.LIKE, "%" + keyword + "%"); sc.addOr("fingerprint", SearchCriteria.Op.LIKE, "%" + keyword + "%"); } final Pair<List<SSHKeyPairVO>, Integer> result = _sshKeyPairDao.searchAndCount(sc, searchFilter); return new Pair<List<? extends SSHKeyPair>, Integer>(result.first(), result.second()); }
private VirtualMachine upgradeStoppedSystemVm(final Long systemVmId, final Long serviceOfferingId, final Map<String, String> customparameters) { final Account caller = getCaller(); final VMInstanceVO systemVm = _vmInstanceDao.findByIdTypes(systemVmId, VirtualMachine.Type.ConsoleProxy, VirtualMachine.Type.SecondaryStorageVm); if (systemVm == null) { throw new InvalidParameterValueException("Unable to find SystemVm with id " + systemVmId); } _accountMgr.checkAccess(caller, null, true, systemVm); // Check that the specified service offering ID is valid ServiceOfferingVO newServiceOffering = _offeringDao.findById(serviceOfferingId); final ServiceOfferingVO currentServiceOffering = _offeringDao.findById(systemVmId, systemVm.getServiceOfferingId()); if (newServiceOffering.isDynamic()) { newServiceOffering.setDynamicFlag(true); _userVmMgr.validateCustomParameters(newServiceOffering, customparameters); newServiceOffering = _offeringDao.getcomputeOffering(newServiceOffering, customparameters); } _itMgr.checkIfCanUpgrade(systemVm, newServiceOffering); final boolean result = _itMgr.upgradeVmDb(systemVmId, serviceOfferingId); if (newServiceOffering.isDynamic()) { //save the custom values to the database. _userVmMgr.saveCustomOfferingDetails(systemVmId, newServiceOffering); } if (currentServiceOffering.isDynamic() && !newServiceOffering.isDynamic()) { _userVmMgr.removeCustomOfferingDetails(systemVmId); } if (result) { return _vmInstanceDao.findById(systemVmId); } else { throw new CloudRuntimeException("Unable to upgrade system vm " + systemVm); } }
ListProjectResourcesCriteria listProjectResourcesCriteria = null; if (isAllocated) { final Account caller = getCaller();