mirror of
https://github.com/apache/cloudstack.git
synced 2025-10-26 08:42:29 +01:00
vxlan code. Users can set a physical network to isolation type 'vxlan', put public traffic on that physical network, and it will still attempt to use 'vlan' isolation on the KVM hosts. This is going to be an issue for other isolation types as well, but I'm not familiar with them, so I'm just fixing vxlan for now.
180 lines
8.1 KiB
Java
Executable File
180 lines
8.1 KiB
Java
Executable File
// Licensed to the Apache Software Foundation (ASF) under one
|
|
// or more contributor license agreements. See the NOTICE file
|
|
// distributed with this work for additional information
|
|
// regarding copyright ownership. The ASF licenses this file
|
|
// to you under the Apache License, Version 2.0 (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.apache.org/licenses/LICENSE-2.0
|
|
//
|
|
// Unless required by applicable law or agreed to in writing,
|
|
// software distributed under the License is distributed on an
|
|
// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
|
// KIND, either express or implied. See the License for the
|
|
// specific language governing permissions and limitations
|
|
// under the License.
|
|
package com.cloud.network;
|
|
|
|
import java.util.List;
|
|
import java.util.Map;
|
|
|
|
import org.apache.cloudstack.api.command.admin.network.DedicateGuestVlanRangeCmd;
|
|
import org.apache.cloudstack.api.command.admin.network.ListDedicatedGuestVlanRangesCmd;
|
|
import org.apache.cloudstack.api.command.admin.usage.ListTrafficTypeImplementorsCmd;
|
|
import org.apache.cloudstack.api.command.user.network.CreateNetworkCmd;
|
|
import org.apache.cloudstack.api.command.user.network.ListNetworksCmd;
|
|
import org.apache.cloudstack.api.command.user.network.RestartNetworkCmd;
|
|
import org.apache.cloudstack.api.command.user.vm.ListNicsCmd;
|
|
|
|
import com.cloud.exception.ConcurrentOperationException;
|
|
import com.cloud.exception.InsufficientAddressCapacityException;
|
|
import com.cloud.exception.InsufficientCapacityException;
|
|
import com.cloud.exception.ResourceAllocationException;
|
|
import com.cloud.exception.ResourceUnavailableException;
|
|
import com.cloud.network.Network.Service;
|
|
import com.cloud.network.Networks.TrafficType;
|
|
import com.cloud.offering.NetworkOffering;
|
|
import com.cloud.user.Account;
|
|
import com.cloud.user.User;
|
|
import com.cloud.utils.Pair;
|
|
import com.cloud.vm.Nic;
|
|
import com.cloud.vm.NicSecondaryIp;
|
|
|
|
/**
|
|
* The NetworkService interface is the "public" api to entities that make requests to the orchestration engine
|
|
* Such entities are usually the admin and end-user API.
|
|
*
|
|
*/
|
|
public interface NetworkService {
|
|
|
|
List<? extends Network> getIsolatedNetworksOwnedByAccountInZone(long zoneId, Account owner);
|
|
|
|
IpAddress allocateIP(Account ipOwner, long zoneId, Long networkId) throws ResourceAllocationException, InsufficientAddressCapacityException,
|
|
ConcurrentOperationException;
|
|
|
|
boolean releaseIpAddress(long ipAddressId) throws InsufficientAddressCapacityException;
|
|
|
|
IpAddress allocatePortableIP(Account ipOwner, int regionId, Long zoneId, Long networkId, Long vpcId) throws ResourceAllocationException,
|
|
InsufficientAddressCapacityException, ConcurrentOperationException;
|
|
|
|
boolean releasePortableIpAddress(long ipAddressId);
|
|
|
|
Network createGuestNetwork(CreateNetworkCmd cmd) throws InsufficientCapacityException, ConcurrentOperationException, ResourceAllocationException;
|
|
|
|
Pair<List<? extends Network>, Integer> searchForNetworks(ListNetworksCmd cmd);
|
|
|
|
boolean deleteNetwork(long networkId, boolean forced);
|
|
|
|
boolean restartNetwork(RestartNetworkCmd cmd, boolean cleanup) throws ConcurrentOperationException, ResourceUnavailableException, InsufficientCapacityException;
|
|
|
|
int getActiveNicsInNetwork(long networkId);
|
|
|
|
Network getNetwork(long networkId);
|
|
|
|
Network getNetwork(String networkUuid);
|
|
|
|
IpAddress getIp(long id);
|
|
|
|
Network updateGuestNetwork(long networkId, String name, String displayText, Account callerAccount, User callerUser, String domainSuffix, Long networkOfferingId,
|
|
Boolean changeCidr, String guestVmCidr, Boolean displayNetwork);
|
|
|
|
PhysicalNetwork createPhysicalNetwork(Long zoneId, String vnetRange, String networkSpeed, List<String> isolationMethods, String broadcastDomainRange, Long domainId,
|
|
List<String> tags, String name);
|
|
|
|
Pair<List<? extends PhysicalNetwork>, Integer> searchPhysicalNetworks(Long id, Long zoneId, String keyword, Long startIndex, Long pageSize, String name);
|
|
|
|
PhysicalNetwork updatePhysicalNetwork(Long id, String networkSpeed, List<String> tags, String newVnetRangeString, String state);
|
|
|
|
boolean deletePhysicalNetwork(Long id);
|
|
|
|
List<? extends Service> listNetworkServices(String providerName);
|
|
|
|
PhysicalNetworkServiceProvider addProviderToPhysicalNetwork(Long physicalNetworkId, String providerName, Long destinationPhysicalNetworkId,
|
|
List<String> enabledServices);
|
|
|
|
Pair<List<? extends PhysicalNetworkServiceProvider>, Integer> listNetworkServiceProviders(Long physicalNetworkId, String name, String state, Long startIndex,
|
|
Long pageSize);
|
|
|
|
PhysicalNetworkServiceProvider updateNetworkServiceProvider(Long id, String state, List<String> enabledServices);
|
|
|
|
boolean deleteNetworkServiceProvider(Long id) throws ConcurrentOperationException, ResourceUnavailableException;
|
|
|
|
PhysicalNetwork getPhysicalNetwork(Long physicalNetworkId);
|
|
|
|
PhysicalNetwork getCreatedPhysicalNetwork(Long physicalNetworkId);
|
|
|
|
PhysicalNetworkServiceProvider getPhysicalNetworkServiceProvider(Long providerId);
|
|
|
|
PhysicalNetworkServiceProvider getCreatedPhysicalNetworkServiceProvider(Long providerId);
|
|
|
|
long findPhysicalNetworkId(long zoneId, String tag, TrafficType trafficType);
|
|
|
|
PhysicalNetworkTrafficType addTrafficTypeToPhysicalNetwork(Long physicalNetworkId, String trafficType, String isolationMethod, String xenLabel, String kvmLabel, String vmwareLabel,
|
|
String simulatorLabel, String vlan, String hypervLabel);
|
|
|
|
PhysicalNetworkTrafficType getPhysicalNetworkTrafficType(Long id);
|
|
|
|
PhysicalNetworkTrafficType updatePhysicalNetworkTrafficType(Long id, String xenLabel, String kvmLabel, String vmwareLabel, String hypervLabel);
|
|
|
|
boolean deletePhysicalNetworkTrafficType(Long id);
|
|
|
|
GuestVlan dedicateGuestVlanRange(DedicateGuestVlanRangeCmd cmd);
|
|
|
|
Pair<List<? extends GuestVlan>, Integer> listDedicatedGuestVlanRanges(ListDedicatedGuestVlanRangesCmd cmd);
|
|
|
|
boolean releaseDedicatedGuestVlanRange(Long dedicatedGuestVlanRangeId);
|
|
|
|
Pair<List<? extends PhysicalNetworkTrafficType>, Integer> listTrafficTypes(Long physicalNetworkId);
|
|
|
|
Network getExclusiveGuestNetwork(long zoneId);
|
|
|
|
List<Pair<TrafficType, String>> listTrafficTypeImplementor(ListTrafficTypeImplementorsCmd cmd);
|
|
|
|
List<? extends Network> getIsolatedNetworksWithSourceNATOwnedByAccountInZone(long zoneId, Account owner);
|
|
|
|
/**
|
|
* @param networkId
|
|
* @param entityId
|
|
* @return
|
|
* @throws ConcurrentOperationException
|
|
* @throws ResourceUnavailableException
|
|
* @throws ResourceAllocationException
|
|
* @throws InsufficientAddressCapacityException
|
|
*/
|
|
IpAddress associateIPToNetwork(long ipId, long networkId) throws InsufficientAddressCapacityException, ResourceAllocationException, ResourceUnavailableException,
|
|
ConcurrentOperationException;
|
|
|
|
/**
|
|
*
|
|
* @param networkName
|
|
* @param displayText
|
|
* @param physicalNetworkId
|
|
* @param broadcastUri TODO set the guru name based on the broadcastUri?
|
|
* @param startIp
|
|
* @param endIP TODO
|
|
* @param gateway
|
|
* @param netmask
|
|
* @param networkOwnerId
|
|
* @param vpcId TODO
|
|
* @param sourceNat
|
|
* @return
|
|
* @throws InsufficientCapacityException
|
|
* @throws ConcurrentOperationException
|
|
* @throws ResourceAllocationException
|
|
*/
|
|
Network createPrivateNetwork(String networkName, String displayText, long physicalNetworkId, String broadcastUri, String startIp, String endIP, String gateway,
|
|
String netmask, long networkOwnerId, Long vpcId, Boolean sourceNat, Long networkOfferingId) throws ResourceAllocationException, ConcurrentOperationException,
|
|
InsufficientCapacityException;
|
|
|
|
/* Requests an IP address for the guest nic */
|
|
NicSecondaryIp allocateSecondaryGuestIP(long nicId, String ipaddress) throws InsufficientAddressCapacityException;
|
|
|
|
boolean releaseSecondaryIpFromNic(long ipAddressId);
|
|
|
|
/* lists the nic informaton */
|
|
List<? extends Nic> listNics(ListNicsCmd listNicsCmd);
|
|
|
|
Map<Network.Capability, String> getNetworkOfferingServiceCapabilities(NetworkOffering offering, Service service);
|
|
}
|