/** * Copyright (C) 2010 Cloud.com, Inc. All rights reserved. * * This software is licensed under the GNU General Public License v3 or later. * * It is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or any later version. * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . * */ package com.cloud.network; import java.util.Date; import com.cloud.acl.ControlledEntity; import com.cloud.utils.net.Ip; /** * IpAddress represents the public ip address to be allocated in the CloudStack. * * When it is not allocated, it should have * - State = Free * - Allocated = null * - AccountId = null * - DomainId = null * * When it is allocated, it should have * - State = Allocated * - AccountId = account owner. * - DomainId = domain of the account owner. * - Allocated = time it was allocated. */ public interface IpAddress extends ControlledEntity { enum State { Allocating, // The IP Address is being propagated to other network elements and is not ready for use yet. Allocated, // The IP address is in used. Releasing, // The IP address is being released for other network elements and is not ready for allocation. Free // The IP address is ready to be allocated. } long getDataCenterId(); Ip getAddress(); Long getAllocatedToAccountId(); Long getAllocatedInDomainId(); Date getAllocatedTime(); boolean isSourceNat(); long getVlanId(); boolean isOneToOneNat(); State getState(); boolean readyToUse(); Long getAssociatedWithNetworkId(); Long getAssociatedWithVmId(); /** * @return database id. */ long getId(); }