mirror of
https://github.com/apache/cloudstack.git
synced 2025-10-26 08:42:29 +01:00
274 lines
9.5 KiB
Java
274 lines
9.5 KiB
Java
// 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.ArrayList;
|
|
import java.util.List;
|
|
import java.util.Map;
|
|
import java.util.Set;
|
|
|
|
import com.cloud.dc.Vlan;
|
|
import com.cloud.exception.InsufficientAddressCapacityException;
|
|
import com.cloud.exception.InvalidParameterValueException;
|
|
import com.cloud.hypervisor.Hypervisor.HypervisorType;
|
|
import com.cloud.network.Network.Capability;
|
|
import com.cloud.network.Network.Provider;
|
|
import com.cloud.network.Network.Service;
|
|
import com.cloud.network.Networks.TrafficType;
|
|
import com.cloud.network.element.NetworkElement;
|
|
import com.cloud.network.element.UserDataServiceProvider;
|
|
import com.cloud.offering.NetworkOffering;
|
|
import com.cloud.offering.NetworkOffering.Detail;
|
|
import com.cloud.user.Account;
|
|
import com.cloud.vm.Nic;
|
|
import com.cloud.vm.NicProfile;
|
|
import com.cloud.vm.VirtualMachine;
|
|
|
|
|
|
/**
|
|
* The NetworkModel presents a read-only view into the Network data such as L2 networks,
|
|
* Nics, PublicIps, NetworkOfferings, traffic labels, physical networks and the like
|
|
* The idea is that only the orchestration core should be able to modify the data, while other
|
|
* participants in the orchestration can use this interface to query the data.
|
|
*/
|
|
public interface NetworkModel {
|
|
|
|
/**
|
|
* Lists IP addresses that belong to VirtualNetwork VLANs
|
|
*
|
|
* @param accountId
|
|
* - account that the IP address should belong to
|
|
* @param associatedNetworkId
|
|
* TODO
|
|
* @param sourceNat
|
|
* - (optional) true if the IP address should be a source NAT address
|
|
* @return - list of IP addresses
|
|
*/
|
|
List<? extends IpAddress> listPublicIpsAssignedToGuestNtwk(long accountId, long associatedNetworkId, Boolean sourceNat);
|
|
|
|
List<? extends NetworkOffering> getSystemAccountNetworkOfferings(String... offeringNames);
|
|
|
|
List<? extends Nic> getNics(long vmId);
|
|
|
|
String getNextAvailableMacAddressInNetwork(long networkConfigurationId) throws InsufficientAddressCapacityException;
|
|
|
|
PublicIpAddress getPublicIpAddress(long ipAddressId);
|
|
|
|
List<? extends Vlan> listPodVlans(long podId);
|
|
|
|
List<? extends Network> listNetworksUsedByVm(long vmId, boolean isSystem);
|
|
|
|
Nic getNicInNetwork(long vmId, long networkId);
|
|
|
|
List<? extends Nic> getNicsForTraffic(long vmId, TrafficType type);
|
|
|
|
Network getDefaultNetworkForVm(long vmId);
|
|
|
|
Nic getDefaultNic(long vmId);
|
|
|
|
UserDataServiceProvider getUserDataUpdateProvider(Network network);
|
|
|
|
boolean networkIsConfiguredForExternalNetworking(long zoneId, long networkId);
|
|
|
|
Map<Capability, String> getNetworkServiceCapabilities(long networkId, Service service);
|
|
|
|
boolean areServicesSupportedByNetworkOffering(long networkOfferingId, Service... services);
|
|
|
|
Network getNetworkWithSecurityGroupEnabled(Long zoneId);
|
|
|
|
String getIpOfNetworkElementInVirtualNetwork(long accountId, long dataCenterId);
|
|
|
|
List<? extends Network> listNetworksForAccount(long accountId, long zoneId, Network.GuestType type);
|
|
|
|
List<? extends Network> listAllNetworksInAllZonesByType(Network.GuestType type);
|
|
|
|
String getStartIpAddress(long networkId);
|
|
|
|
String getIpInNetwork(long vmId, long networkId);
|
|
|
|
String getIpInNetworkIncludingRemoved(long vmId, long networkId);
|
|
|
|
Long getPodIdForVlan(long vlanDbId);
|
|
|
|
List<Long> listNetworkOfferingsForUpgrade(long networkId);
|
|
|
|
boolean isSecurityGroupSupportedInNetwork(Network network);
|
|
|
|
boolean isProviderSupportServiceInNetwork(long networkId, Service service, Provider provider);
|
|
|
|
boolean isProviderEnabledInPhysicalNetwork(long physicalNetowrkId, String providerName);
|
|
|
|
String getNetworkTag(HypervisorType hType, Network network);
|
|
|
|
List<Service> getElementServices(Provider provider);
|
|
|
|
boolean canElementEnableIndividualServices(Provider provider);
|
|
|
|
boolean areServicesSupportedInNetwork(long networkId, Service... services);
|
|
|
|
boolean isNetworkSystem(Network network);
|
|
|
|
Map<Capability, String> getNetworkOfferingServiceCapabilities(NetworkOffering offering, Service service);
|
|
|
|
Long getPhysicalNetworkId(Network network);
|
|
|
|
boolean getAllowSubdomainAccessGlobal();
|
|
|
|
boolean isProviderForNetwork(Provider provider, long networkId);
|
|
|
|
boolean isProviderForNetworkOffering(Provider provider, long networkOfferingId);
|
|
|
|
void canProviderSupportServices(Map<Provider, Set<Service>> providersMap);
|
|
|
|
List<PhysicalNetworkSetupInfo> getPhysicalNetworkInfo(long dcId, HypervisorType hypervisorType);
|
|
|
|
boolean canAddDefaultSecurityGroup();
|
|
|
|
List<Service> listNetworkOfferingServices(long networkOfferingId);
|
|
|
|
boolean areServicesEnabledInZone(long zoneId, NetworkOffering offering, List<Service> services);
|
|
|
|
Map<PublicIpAddress, Set<Service>> getIpToServices(List<? extends PublicIpAddress> publicIps, boolean rulesRevoked,
|
|
boolean includingFirewall);
|
|
|
|
Map<Provider, ArrayList<PublicIpAddress>> getProviderToIpList(Network network, Map<PublicIpAddress, Set<Service>> ipToServices);
|
|
|
|
boolean checkIpForService(IpAddress ip, Service service, Long networkId);
|
|
|
|
void checkCapabilityForProvider(Set<Provider> providers, Service service, Capability cap, String capValue);
|
|
|
|
Provider getDefaultUniqueProviderForService(String serviceName);
|
|
|
|
void checkNetworkPermissions(Account owner, Network network);
|
|
|
|
String getDefaultManagementTrafficLabel(long zoneId, HypervisorType hypervisorType);
|
|
|
|
String getDefaultStorageTrafficLabel(long zoneId, HypervisorType hypervisorType);
|
|
|
|
String getDefaultPublicTrafficLabel(long dcId, HypervisorType vmware);
|
|
|
|
String getDefaultGuestTrafficLabel(long dcId, HypervisorType vmware);
|
|
|
|
/**
|
|
* @param providerName
|
|
* @return
|
|
*/
|
|
NetworkElement getElementImplementingProvider(String providerName);
|
|
|
|
/**
|
|
* @param accountId
|
|
* @param zoneId
|
|
* @return
|
|
*/
|
|
String getAccountNetworkDomain(long accountId, long zoneId);
|
|
|
|
/**
|
|
* @param ntwkOffId
|
|
* @return
|
|
*/
|
|
List<Provider> getNtwkOffDistinctProviders(long ntwkOffId);
|
|
|
|
/**
|
|
* @param accountId
|
|
* @param dcId
|
|
* @param sourceNat
|
|
* @return
|
|
*/
|
|
List<? extends IpAddress> listPublicIpsAssignedToAccount(long accountId, long dcId, Boolean sourceNat);
|
|
|
|
/**
|
|
* @param zoneId
|
|
* @param trafficType
|
|
* @return
|
|
*/
|
|
List<? extends PhysicalNetwork> getPhysicalNtwksSupportingTrafficType(long zoneId, TrafficType trafficType);
|
|
|
|
/**
|
|
* @param guestNic
|
|
* @return
|
|
*/
|
|
boolean isPrivateGateway(Nic guestNic);
|
|
|
|
Map<Service, Map<Capability, String>> getNetworkCapabilities(long networkId);
|
|
|
|
Network getSystemNetworkByZoneAndTrafficType(long zoneId, TrafficType trafficType);
|
|
|
|
Long getDedicatedNetworkDomain(long networkId);
|
|
|
|
Map<Service, Set<Provider>> getNetworkOfferingServiceProvidersMap(long networkOfferingId);
|
|
|
|
List<? extends Provider> listSupportedNetworkServiceProviders(String serviceName);
|
|
|
|
List<? extends Network> listNetworksByVpc(long vpcId);
|
|
|
|
boolean canUseForDeploy(Network network);
|
|
|
|
Network getExclusiveGuestNetwork(long zoneId);
|
|
|
|
long findPhysicalNetworkId(long zoneId, String tag, TrafficType trafficType);
|
|
|
|
Integer getNetworkRate(long networkId, Long vmId);
|
|
|
|
boolean isVmPartOfNetwork(long vmId, long ntwkId);
|
|
|
|
PhysicalNetwork getDefaultPhysicalNetworkByZoneAndTrafficType(long zoneId, TrafficType trafficType);
|
|
|
|
Network getNetwork(long networkId);
|
|
|
|
IpAddress getIp(long sourceIpAddressId);
|
|
|
|
boolean isNetworkAvailableInDomain(long networkId, long domainId);
|
|
|
|
NicProfile getNicProfile(VirtualMachine vm, long networkId, String broadcastUri);
|
|
|
|
Set<Long> getAvailableIps(Network network, String requestedIp);
|
|
|
|
String getDomainNetworkDomain(long domainId, long zoneId);
|
|
|
|
PublicIpAddress getSourceNatIpAddressForGuestNetwork(Account owner, Network guestNetwork);
|
|
|
|
boolean isNetworkInlineMode(Network network);
|
|
|
|
boolean isIP6AddressAvailableInNetwork(long networkId);
|
|
|
|
boolean isIP6AddressAvailableInVlan(long vlanId);
|
|
|
|
void checkIp6Parameters(String startIPv6, String endIPv6, String ip6Gateway, String ip6Cidr) throws InvalidParameterValueException;
|
|
|
|
void checkRequestedIpAddresses(long networkId, String ip4, String ip6) throws InvalidParameterValueException;
|
|
|
|
String getStartIpv6Address(long id);
|
|
|
|
boolean isProviderEnabledInZone(long zoneId, String provider);
|
|
|
|
Nic getPlaceholderNicForRouter(Network network, Long podId);
|
|
|
|
IpAddress getPublicIpAddress(String ipAddress, long zoneId);
|
|
|
|
List<String> getUsedIpsInNetwork(Network network);
|
|
|
|
Map<Detail, String> getNtwkOffDetails(long offId);
|
|
|
|
Networks.IsolationType[] listNetworkIsolationMethods();
|
|
|
|
Nic getNicInNetworkIncludingRemoved(long vmId, long networkId);
|
|
|
|
boolean getExecuteInSeqNtwkElmtCmd();
|
|
|
|
boolean isNetworkReadyForGc(long networkId);
|
|
} |