@Override public void checkQuota(NeedQuotaCheckMessage msg, Map<String, Quota.QuotaPair> pairs) { if (!new QuotaUtil().isAdminAccount(msg.getAccountUuid())) { if (msg instanceof StartVmInstanceMsg) { check((StartVmInstanceMsg) msg, pairs); } } }
@Override public void checkQuota(APIMessage msg, Map<String, QuotaPair> pairs) { if (!new QuotaUtil().isAdminAccount(msg.getSession().getAccountUuid())) { if (msg instanceof APICreateSecurityGroupMsg) { check((APICreateSecurityGroupMsg) msg, pairs); } } }
@Override public APIMessage intercept(APIMessage msg) throws ApiMessageInterceptionException { // login, logout if (msg.getSession() == null) { return msg; } // skip admin. if needed, another quota check will be issued in AccountManagerImpl if (new QuotaUtil().isAdminAccount(msg.getSession().getAccountUuid())) { return msg; } List<Quota> quotas = acntMgr.getMessageQuotaMap().get(msg.getClass()); if (quotas == null || quotas.size() == 0) { return msg; } for (Quota q : quotas) { check(msg, q); } return msg; }
String currentAccountUuid = msg.getSession().getAccountUuid(); String resourceTargetOwnerAccountUuid = msg.getAccountUuid(); if (new QuotaUtil().isAdminAccount(resourceTargetOwnerAccountUuid)) { return;
@Override public void checkQuota(APIMessage msg, Map<String, QuotaPair> pairs) { if (!new QuotaUtil().isAdminAccount(msg.getSession().getAccountUuid())) { if (msg instanceof APICreateL3NetworkMsg) { check((APICreateL3NetworkMsg) msg, pairs); } } }
@Override public void checkQuota(APIMessage msg, Map<String, Quota.QuotaPair> pairs) { if (!new QuotaUtil().isAdminAccount(msg.getSession().getAccountUuid())) { if (msg instanceof APICreateL2VxlanNetworkMsg) { check((APICreateL2VxlanNetworkMsg) msg, pairs); } } }
@Override public void checkQuota(NeedQuotaCheckMessage msg, Map<String, Quota.QuotaPair> pairs) { if (!new QuotaUtil().isAdminAccount(msg.getAccountUuid())) { if (msg instanceof VolumeCreateSnapshotMsg) { check((VolumeCreateSnapshotMsg) msg, pairs); } else if (msg instanceof CreateVolumeSnapshotMsg) { check((CreateVolumeSnapshotMsg) msg, pairs); } } }
@Override public void checkQuota(APIMessage msg, Map<String, QuotaPair> pairs) { if (!new QuotaUtil().isAdminAccount(msg.getSession().getAccountUuid())) { if (msg instanceof APICreatePortForwardingRuleMsg) { check((APICreatePortForwardingRuleMsg) msg, pairs); } } }
@Override public void checkQuota(APIMessage msg, Map<String, QuotaPair> pairs) { if (!new QuotaUtil().isAdminAccount(msg.getSession().getAccountUuid())) { if (msg instanceof APICreateVipMsg) { check((APICreateVipMsg) msg, pairs); } } }
@Override public void checkQuota(APIMessage msg, Map<String, QuotaPair> pairs) { if (!new QuotaUtil().isAdminAccount(msg.getSession().getAccountUuid())) { if (msg instanceof APICreateLoadBalancerMsg) { check((APICreateLoadBalancerMsg) msg, pairs); } else if (msg instanceof APICreateLoadBalancerListenerMsg) { check((APICreateLoadBalancerListenerMsg) msg, pairs); } } }
private void validate(APIDeleteAccountMsg msg) { if (new QuotaUtil().isAdminAccount(msg.getUuid())) { if (msg.getAccountUuid().equals(msg.getSession().getAccountUuid())) { throw new ApiMessageInterceptionException(argerr( "account cannot delete itself" )); } if (msg.getAccountUuid().equals(AccountConstant.INITIAL_SYSTEM_ADMIN_UUID)) { throw new ApiMessageInterceptionException(argerr( "cannot delete builtin admin account." )); } } if(!new QuotaUtil().isAdminAccount(msg.getSession().getAccountUuid())){ throw new ApiMessageInterceptionException(argerr( "Only admin can delete account." )); } }
@Override public void checkQuota(APIMessage msg, Map<String, QuotaPair> pairs) { if (!new QuotaUtil().isAdminAccount(msg.getSession().getAccountUuid())) { if (msg instanceof APICreateEipMsg) { check((APICreateEipMsg) msg, pairs); } else if (msg instanceof APIChangeResourceOwnerMsg) { check((APIChangeResourceOwnerMsg) msg, pairs); } } else { if (msg instanceof APIChangeResourceOwnerMsg) { check((APIChangeResourceOwnerMsg) msg, pairs); } } }
@Override public void checkQuota(APIMessage msg, Map<String, Quota.QuotaPair> pairs) { if (!new QuotaUtil().isAdminAccount(msg.getSession().getAccountUuid())) { if (msg instanceof APICreateVolumeSnapshotMsg) { check((APICreateVolumeSnapshotMsg) msg, pairs); } else if (msg instanceof APIChangeResourceOwnerMsg) { check((APIChangeResourceOwnerMsg) msg, pairs); } else if (msg instanceof APIRecoverDataVolumeMsg) { check((APIRecoverDataVolumeMsg) msg, pairs); } } else { if (msg instanceof APIChangeResourceOwnerMsg) { check((APIChangeResourceOwnerMsg) msg, pairs); } } }
@Transactional(readOnly = true) private void check(APIChangeResourceOwnerMsg msg, Map<String, Quota.QuotaPair> pairs) { String currentAccountUuid = msg.getSession().getAccountUuid(); String resourceTargetOwnerAccountUuid = msg.getAccountUuid(); if (new QuotaUtil().isAdminAccount(resourceTargetOwnerAccountUuid)) { return; } SimpleQuery<AccountResourceRefVO> q = dbf.createQuery(AccountResourceRefVO.class); q.add(AccountResourceRefVO_.resourceUuid, Op.EQ, msg.getResourceUuid()); AccountResourceRefVO accResRefVO = q.find(); if (accResRefVO.getResourceType().equals(VmInstanceVO.class.getSimpleName())) { long eipNumQuota = pairs.get(EipQuotaConstant.EIP_NUM).getValue(); long usedEipNum = getUsedEipNum(resourceTargetOwnerAccountUuid); long askedEipNum = getVmEipNum(msg.getResourceUuid()); QuotaUtil.QuotaCompareInfo quotaCompareInfo; quotaCompareInfo = new QuotaUtil.QuotaCompareInfo(); quotaCompareInfo.currentAccountUuid = currentAccountUuid; quotaCompareInfo.resourceTargetOwnerAccountUuid = resourceTargetOwnerAccountUuid; quotaCompareInfo.quotaName = EipQuotaConstant.EIP_NUM; quotaCompareInfo.quotaValue = eipNumQuota; quotaCompareInfo.currentUsed = usedEipNum; quotaCompareInfo.request = askedEipNum; new QuotaUtil().CheckQuota(quotaCompareInfo); } } };
String currentAccountUuid = msg.getSession().getAccountUuid(); String resourceTargetOwnerAccountUuid = msg.getAccountUuid(); if (new QuotaUtil().isAdminAccount(resourceTargetOwnerAccountUuid)) { return;
@Override public void checkQuota(APIMessage msg, Map<String, Quota.QuotaPair> pairs) { if (!new QuotaUtil().isAdminAccount(msg.getSession().getAccountUuid())) { if (msg instanceof APIAddImageMsg) { check((APIAddImageMsg) msg, pairs); } else if (msg instanceof APIRecoverImageMsg) { check((APIRecoverImageMsg) msg, pairs); } else if (msg instanceof APIChangeResourceOwnerMsg) { check((APIChangeResourceOwnerMsg) msg, pairs); } else if (msg instanceof APICreateRootVolumeTemplateFromRootVolumeMsg) { check((APICreateRootVolumeTemplateFromRootVolumeMsg) msg, pairs); } else if (msg instanceof APICreateDataVolumeTemplateFromVolumeMsg) { check((APICreateDataVolumeTemplateFromVolumeMsg) msg, pairs); } } else { if (msg instanceof APIChangeResourceOwnerMsg) { check((APIChangeResourceOwnerMsg) msg, pairs); } } }
private void checkQuotaForChangeResourceOwner(APIChangeResourceOwnerMsg msg) { String currentAccountUuid = msg.getSession().getAccountUuid(); String resourceTargetOwnerAccountUuid = msg.getAccountUuid(); if (new QuotaUtil().isAdminAccount(resourceTargetOwnerAccountUuid)) { return; } // check if change resource owner to self SimpleQuery<AccountResourceRefVO> queryAccResRefVO = dbf.createQuery(AccountResourceRefVO.class); queryAccResRefVO.add(AccountResourceRefVO_.resourceUuid, Op.EQ, msg.getResourceUuid()); AccountResourceRefVO accResRefVO = queryAccResRefVO.find(); String resourceOriginalOwnerAccountUuid = accResRefVO.getOwnerAccountUuid(); if (resourceTargetOwnerAccountUuid.equals(resourceOriginalOwnerAccountUuid)) { throw new ApiMessageInterceptionException(err(IdentityErrors.QUOTA_INVALID_OP, "Invalid ChangeResourceOwner operation." + "Original owner is the same as target owner." + "Current account is [uuid: %s]." + "The resource target owner account[uuid: %s]." + "The resource original owner account[uuid:%s].", currentAccountUuid, resourceTargetOwnerAccountUuid, resourceOriginalOwnerAccountUuid )); } // check quota Map<String, QuotaPair> pairs = new QuotaUtil().makeQuotaPairs(msg.getAccountUuid()); for (Quota quota : messageQuotaMap.get(APIChangeResourceOwnerMsg.class)) { quota.getOperator().checkQuota(msg, pairs); } }
private void validate(APIUpdateVirtualRouterOfferingMsg msg) { if (msg.getIsDefault() != null) { if (!new QuotaUtil().isAdminAccount(msg.getSession().getAccountUuid())) { throw new ApiMessageInterceptionException(err(IdentityErrors.PERMISSION_DENIED, "cannot change the default field of a virtual router offering; only admin can do the operation" )); } } if (msg.getImageUuid() != null) { SimpleQuery<ImageVO> q = dbf.createQuery(ImageVO.class); q.select(ImageVO_.mediaType, ImageVO_.format); q.add(ImageVO_.uuid, Op.EQ, msg.getImageUuid()); Tuple t = q.findTuple(); ImageMediaType type = t.get(0, ImageMediaType.class); String format = t.get(1, String.class); if (type != ImageMediaType.RootVolumeTemplate) { throw new ApiMessageInterceptionException(argerr("image[uuid:%s]'s mediaType is %s, the mediaType of a virtual router image must be %s", msg.getImageUuid(), type, ImageMediaType.RootVolumeTemplate)); } if (ImageConstant.ISO_FORMAT_STRING.equals(format)) { throw new ApiMessageInterceptionException(argerr("image[uuid:%s] is of format %s, cannot be used for virtual router", msg.getImageUuid(), format)); } } } private Boolean isNetworkAddressEqual(String networkUuid1, String networkUuid2) {
private void validate(APIDeleteTagMsg msg) { SimpleQuery<SystemTagVO> q = dbf.createQuery(SystemTagVO.class); q.add(SystemTagVO_.uuid, Op.EQ, msg.getUuid()); q.add(SystemTagVO_.inherent, Op.EQ, true); if (q.isExists()) { throw new ApiMessageInterceptionException(operr("tag[uuid:%s] is an inherent system tag, can not be removed", msg.getUuid())); } boolean userTag = dbf.isExist(msg.getUuid(), UserTagVO.class); boolean sysTag = dbf.isExist(msg.getUuid(), SystemTagVO.class); boolean tagPattern = dbf.isExist(msg.getUuid(), TagPatternVO.class); if (!new QuotaUtil().isAdminAccount(msg.getSession().getAccountUuid())) { if (userTag) { checkAccountForUserTag(msg); } else if (sysTag) { checkAccountForSystemTag(msg); } else if (tagPattern) { checkAccountForTagPattern(msg); } } }
private void validate(APICreateVirtualRouterOfferingMsg msg) { if (msg.isDefault() != null) { if (!new QuotaUtil().isAdminAccount(msg.getSession().getAccountUuid())) { throw new ApiMessageInterceptionException(err(IdentityErrors.PERMISSION_DENIED, "cannot create a virtual router offering with the default field set; only admin can do the operation"