Skip to content

Commit f5369bc

Browse files
Restore main response behavior and fix usage null safety
1 parent 1e650be commit f5369bc

1 file changed

Lines changed: 71 additions & 57 deletions

File tree

‎server/src/main/java/com/cloud/api/ApiResponseHelper.java‎

Lines changed: 71 additions & 57 deletions
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,9 @@
4343
import javax.inject.Inject;
4444

4545
import org.apache.cloudstack.acl.ControlledEntity;
46+
import org.apache.cloudstack.acl.RoleVO;
4647
import org.apache.cloudstack.acl.ControlledEntity.ACLType;
48+
import org.apache.cloudstack.acl.dao.RoleDao;
4749

4850
import org.apache.cloudstack.affinity.AffinityGroup;
4951
import org.apache.cloudstack.affinity.AffinityGroupResponse;
@@ -306,6 +308,7 @@
306308
import com.cloud.dc.dao.VlanDetailsDao;
307309
import com.cloud.domain.Domain;
308310
import com.cloud.domain.DomainVO;
311+
import com.cloud.domain.dao.DomainDao;
309312

310313
import com.cloud.event.Event;
311314
import com.cloud.exception.InvalidParameterValueException;
@@ -381,6 +384,7 @@
381384
import com.cloud.network.vpc.VpcOffering;
382385
import com.cloud.network.vpc.VpcVO;
383386
import com.cloud.network.vpc.dao.VpcOfferingDao;
387+
import com.cloud.network.vpn.Site2SiteVpnManager;
384388

385389
import com.cloud.offering.DiskOffering;
386390
import com.cloud.offering.NetworkOffering;
@@ -423,7 +427,9 @@
423427
import com.cloud.tags.dao.ResourceTagDao;
424428
import com.cloud.template.VirtualMachineTemplate;
425429
import com.cloud.user.Account;
430+
import com.cloud.user.AccountVO;
426431
import com.cloud.user.AccountManager;
432+
import com.cloud.user.ApiKeyPairState;
427433

428434
import com.cloud.user.SSHKeyPair;
429435
import com.cloud.user.User;
@@ -432,6 +438,7 @@
432438
import com.cloud.user.UserStatisticsVO;
433439

434440
import com.cloud.user.dao.UserDataDao;
441+
import com.cloud.user.dao.AccountDao;
435442
import com.cloud.user.dao.UserStatisticsDao;
436443
import com.cloud.uservm.UserVm;
437444
import com.cloud.utils.Pair;
@@ -543,6 +550,8 @@ public class ApiResponseHelper implements ResponseGenerator, ResourceIdSupport {
543550
BgpPeerDao bgpPeerDao;
544551
@Inject
545552
RoutedIpv4Manager routedIpv4Manager;
553+
@Inject
554+
Site2SiteVpnManager site2SiteVpnManager;
546555

547556
@Inject
548557
ResourceIconManager resourceIconManager;
@@ -561,6 +570,15 @@ public static String getPrettyDomainPath(String path) {
561570
return domainPath.toString();
562571
}
563572

573+
@Inject
574+
private RoleDao roleDao;
575+
576+
@Inject
577+
private AccountDao accountDao;
578+
579+
@Inject
580+
private DomainDao domainDao;
581+
564582
public static void populateDomainTags(String domainUuid, DomainResponse domainResponse) {
565583
List<ResourceTagJoinVO> tags = ApiDBUtils.listResourceTagViewByResourceUUID(domainUuid,
566584
ResourceTag.ResourceObjectType.Domain);
@@ -621,6 +639,7 @@ public DomainResponse createDomainResponse(Domain domain) {
621639
if (domain.getChildCount() > 0) {
622640
domainResponse.setHasChild(true);
623641
}
642+
populateDomainTags(domain.getUuid(), domainResponse);
624643
domainResponse.setObjectName("domain");
625644
return domainResponse;
626645
}
@@ -1706,6 +1725,7 @@ public FirewallRuleResponse createPortForwardingRuleResponse(PortForwardingRule
17061725

17071726
Network guestNtwk = ApiDBUtils.findNetworkById(fwRule.getNetworkId());
17081727
response.setNetworkId(guestNtwk.getUuid());
1728+
response.setNetworkName(guestNtwk.getName());
17091729

17101730
IpAddress ip = ApiDBUtils.findIpAddressById(fwRule.getSourceIpAddressId());
17111731

@@ -1933,6 +1953,8 @@ public SystemVmResponse createSystemVmResponse(VirtualMachine vm) {
19331953
vmResponse.setPublicNetmask(singleNicProfile.getIPv4Netmask());
19341954
vmResponse.setGateway(singleNicProfile.getIPv4Gateway());
19351955
}
1956+
} else if (network.getTrafficType() == TrafficType.Storage) {
1957+
vmResponse.setStorageIp(singleNicProfile.getIPv4Address());
19361958
}
19371959
}
19381960
}
@@ -2923,7 +2945,10 @@ public NetworkResponse createNetworkResponse(ResponseView view, Network network)
29232945
}
29242946
}
29252947

2926-
2948+
if (CallContext.current().getCallingAccount().getType() == Account.Type.ADMIN &&
2949+
network.getVpcId() == null && network.getGuestType() == Network.GuestType.Isolated) {
2950+
response.setKeepMacAddressOnPublicNic(network.getKeepMacAddressOnPublicNic());
2951+
}
29272952

29282953
response.setObjectName("network");
29292954
return response;
@@ -3596,7 +3621,7 @@ public VpcResponse createVpcResponse(ResponseView view, Vpc vpc) {
35963621
if (voff != null) {
35973622
response.setVpcOfferingId(voff.getUuid());
35983623
response.setVpcOfferingName(voff.getName());
3599-
3624+
response.setVpcOfferingConserveMode(voff.isConserveMode());
36003625
}
36013626
response.setCidr(vpc.getCidr());
36023627
response.setRestartRequired(vpc.isRestartRequired());
@@ -3692,7 +3717,9 @@ public VpcResponse createVpcResponse(ResponseView view, Vpc vpc) {
36923717
}
36933718
}
36943719

3695-
3720+
if (CallContext.current().getCallingAccount().getType() == Account.Type.ADMIN) {
3721+
response.setKeepMacAddressOnPublicNic(vpc.getKeepMacAddressOnPublicNic());
3722+
}
36963723
response.setObjectName("vpc");
36973724
return response;
36983725
}
@@ -3987,7 +4014,14 @@ public Site2SiteCustomerGatewayResponse createSite2SiteCustomerGatewayResponse(S
39874014
response.setIkeVersion(result.getIkeVersion());
39884015
response.setSplitConnections(result.getSplitConnections());
39894016

3990-
4017+
Set<String> obsoleteParameters = site2SiteVpnManager.getObsoleteVpnGatewayParameters(result);
4018+
if (CollectionUtils.isNotEmpty(obsoleteParameters)) {
4019+
response.setContainsObsoleteParameters(obsoleteParameters.toString());
4020+
}
4021+
Set<String> excludedParameters = site2SiteVpnManager.getExcludedVpnGatewayParameters(result);
4022+
if (CollectionUtils.isNotEmpty(excludedParameters)) {
4023+
response.setContainsExcludedParameters(excludedParameters.toString());
4024+
}
39914025

39924026
response.setObjectName("vpncustomergateway");
39934027
response.setHasAnnotation(annotationDao.hasAnnotations(result.getUuid(), AnnotationService.EntityType.VPN_CUSTOMER_GATEWAY.name(),
@@ -4533,8 +4567,13 @@ private UsageResourceDetails populateTemplateOrIsoUsageResponse(Usage usageRecor
45334567
builder.append("ISO usage");
45344568
}
45354569
if (tmpl != null) {
4536-
builder.append(" for ").append(tmpl.getName()).append(" (").append(tmpl.getUuid()).append(") ")
4537-
.append("with size ").append(toHumanReadableSize(usageRecord.getSize())).append(" and virtual size ").append(toHumanReadableSize(usageRecord.getVirtualSize()));
4570+
builder.append(" for ").append(tmpl.getName()).append(" (").append(tmpl.getUuid()).append(")");
4571+
if (usageRecord.getSize() != null) {
4572+
builder.append(" with size ").append(toHumanReadableSize(usageRecord.getSize()));
4573+
}
4574+
if (usageRecord.getVirtualSize() != null) {
4575+
builder.append(" and virtual size ").append(toHumanReadableSize(usageRecord.getVirtualSize()));
4576+
}
45384577
}
45394578
usageRecResponse.setDescription(builder.toString());
45404579
}
@@ -4556,8 +4595,10 @@ private UsageResourceDetails populateSnapshotUsageResponse(Usage usageRecord, Us
45564595
final StringBuilder builder = new StringBuilder();
45574596
builder.append("Snapshot usage ");
45584597
if (snap != null) {
4559-
builder.append("for ").append(snap.getName()).append(" (").append(snap.getUuid()).append(") ")
4560-
.append("with size ").append(toHumanReadableSize(usageRecord.getSize()));
4598+
builder.append("for ").append(snap.getName()).append(" (").append(snap.getUuid()).append(")");
4599+
if (usageRecord.getSize() != null) {
4600+
builder.append(" with size ").append(toHumanReadableSize(usageRecord.getSize()));
4601+
}
45614602
}
45624603
usageRecResponse.setDescription(builder.toString());
45634604
}
@@ -4623,7 +4664,8 @@ private UsageResourceDetails populateNetworkOfferingUsageResponse(Usage usageRec
46234664
}
46244665
usageRecResponse.setDescription(builder.toString());
46254666
}
4626-
return new UsageResourceDetails();
4667+
UsageResourceDetails resourceDetails = new UsageResourceDetails();
4668+
return resourceDetails;
46274669
}
46284670

46294671
private UsageResourceDetails populateVpnUsersUsageResponse(Usage usageRecord, UsageRecordResponse usageRecResponse, boolean oldFormat) {
@@ -4640,7 +4682,8 @@ private UsageResourceDetails populateVpnUsersUsageResponse(Usage usageRecord, Us
46404682
}
46414683
usageRecResponse.setDescription(builder.toString());
46424684
}
4643-
return new UsageResourceDetails();
4685+
UsageResourceDetails resourceDetails = new UsageResourceDetails();
4686+
return resourceDetails;
46444687
}
46454688

46464689
private UsageResourceDetails populateSecurityGroupUsageResponse(Usage usageRecord, UsageRecordResponse usageRecResponse, boolean oldFormat, VMInstanceVO vmInstance) {
@@ -4760,7 +4803,8 @@ private UsageResourceDetails populateVolumeSecondaryUsageResponse(Usage usageRec
47604803
}
47614804
usageRecResponse.setDescription(builder.toString());
47624805
}
4763-
return new UsageResourceDetails();
4806+
UsageResourceDetails resourceDetails = new UsageResourceDetails();
4807+
return resourceDetails;
47644808
}
47654809

47664810
private UsageResourceDetails populateVmSnapshotOnPrimaryUsageResponse(Usage usageRecord, UsageRecordResponse usageRecResponse, boolean oldFormat, VMInstanceVO vmInstance) {
@@ -4799,7 +4843,8 @@ private UsageResourceDetails populateBucketUsageResponse(Usage usageRecord, Usag
47994843
usageRecResponse.setUsageId(bucket.getUuid());
48004844
usageRecResponse.setResourceName(bucket.getName());
48014845
}
4802-
return new UsageResourceDetails();
4846+
UsageResourceDetails resourceDetails = new UsageResourceDetails();
4847+
return resourceDetails;
48034848
}
48044849

48054850
private static class UsageResourceDetails {
@@ -4912,7 +4957,7 @@ public NicSecondaryIpResponse createSecondaryIPToNicResponse(NicSecondaryIp resu
49124957
setResponseIpAddress(result, response);
49134958
response.setNicId(nic.getUuid());
49144959
response.setNwId(network.getUuid());
4915-
4960+
response.setDescription(result.getDescription());
49164961
response.setObjectName("nicsecondaryip");
49174962
return response;
49184963
}
@@ -4999,7 +5044,7 @@ public NicResponse createNicResponse(Nic result) {
49995044
for (NicSecondaryIpVO ip : secondaryIps) {
50005045
NicSecondaryIpResponse ipRes = new NicSecondaryIpResponse();
50015046
ipRes.setId(ip.getUuid());
5002-
5047+
ipRes.setDescription(ip.getDescription());
50035048
setResponseIpAddress(ip, ipRes);
50045049
ipList.add(ipRes);
50055050
}
@@ -5030,6 +5075,7 @@ public NicResponse createNicResponse(Nic result) {
50305075
response.setVpcName(vpc.getName());
50315076
}
50325077

5078+
response.setEnabled(result.isEnabled());
50335079
return response;
50345080
}
50355081

@@ -5273,52 +5319,20 @@ public SSHKeyPairResponse createSSHKeyPairResponse(SSHKeyPair sshkeyPair, boolea
52735319

52745320
@Override
52755321
public ApiKeyPairResponse createKeyPairResponse(ApiKeyPair keyPair) {
5276-
ApiKeyPairResponse response = new ApiKeyPairResponse();
5277-
if (keyPair == null) {
5278-
return response;
5279-
}
5280-
response.setId(keyPair.getUuid());
5281-
response.setName(keyPair.getName());
5282-
response.setApiKey(keyPair.getApiKey());
5283-
response.setSecretKey(keyPair.getSecretKey());
5284-
response.setDescription(keyPair.getDescription());
5285-
response.setStartDate(keyPair.getStartDate());
5286-
response.setEndDate(keyPair.getEndDate());
5287-
response.setCreated(keyPair.getCreated());
5288-
5289-
// populate account
5290-
try {
5291-
Account account = ApiDBUtils.findAccountById(keyPair.getAccountId());
5292-
if (account != null && account.getType() != Account.Type.PROJECT) {
5293-
response.setAccountName(account.getAccountName());
5294-
}
5295-
} catch (Exception e) {
5296-
logger.debug("Unable to populate account for ApiKeyPairResponse", e);
5297-
}
5322+
ApiKeyPairResponse apiKeyPairResponse = new ApiKeyPairResponse();
52985323

5299-
try {
5300-
Domain domain = ApiDBUtils.findDomainById(keyPair.getDomainId());
5301-
if (domain != null) {
5302-
response.setDomainId(domain.getUuid());
5303-
response.setDomainName(domain.getName());
5304-
response.setDomainPath(getPrettyDomainPath(domain.getPath()));
5305-
}
5306-
} catch (Exception e) {
5307-
logger.debug("Unable to populate domain for ApiKeyPairResponse", e);
5308-
}
5324+
populateApiKeyPairInApiKeyPairResponse(keyPair, apiKeyPairResponse);
5325+
populateUserInApiKeyPairResponse(keyPair, apiKeyPairResponse);
53095326

5310-
// user
5311-
try {
5312-
User user = ApiDBUtils.findUserById(keyPair.getUserId());
5313-
if (user != null) {
5314-
response.setUserId(user.getUuid());
5315-
response.setUsername(user.getUsername());
5316-
}
5317-
} catch (Exception e) {
5318-
logger.debug("Unable to populate user for ApiKeyPairResponse", e);
5319-
}
5327+
AccountVO account = accountDao.findByIdIncludingRemoved(keyPair.getAccountId());
5328+
apiKeyPairResponse.setAccountId(account.getUuid());
5329+
apiKeyPairResponse.setAccountName(account.getAccountName());
5330+
apiKeyPairResponse.setAccountType(account.getType().toString());
53205331

5321-
return response;
5332+
populateDomainInApiKeyPairResponse(account.getDomainId(), apiKeyPairResponse);
5333+
populateRoleInApiKeyPairResponse(account.getRoleId(), apiKeyPairResponse);
5334+
5335+
return apiKeyPairResponse;
53225336
}
53235337

53245338
@Override

0 commit comments

Comments
 (0)