@Override public void setState(State state) { _addr.setState(state); }
@Override public boolean mark(long dcId, Ip ip) { SearchCriteria<IPAddressVO> sc = AllFieldsSearch.create(); sc.setParameters("dataCenterId", dcId); sc.setParameters("ipAddress", ip); IPAddressVO vo = createForUpdate(); vo.setAllocatedTime(new Date()); vo.setState(State.Allocated); return update(vo, sc) >= 1; }
@Override @DB public IPAddressVO markAsUnavailable(long ipAddressId) { SearchCriteria<IPAddressVO> sc = AllFieldsSearch.create(); sc.setParameters("id", ipAddressId); IPAddressVO ip = createForUpdate(); ip.setState(State.Releasing); if (update(ip, sc) != 1) { return null; } return findOneBy(sc); }
if (userIps != null && !userIps.isEmpty()) { for (final IPAddressVO userIp : userIps) { userIp.setState(IpAddress.State.Releasing); final PublicIp publicIp = PublicIp.createFromAddrAndVlan(userIp, _vlanDao.findById(userIp.getVlanId())); publicIpsToRelease.add(publicIp);
/** * Acquires lock in "user_ip_address" and checks if the requested IPv4 address is Free. */ protected void acquireLockAndCheckIfIpv4IsFree(Network network, String requestedIpv4Address) { IPAddressVO ipVO = _ipAddressDao.findByIpAndSourceNetworkId(network.getId(), requestedIpv4Address); if (ipVO == null) { throw new InvalidParameterValueException( String.format("Cannot find IPAddressVO for guest [IPv4 address='%s'] and [network id='%s']", requestedIpv4Address, network.getId())); } try { IPAddressVO lockedIpVO = _ipAddressDao.acquireInLockTable(ipVO.getId()); validateLockedRequestedIp(ipVO, lockedIpVO); lockedIpVO.setState(IPAddressVO.State.Allocated); _ipAddressDao.update(lockedIpVO.getId(), lockedIpVO); } finally { _ipAddressDao.releaseFromLockTable(ipVO.getId()); } }
addr.setAllocatedToAccountId(owner.getId()); addr.setSystem(false); addr.setState(IpAddress.State.Allocating); markPublicIpAsAllocated(addr);
final IPAddressVO userIp = _ipAddressDao.findById(addr.getId()); if (userIp.getState() == IpAddress.State.Free) { addr.setState(IpAddress.State.Allocating); if (_ipAddressDao.update(addr.getId(), addr)) { finalAddr = addr;
ipaddr.setState(State.Allocated); ipaddr.setAllocatedTime(new Date()); ipaddr.setAllocatedInDomainId(ipOwner.getDomainId());
@Override public void doInTransactionWithoutResult(TransactionStatus status) { Account owner = _accountMgr.getAccount(addr.getAllocatedToAccountId()); if (_ipAddressDao.lockRow(addr.getId(), true) != null) { final IPAddressVO userIp = _ipAddressDao.findById(addr.getId()); if (userIp.getState() == IpAddress.State.Allocating || addr.getState() == IpAddress.State.Free) { addr.setState(IpAddress.State.Allocated); if (_ipAddressDao.update(addr.getId(), addr)) { // Save usage event if (owner.getAccountId() != Account.ACCOUNT_ID_SYSTEM) { VlanVO vlan = _vlanDao.findById(addr.getVlanId()); String guestType = vlan.getVlanType().toString(); if (!isIpDedicated(addr)) { UsageEventUtils.publishUsageEvent(EventTypes.EVENT_NET_IP_ASSIGN, owner.getId(), addr.getDataCenterId(), addr.getId(), addr.getAddress().toString(), addr.isSourceNat(), guestType, addr.getSystem(), addr.getClass().getName(), addr.getUuid()); } if (updateIpResourceCount(addr)) { _resourceLimitMgr.incrementResourceCount(owner.getId(), ResourceType.public_ip); } } } else { s_logger.error("Failed to mark public IP as allocated with id=" + addr.getId() + " address=" + addr.getAddress()); } } } else { s_logger.error("Failed to acquire row lock to mark public IP as allocated with id=" + addr.getId() + " address=" + addr.getAddress()); } } });
@Override public void unassignIpAddress(long ipAddressId) { IPAddressVO address = createForUpdate(); address.setAllocatedToAccountId(null); address.setAllocatedInDomainId(null); address.setAllocatedTime(null); address.setSourceNat(false); address.setOneToOneNat(false); address.setAssociatedWithVmId(null); address.setState(State.Free); address.setAssociatedWithNetworkId(null); address.setVpcId(null); address.setSystem(false); address.setVmIp(null); address.setDisplay(true); //remove resource details for the ip _detailsDao.removeDetails(ipAddressId); update(ipAddressId, address); }