|
16 | 16 | // under the License. |
17 | 17 | package org.apache.cloudstack.api.command.user.address; |
18 | 18 |
|
| 19 | +import java.util.List; |
| 20 | + |
| 21 | +import org.apache.cloudstack.api.APICommand; |
| 22 | +import org.apache.cloudstack.api.ApiConstants; |
| 23 | +import org.apache.cloudstack.api.ApiErrorCode; |
| 24 | +import org.apache.cloudstack.api.BaseAsyncCmd; |
| 25 | +import org.apache.cloudstack.api.BaseAsyncCreateCmd; |
| 26 | +import org.apache.cloudstack.api.BaseCmd; |
| 27 | +import org.apache.cloudstack.api.Parameter; |
| 28 | +import org.apache.cloudstack.api.ServerApiException; |
| 29 | +import org.apache.cloudstack.api.response.DomainResponse; |
| 30 | +import org.apache.cloudstack.api.response.IPAddressResponse; |
| 31 | +import org.apache.cloudstack.api.response.NetworkResponse; |
| 32 | +import org.apache.cloudstack.api.response.ProjectResponse; |
| 33 | +import org.apache.cloudstack.api.response.RegionResponse; |
| 34 | +import org.apache.cloudstack.api.response.VpcResponse; |
| 35 | +import org.apache.cloudstack.api.response.ZoneResponse; |
| 36 | +import org.apache.log4j.Logger; |
| 37 | + |
19 | 38 | import com.cloud.async.AsyncJob; |
20 | 39 | import com.cloud.dc.DataCenter; |
21 | 40 | import com.cloud.dc.DataCenter.NetworkType; |
22 | 41 | import com.cloud.event.EventTypes; |
23 | | -import com.cloud.exception.*; |
| 42 | +import com.cloud.exception.ConcurrentOperationException; |
| 43 | +import com.cloud.exception.InsufficientAddressCapacityException; |
| 44 | +import com.cloud.exception.InsufficientCapacityException; |
| 45 | +import com.cloud.exception.InvalidParameterValueException; |
| 46 | +import com.cloud.exception.PermissionDeniedException; |
| 47 | +import com.cloud.exception.ResourceAllocationException; |
| 48 | +import com.cloud.exception.ResourceUnavailableException; |
24 | 49 | import com.cloud.network.IpAddress; |
25 | 50 | import com.cloud.network.Network; |
26 | 51 | import com.cloud.network.vpc.Vpc; |
| 52 | +import com.cloud.projects.Project; |
27 | 53 | import com.cloud.user.Account; |
28 | 54 | import com.cloud.user.UserContext; |
29 | | -import org.apache.cloudstack.api.*; |
30 | | -import org.apache.cloudstack.api.response.*; |
31 | | -import org.apache.log4j.Logger; |
32 | | - |
33 | | -import java.util.List; |
34 | 55 |
|
35 | 56 | @APICommand(name = "associateIpAddress", description="Acquires and associates a public IP to an account.", responseObject=IPAddressResponse.class) |
36 | 57 | public class AssociateIPAddrCmd extends BaseAsyncCreateCmd { |
@@ -175,7 +196,19 @@ public long getEntityOwnerId() { |
175 | 196 | if (accountName != null && domainId != null) { |
176 | 197 | Account account = _accountService.finalizeOwner(caller, accountName, domainId, projectId); |
177 | 198 | return account.getId(); |
178 | | - } else if (networkId != null){ |
| 199 | + } else if (projectId != null) { |
| 200 | + Project project = _projectService.getProject(projectId); |
| 201 | + if (project != null) { |
| 202 | + if (project.getState() == Project.State.Active) { |
| 203 | + return project.getProjectAccountId(); |
| 204 | + } else { |
| 205 | + throw new PermissionDeniedException("Can't add resources to the project with specified projectId in state=" |
| 206 | + + project.getState() + " as it's no longer active"); |
| 207 | + } |
| 208 | + } else { |
| 209 | + throw new InvalidParameterValueException("Unable to find project by id"); |
| 210 | + } |
| 211 | + } else if (networkId != null){ |
179 | 212 | Network network = _networkService.getNetwork(networkId); |
180 | 213 | return network.getAccountId(); |
181 | 214 | } else if (vpcId != null) { |
|
0 commit comments