/* * The contents of this file are subject to the Mozilla Public License * Version 1.1 (the "License"); you may not use this file except in * compliance with the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the * License for the specific language governing rights and limitations * under the License. * * The Original Code is available at http://www.abiquo.com/..... * * The Initial Developer of the Original Code is Soluciones Grid, S.L. (www.abiquo.com), * Consell de Cent 296, Principal 2�, 08007 Barcelona, Spain. * * No portions of the Code have been created by third parties. * All Rights Reserved. * * Contributor(s): ______________________________________. * * Graphical User Interface of this software may be used under the terms * of the Common Public Attribution License Version 1.0 (the "CPAL License", * available at http://cpal.abiquo.com/), in which case the * provisions of CPAL License are applicable instead of those above. In relation * of this portions of the Code, a Legal Notice according to Exhibits A and B of * CPAL Licence should be provided in any distribution of the corresponding Code * to Graphical User Interface. */ package com.abiquo.networking; /** * Abstract class to determine the methods in order to be an abiCloud IPAdress Manager * * @author abiquo */ public abstract class InetManager { /** * Status we can find deleting dataCenters or virtual machines. */ public enum InetManagerStatus { SUCCESS, LOGIC_ERROR, DATABASE_ERROR }; /** * Provides a rang of IP's for a given DataCenter. * * @param dataCenterId id of the Data Center we request a Rang. rang * @return new IPNetworkRang if dataCenterId didn't request before; previous IPNetworkRang if * dataCenter already request a rang; null if dataCenterId didn't request before and no * more dataCenter available */ public abstract IPNetworkRang requestDataCenterRang(Integer dataCenterId); /** * Provides an IP Address for a given dataCenter and virtual Machine. * * @param dataCenterId id of the Data Center we request a IP Address virtualMachineId number of * the virtual machine which has the IP Address * @return a new IPAddress if virtualMachineId didn't request before an IP Address; stored * IPAddres if virtualMachineId had already an IP Address; null if virtualMachineId * didn't request before an IP Address and no more IPAddress available in the dataCenter * rang. If virtual machine exists but doesn't belong to the given datacenter, also * return null. */ public abstract IPAddress requestIPAddressVM(Integer dataCenterId, String virtualMachineId); /** * Deletes a DataCenter and its virtualMachines IP's in data base. * * @param dataCenterId we want to delete * @return InetManagerStatus */ public abstract InetManagerStatus deleteDataCenterRang(Integer dataCenterId); /** * Delete a virtualMachine IP in database * * @param virtualMachineId id of the virtual machine we want to delete * @return InetManagerStatus */ public abstract InetManagerStatus deleteIPAddressVM(String virtualMachineId); /** * A method to query how many datacenters we can register */ public abstract Integer getNumberDatacenters(); /** * A method to query how many datacenters registers are available in Database. * * @return Number of datacenters available. */ public abstract Integer remainingDatacenters(); };