Skip to content

Commit d8d87ad

Browse files
committed
Merge branch 'master' into api_refactoring
Conflicts: api/src/com/cloud/api/commands/ListS3sCmd.java server/src/com/cloud/configuration/ConfigurationManagerImpl.java setup/db/db/schema-40to410.sql Signed-off-by: Rohit Yadav <bhaisaab@apache.org>
2 parents d928014 + e4583ce commit d8d87ad

15 files changed

Lines changed: 345 additions & 107 deletions

File tree

api/src/com/cloud/api/commands/ListS3sCmd.java

Lines changed: 0 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -18,15 +18,11 @@
1818
*/
1919
package com.cloud.api.commands;
2020

21-
import static org.apache.cloudstack.api.ApiConstants.ID;
22-
import static org.apache.cloudstack.api.BaseCmd.CommandType.LONG;
23-
2421
import java.util.ArrayList;
2522
import java.util.List;
2623

2724
import org.apache.cloudstack.api.APICommand;
2825
import org.apache.cloudstack.api.BaseListCmd;
29-
import org.apache.cloudstack.api.Parameter;
3026
import org.apache.cloudstack.api.ServerApiException;
3127
import org.apache.cloudstack.api.response.ListResponse;
3228
import com.cloud.api.response.S3Response;
@@ -42,9 +38,6 @@ public final class ListS3sCmd extends BaseListCmd {
4238

4339
private static final String COMMAND_NAME = "lists3sresponse";
4440

45-
@Parameter(name = ID, type = LONG, required = true, description = "The ID of the S3")
46-
private Long id;
47-
4841
@Override
4942
public void execute() throws ResourceUnavailableException, InsufficientCapacityException,
5043
ServerApiException, ConcurrentOperationException, ResourceAllocationException,
@@ -74,39 +67,9 @@ public void execute() throws ResourceUnavailableException, InsufficientCapacityE
7467

7568
}
7669

77-
@Override
78-
public boolean equals(final Object thatObject) {
79-
80-
if (this == thatObject) {
81-
return true;
82-
}
83-
84-
if (thatObject == null || getClass() != thatObject.getClass()) {
85-
return false;
86-
}
87-
88-
final ListS3sCmd thatListS3sCmd = (ListS3sCmd) thatObject;
89-
90-
if (this.id != null ? !this.id.equals(thatListS3sCmd.id) : thatListS3sCmd.id != null) {
91-
return false;
92-
}
93-
94-
return true;
95-
96-
}
97-
98-
@Override
99-
public int hashCode() {
100-
return this.id != null ? this.id.hashCode() : 0;
101-
}
102-
10370
@Override
10471
public String getCommandName() {
10572
return COMMAND_NAME;
10673
}
10774

108-
public Long getId() {
109-
return this.id;
110-
}
111-
11275
}

build/package.xml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -217,6 +217,10 @@
217217
<include name="discovery-*.jar" />
218218
<include name="wsdl4j-*.jar" />
219219
<include name="ejb-api-3.0.jar" />
220+
<include name="aws-java-sdk-1.3.21.1.jar" />
221+
<include name="httpclient-4.1.jar" />
222+
<include name="httpcore-4.1.jar" />
223+
<include name="commons-lang-2.1.jar" />
220224
</zipfileset>
221225
<zipfileset dir="${jar.dir}">
222226
<include name="${agent.jar}" />

server/src/com/cloud/configuration/ConfigurationManagerImpl.java

Lines changed: 47 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -53,39 +53,71 @@
5353
import org.apache.cloudstack.api.command.admin.zone.DeleteZoneCmd;
5454
import org.apache.cloudstack.api.command.admin.zone.UpdateZoneCmd;
5555
import org.apache.cloudstack.api.command.admin.offering.CreateServiceOfferingCmd;
56+
import org.apache.cloudstack.api.command.admin.offering.DeleteServiceOfferingCmd;
57+
import org.apache.cloudstack.api.command.admin.vlan.DeleteVlanIpRangeCmd;
58+
import org.apache.cloudstack.api.command.user.network.ListNetworkOfferingsCmd;
5659
import org.apache.log4j.Logger;
5760

5861
import com.cloud.acl.SecurityChecker;
5962
import com.cloud.alert.AlertManager;
6063
import org.apache.cloudstack.api.ApiConstants.LDAPParams;
6164
import com.cloud.api.ApiDBUtils;
62-
import org.apache.cloudstack.api.command.admin.offering.DeleteServiceOfferingCmd;
63-
import org.apache.cloudstack.api.command.admin.vlan.DeleteVlanIpRangeCmd;
64-
import org.apache.cloudstack.api.command.user.network.ListNetworkOfferingsCmd;
6565
import com.cloud.capacity.dao.CapacityDao;
6666
import com.cloud.configuration.Resource.ResourceType;
6767
import com.cloud.configuration.dao.ConfigurationDao;
68-
import com.cloud.dc.*;
68+
import com.cloud.dc.AccountVlanMapVO;
69+
import com.cloud.dc.ClusterVO;
70+
import com.cloud.dc.DataCenter;
6971
import com.cloud.dc.DataCenter.NetworkType;
72+
import com.cloud.dc.DataCenterIpAddressVO;
73+
import com.cloud.dc.DataCenterLinkLocalIpAddressVO;
74+
import com.cloud.dc.DataCenterVO;
75+
import com.cloud.dc.HostPodVO;
76+
import com.cloud.dc.Pod;
77+
import com.cloud.dc.PodVlanMapVO;
78+
import com.cloud.dc.Vlan;
7079
import com.cloud.dc.Vlan.VlanType;
71-
import com.cloud.dc.dao.*;
80+
import com.cloud.dc.VlanVO;
81+
import com.cloud.dc.dao.AccountVlanMapDao;
82+
import com.cloud.dc.dao.ClusterDao;
83+
import com.cloud.dc.dao.DataCenterDao;
84+
import com.cloud.dc.dao.DataCenterIpAddressDao;
85+
import com.cloud.dc.dao.DataCenterLinkLocalIpAddressDaoImpl;
86+
import com.cloud.dc.dao.HostPodDao;
87+
import com.cloud.dc.dao.PodVlanMapDao;
88+
import com.cloud.dc.dao.VlanDao;
7289
import com.cloud.deploy.DataCenterDeployment;
7390
import com.cloud.domain.Domain;
7491
import com.cloud.domain.DomainVO;
7592
import com.cloud.domain.dao.DomainDao;
7693
import com.cloud.event.ActionEvent;
7794
import com.cloud.event.EventTypes;
78-
import com.cloud.exception.*;
95+
import com.cloud.exception.ConcurrentOperationException;
96+
import com.cloud.exception.InsufficientCapacityException;
97+
import com.cloud.exception.InvalidParameterValueException;
98+
import com.cloud.exception.PermissionDeniedException;
99+
import com.cloud.exception.ResourceAllocationException;
100+
import com.cloud.exception.ResourceUnavailableException;
79101
import com.cloud.host.HostVO;
80102
import com.cloud.hypervisor.Hypervisor.HypervisorType;
81-
import com.cloud.network.*;
103+
import com.cloud.network.IPAddressVO;
104+
import com.cloud.network.Network;
82105
import com.cloud.network.Network.Capability;
83106
import com.cloud.network.Network.GuestType;
84107
import com.cloud.network.Network.Provider;
85108
import com.cloud.network.Network.Service;
109+
import com.cloud.network.NetworkManager;
110+
import com.cloud.network.NetworkVO;
86111
import com.cloud.network.Networks.BroadcastDomainType;
87112
import com.cloud.network.Networks.TrafficType;
88-
import com.cloud.network.dao.*;
113+
import com.cloud.network.PhysicalNetwork;
114+
import com.cloud.network.PhysicalNetworkVO;
115+
import com.cloud.network.dao.FirewallRulesDao;
116+
import com.cloud.network.dao.IPAddressDao;
117+
import com.cloud.network.dao.NetworkDao;
118+
import com.cloud.network.dao.PhysicalNetworkDao;
119+
import com.cloud.network.dao.PhysicalNetworkTrafficTypeDao;
120+
import com.cloud.network.dao.PhysicalNetworkTrafficTypeVO;
89121
import com.cloud.network.vpc.VpcManager;
90122
import com.cloud.offering.DiskOffering;
91123
import com.cloud.offering.NetworkOffering;
@@ -110,7 +142,12 @@
110142
import com.cloud.storage.secondary.SecondaryStorageVmManager;
111143
import com.cloud.storage.swift.SwiftManager;
112144
import com.cloud.test.IPRangeConfig;
113-
import com.cloud.user.*;
145+
import com.cloud.user.Account;
146+
import com.cloud.user.AccountManager;
147+
import com.cloud.user.AccountVO;
148+
import com.cloud.user.ResourceLimitService;
149+
import com.cloud.user.User;
150+
import com.cloud.user.UserContext;
114151
import com.cloud.user.dao.AccountDao;
115152
import com.cloud.utils.NumbersUtil;
116153
import com.cloud.utils.StringUtils;
@@ -126,20 +163,8 @@
126163
import com.cloud.utils.net.NetUtils;
127164
import com.cloud.vm.VirtualMachine;
128165
import com.cloud.vm.dao.NicDao;
129-
import edu.emory.mathcs.backport.java.util.Arrays;
130-
import org.apache.log4j.Logger;
131166

132-
import javax.ejb.Local;
133-
import javax.naming.ConfigurationException;
134-
import javax.naming.Context;
135-
import javax.naming.NamingException;
136-
import javax.naming.directory.DirContext;
137-
import javax.naming.directory.InitialDirContext;
138-
import java.net.URI;
139-
import java.sql.PreparedStatement;
140-
import java.sql.ResultSet;
141-
import java.sql.SQLException;
142-
import java.util.*;
167+
import edu.emory.mathcs.backport.java.util.Arrays;
143168

144169
@Local(value = { ConfigurationManager.class, ConfigurationService.class })
145170
public class ConfigurationManagerImpl implements ConfigurationManager, ConfigurationService {

server/src/com/cloud/server/ManagementServerImpl.java

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -210,6 +210,7 @@
210210
import com.cloud.storage.dao.UploadDao;
211211
import com.cloud.storage.dao.VMTemplateDao;
212212
import com.cloud.storage.dao.VolumeDao;
213+
import com.cloud.storage.s3.S3Manager;
213214
import com.cloud.storage.secondary.SecondaryStorageVmManager;
214215
import com.cloud.storage.snapshot.SnapshotManager;
215216
import com.cloud.storage.swift.SwiftManager;
@@ -300,6 +301,7 @@ public class ManagementServerImpl implements ManagementServer {
300301
private final ConsoleProxyManager _consoleProxyMgr;
301302
private final SecondaryStorageVmManager _secStorageVmMgr;
302303
private final SwiftManager _swiftMgr;
304+
private final S3Manager _s3Mgr;
303305
private final ServiceOfferingDao _offeringsDao;
304306
private final DiskOfferingDao _diskOfferingDao;
305307
private final VMTemplateDao _templateDao;
@@ -381,6 +383,7 @@ protected ManagementServerImpl() {
381383
_consoleProxyMgr = locator.getManager(ConsoleProxyManager.class);
382384
_secStorageVmMgr = locator.getManager(SecondaryStorageVmManager.class);
383385
_swiftMgr = locator.getManager(SwiftManager.class);
386+
_s3Mgr = locator.getManager(S3Manager.class);
384387
_storageMgr = locator.getManager(StorageManager.class);
385388
_publicIpAddressDao = locator.getDao(IPAddressDao.class);
386389
_consoleProxyDao = locator.getDao(ConsoleProxyDao.class);
@@ -1421,6 +1424,29 @@ private Set<Pair<Long, Long>> listTemplates(Long templateId, String name, String
14211424
}
14221425
templateZonePairSet.add(new Pair<Long, Long>(template.getId(), zoneId));
14231426
}
1427+
} else if (_s3Mgr.isS3Enabled()) {
1428+
if (template == null) {
1429+
templateZonePairSet = _templateDao.searchSwiftTemplates(name, keyword, templateFilter, isIso,
1430+
hypers, bootable, domain, pageSize, startIndex, zoneId, hyperType, onlyReady, showDomr,
1431+
permittedAccounts, caller, tags);
1432+
Set<Pair<Long, Long>> templateZonePairSet2 = new HashSet<Pair<Long, Long>>();
1433+
templateZonePairSet2 = _templateDao.searchTemplates(name, keyword, templateFilter, isIso, hypers,
1434+
bootable, domain, pageSize, startIndex, zoneId, hyperType, onlyReady, showDomr,
1435+
permittedAccounts, caller, listProjectResourcesCriteria, tags);
1436+
1437+
for (Pair<Long, Long> tmpltPair : templateZonePairSet2) {
1438+
if (!templateZonePairSet.contains(new Pair<Long, Long>(tmpltPair.first(), -1L))) {
1439+
templateZonePairSet.add(tmpltPair);
1440+
}
1441+
}
1442+
} else {
1443+
// if template is not public, perform permission check here
1444+
if (!template.isPublicTemplate() && caller.getType() != Account.ACCOUNT_TYPE_ADMIN) {
1445+
Account owner = _accountMgr.getAccount(template.getAccountId());
1446+
_accountMgr.checkAccess(caller, null, true, owner);
1447+
}
1448+
templateZonePairSet.add(new Pair<Long, Long>(template.getId(), zoneId));
1449+
}
14241450
} else {
14251451
if (template == null) {
14261452
templateZonePairSet = _templateDao.searchTemplates(name, keyword, templateFilter, isIso, hypers, bootable, domain, pageSize,

server/src/com/cloud/storage/dao/VMTemplateDao.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,10 @@ public Set<Pair<Long, Long>> searchSwiftTemplates(String name, String keyword, T
5858
boolean isIso, List<HypervisorType> hypers, Boolean bootable, DomainVO domain, Long pageSize, Long startIndex,
5959
Long zoneId, HypervisorType hyperType, boolean onlyReady, boolean showDomr, List<Account> permittedAccounts, Account caller, Map<String, String> tags);
6060

61+
public Set<Pair<Long, Long>> searchS3Templates(String name, String keyword, TemplateFilter templateFilter,
62+
boolean isIso, List<HypervisorType> hypers, Boolean bootable, DomainVO domain, Long pageSize, Long startIndex,
63+
Long zoneId, HypervisorType hyperType, boolean onlyReady, boolean showDomr, List<Account> permittedAccounts, Account caller, Map<String, String> tags);
64+
6165
public long addTemplateToZone(VMTemplateVO tmplt, long zoneId);
6266
public List<VMTemplateVO> listAllInZone(long dataCenterId);
6367

0 commit comments

Comments
 (0)