forked from apache/cloudstack
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathVpcManager.java
More file actions
168 lines (151 loc) · 5.37 KB
/
Copy pathVpcManager.java
File metadata and controls
168 lines (151 loc) · 5.37 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
// 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.vpc;
import java.util.List;
import java.util.Map;
import java.util.Set;
import org.apache.cloudstack.acl.ControlledEntity.ACLType;
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.hypervisor.Hypervisor.HypervisorType;
import com.cloud.network.IpAddress;
import com.cloud.network.Network;
import com.cloud.network.Network.Provider;
import com.cloud.network.Network.Service;
import com.cloud.network.PhysicalNetwork;
import com.cloud.network.addr.PublicIp;
import com.cloud.offering.NetworkOffering;
import com.cloud.user.Account;
public interface VpcManager {
/**
* Returns all the Guest networks that are part of VPC
*
* @param vpcId
* @return
*/
public List<? extends Network> getVpcNetworks(long vpcId);
/**
* Returns all existing VPCs for a given account
* @param accountId
* @return
*/
List<? extends Vpc> getVpcsForAccount(long accountId);
/**
* Destroys the VPC
*
* @param vpc
* @param caller TODO
* @param callerUserId TODO
* @return
* @throws ConcurrentOperationException
* @throws ResourceUnavailableException
*/
boolean destroyVpc(Vpc vpc, Account caller, Long callerUserId) throws ConcurrentOperationException, ResourceUnavailableException;
/**
* Returns true if the IP is allocated to the VPC; false otherwise
*
* @param ip
* @return
*/
boolean isIpAllocatedToVpc(IpAddress ip);
/**
* Disassociates the public IP address from VPC
*
* @param ipId
* @param networkId
*/
void unassignIPFromVpcNetwork(long ipId, long networkId);
/**
* Creates guest network in the VPC
*
*
* @param ntwkOffId
* @param name
* @param displayText
* @param gateway
* @param cidr
* @param vlanId
* @param networkDomain
* @param owner
* @param domainId
* @param pNtwk
* @param zoneId
* @param aclType
* @param subdomainAccess
* @param vpcId
* @param caller
* @param displayNetworkEnabled
* @return
* @throws ConcurrentOperationException
* @throws InsufficientCapacityException
* @throws ResourceAllocationException
*/
Network
createVpcGuestNetwork(long ntwkOffId, String name, String displayText, String gateway, String cidr, String vlanId, String networkDomain, Account owner,
Long domainId, PhysicalNetwork pNtwk, long zoneId, ACLType aclType, Boolean subdomainAccess, long vpcId, Long aclId, Account caller,
Boolean displayNetworkEnabled)
throws ConcurrentOperationException, InsufficientCapacityException, ResourceAllocationException;
/**
* Assigns source nat public IP address to VPC
*
* @param owner
* @param vpc
* @return public IP address object
* @throws InsufficientAddressCapacityException
* @throws ConcurrentOperationException
*/
PublicIp assignSourceNatIpAddressToVpc(Account owner, Vpc vpc) throws InsufficientAddressCapacityException, ConcurrentOperationException;
/**
* Validates network offering to find if it can be used for network creation in VPC
*
* @param guestNtwkOff
* @param supportedSvcs TODO
*/
void validateNtwkOffForVpc(NetworkOffering guestNtwkOff, List<Service> supportedSvcs);
/**
* @return list of hypervisors that are supported by VPC
*/
List<HypervisorType> getSupportedVpcHypervisors();
/**
* Lists all the services and providers that the current VPC suppots
* @param vpcOffId
* @return map of Service to Provider(s) map
*/
Map<Service, Set<Provider>> getVpcOffSvcProvidersMap(long vpcOffId);
/**
* Returns VPC that is ready to be used
* @param vpcId
* @return VPC object
*/
public Vpc getActiveVpc(long vpcId);
/**
* Performs network offering validation to determine if it can be used for network upgrade inside the VPC
* @param networkId
* @param newNtwkOffId
* @param newCidr
* @param newNetworkDomain
* @param vpc
* @param gateway
* @param networkOwner TODO
*/
void
validateNtwkOffForNtwkInVpc(Long networkId, long newNtwkOffId, String newCidr, String newNetworkDomain, Vpc vpc, String gateway, Account networkOwner, Long aclId);
List<PrivateGateway> getVpcPrivateGateways(long vpcId);
}