Skip to content

Commit f50ab59

Browse files
committed
Merge two HostTagVO and HostTagDaoImpl
1 parent 090c1e3 commit f50ab59

File tree

9 files changed

+100
-225
lines changed

9 files changed

+100
-225
lines changed

engine/schema/src/main/java/com/cloud/host/dao/HostTagsDao.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020

2121
import com.cloud.host.HostTagVO;
2222
import com.cloud.utils.db.GenericDao;
23+
import org.apache.cloudstack.api.response.HostTagResponse;
2324
import org.apache.cloudstack.framework.config.ConfigKey;
2425

2526
public interface HostTagsDao extends GenericDao<HostTagVO, Long> {
@@ -37,4 +38,7 @@ public interface HostTagsDao extends GenericDao<HostTagVO, Long> {
3738

3839
List<HostTagVO> findHostRuleTags();
3940

41+
HostTagResponse newHostTagResponse(HostTagVO hostTag);
42+
43+
List<HostTagVO> searchByIds(Long... hostTagIds);
4044
}

engine/schema/src/main/java/com/cloud/host/dao/HostTagsDaoImpl.java

Lines changed: 85 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,10 +16,13 @@
1616
// under the License.
1717
package com.cloud.host.dao;
1818

19+
import java.util.ArrayList;
1920
import java.util.List;
2021

22+
import org.apache.cloudstack.api.response.HostTagResponse;
2123
import org.apache.cloudstack.framework.config.ConfigKey;
2224
import org.apache.cloudstack.framework.config.Configurable;
25+
import org.apache.cloudstack.framework.config.dao.ConfigurationDao;
2326
import org.springframework.stereotype.Component;
2427

2528
import com.cloud.host.HostTagVO;
@@ -30,10 +33,17 @@
3033
import com.cloud.utils.db.TransactionLegacy;
3134
import com.cloud.utils.db.SearchCriteria.Func;
3235

36+
import javax.inject.Inject;
37+
3338
@Component
3439
public class HostTagsDaoImpl extends GenericDaoBase<HostTagVO, Long> implements HostTagsDao, Configurable {
3540
protected final SearchBuilder<HostTagVO> HostSearch;
3641
protected final GenericSearchBuilder<HostTagVO, String> DistinctImplictTagsSearch;
42+
private final SearchBuilder<HostTagVO> stSearch;
43+
private final SearchBuilder<HostTagVO> stIdSearch;
44+
45+
@Inject
46+
private ConfigurationDao _configDao;
3747

3848
public HostTagsDaoImpl() {
3949
HostSearch = createSearchBuilder();
@@ -46,6 +56,14 @@ public HostTagsDaoImpl() {
4656
DistinctImplictTagsSearch.and("hostIds", DistinctImplictTagsSearch.entity().getHostId(), SearchCriteria.Op.IN);
4757
DistinctImplictTagsSearch.and("implicitTags", DistinctImplictTagsSearch.entity().getTag(), SearchCriteria.Op.IN);
4858
DistinctImplictTagsSearch.done();
59+
60+
stSearch = createSearchBuilder();
61+
stSearch.and("idIN", stSearch.entity().getId(), SearchCriteria.Op.IN);
62+
stSearch.done();
63+
64+
stIdSearch = createSearchBuilder();
65+
stIdSearch.and("id", stIdSearch.entity().getId(), SearchCriteria.Op.EQ);
66+
stIdSearch.done();
4967
}
5068

5169
@Override
@@ -110,4 +128,71 @@ public ConfigKey<?>[] getConfigKeys() {
110128
public String getConfigComponentName() {
111129
return HostTagsDaoImpl.class.getSimpleName();
112130
}
131+
132+
@Override
133+
public HostTagResponse newHostTagResponse(HostTagVO tag) {
134+
HostTagResponse tagResponse = new HostTagResponse();
135+
136+
tagResponse.setName(tag.getTag());
137+
tagResponse.setHostId(tag.getHostId());
138+
139+
tagResponse.setObjectName("hosttag");
140+
141+
return tagResponse;
142+
}
143+
144+
@Override
145+
public List<HostTagVO> searchByIds(Long... stIds) {
146+
String batchCfg = _configDao.getValue("detail.batch.query.size");
147+
148+
final int detailsBatchSize = batchCfg != null ? Integer.parseInt(batchCfg) : 2000;
149+
150+
// query details by batches
151+
List<HostTagVO> uvList = new ArrayList<HostTagVO>();
152+
int curr_index = 0;
153+
154+
if (stIds.length > detailsBatchSize) {
155+
while ((curr_index + detailsBatchSize) <= stIds.length) {
156+
Long[] ids = new Long[detailsBatchSize];
157+
158+
for (int k = 0, j = curr_index; j < curr_index + detailsBatchSize; j++, k++) {
159+
ids[k] = stIds[j];
160+
}
161+
162+
SearchCriteria<HostTagVO> sc = stSearch.create();
163+
164+
sc.setParameters("idIN", (Object[])ids);
165+
166+
List<HostTagVO> vms = searchIncludingRemoved(sc, null, null, false);
167+
168+
if (vms != null) {
169+
uvList.addAll(vms);
170+
}
171+
172+
curr_index += detailsBatchSize;
173+
}
174+
}
175+
176+
if (curr_index < stIds.length) {
177+
int batch_size = (stIds.length - curr_index);
178+
// set the ids value
179+
Long[] ids = new Long[batch_size];
180+
181+
for (int k = 0, j = curr_index; j < curr_index + batch_size; j++, k++) {
182+
ids[k] = stIds[j];
183+
}
184+
185+
SearchCriteria<HostTagVO> sc = stSearch.create();
186+
187+
sc.setParameters("idIN", (Object[])ids);
188+
189+
List<HostTagVO> vms = searchIncludingRemoved(sc, null, null, false);
190+
191+
if (vms != null) {
192+
uvList.addAll(vms);
193+
}
194+
}
195+
196+
return uvList;
197+
}
113198
}

engine/schema/src/main/resources/META-INF/cloudstack/core/spring-engine-schema-core-daos-context.xml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -187,7 +187,6 @@
187187
<bean id="storageNetworkIpAddressDaoImpl" class="com.cloud.dc.dao.StorageNetworkIpAddressDaoImpl" />
188188
<bean id="storageNetworkIpRangeDaoImpl" class="com.cloud.dc.dao.StorageNetworkIpRangeDaoImpl" />
189189
<bean id="storagePoolJoinDaoImpl" class="com.cloud.api.query.dao.StoragePoolJoinDaoImpl" />
190-
<bean id="hostTagDaoImpl" class="com.cloud.api.query.dao.HostTagDaoImpl" />
191190
<bean id="storagePoolWorkDaoImpl" class="com.cloud.storage.dao.StoragePoolWorkDaoImpl" />
192191
<bean id="uploadDaoImpl" class="com.cloud.storage.dao.UploadDaoImpl" />
193192
<bean id="usageDaoImpl" class="com.cloud.usage.dao.UsageDaoImpl" />

server/src/main/java/com/cloud/api/ApiDBUtils.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -103,7 +103,6 @@
103103
import com.cloud.api.query.dao.DomainJoinDao;
104104
import com.cloud.api.query.dao.DomainRouterJoinDao;
105105
import com.cloud.api.query.dao.HostJoinDao;
106-
import com.cloud.api.query.dao.HostTagDao;
107106
import com.cloud.api.query.dao.ImageStoreJoinDao;
108107
import com.cloud.api.query.dao.InstanceGroupJoinDao;
109108
import com.cloud.api.query.dao.NetworkOfferingJoinDao;
@@ -129,7 +128,6 @@
129128
import com.cloud.api.query.vo.DomainRouterJoinVO;
130129
import com.cloud.api.query.vo.EventJoinVO;
131130
import com.cloud.api.query.vo.HostJoinVO;
132-
import com.cloud.api.query.vo.HostTagVO;
133131
import com.cloud.api.query.vo.ImageStoreJoinVO;
134132
import com.cloud.api.query.vo.InstanceGroupJoinVO;
135133
import com.cloud.api.query.vo.NetworkOfferingJoinVO;
@@ -183,9 +181,11 @@
183181
import com.cloud.ha.HighAvailabilityManager;
184182
import com.cloud.host.Host;
185183
import com.cloud.host.HostStats;
184+
import com.cloud.host.HostTagVO;
186185
import com.cloud.host.HostVO;
187186
import com.cloud.host.dao.HostDao;
188187
import com.cloud.host.dao.HostDetailsDao;
188+
import com.cloud.host.dao.HostTagsDao;
189189
import com.cloud.hypervisor.Hypervisor.HypervisorType;
190190
import com.cloud.network.IpAddress;
191191
import com.cloud.network.Network;
@@ -452,7 +452,7 @@ public class ApiDBUtils {
452452
static VolumeJoinDao s_volJoinDao;
453453
static StoragePoolJoinDao s_poolJoinDao;
454454
static StoragePoolTagsDao s_tagDao;
455-
static HostTagDao s_hostTagDao;
455+
static HostTagsDao s_hostTagDao;
456456
static ImageStoreJoinDao s_imageStoreJoinDao;
457457
static AccountJoinDao s_accountJoinDao;
458458
static AsyncJobJoinDao s_jobJoinDao;
@@ -675,7 +675,7 @@ public class ApiDBUtils {
675675
@Inject
676676
private StoragePoolTagsDao tagDao;
677677
@Inject
678-
private HostTagDao hosttagDao;
678+
private HostTagsDao hosttagDao;
679679
@Inject
680680
private ImageStoreJoinDao imageStoreJoinDao;
681681
@Inject

server/src/main/java/com/cloud/api/query/QueryManagerImpl.java

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -172,7 +172,6 @@
172172
import com.cloud.api.query.dao.DomainJoinDao;
173173
import com.cloud.api.query.dao.DomainRouterJoinDao;
174174
import com.cloud.api.query.dao.HostJoinDao;
175-
import com.cloud.api.query.dao.HostTagDao;
176175
import com.cloud.api.query.dao.ImageStoreJoinDao;
177176
import com.cloud.api.query.dao.InstanceGroupJoinDao;
178177
import com.cloud.api.query.dao.ManagementServerJoinDao;
@@ -197,7 +196,6 @@
197196
import com.cloud.api.query.vo.DomainRouterJoinVO;
198197
import com.cloud.api.query.vo.EventJoinVO;
199198
import com.cloud.api.query.vo.HostJoinVO;
200-
import com.cloud.api.query.vo.HostTagVO;
201199
import com.cloud.api.query.vo.ImageStoreJoinVO;
202200
import com.cloud.api.query.vo.InstanceGroupJoinVO;
203201
import com.cloud.api.query.vo.ManagementServerJoinVO;
@@ -229,8 +227,10 @@
229227
import com.cloud.exception.PermissionDeniedException;
230228
import com.cloud.ha.HighAvailabilityManager;
231229
import com.cloud.host.Host;
230+
import com.cloud.host.HostTagVO;
232231
import com.cloud.host.HostVO;
233232
import com.cloud.host.dao.HostDao;
233+
import com.cloud.host.dao.HostTagsDao;
234234
import com.cloud.hypervisor.Hypervisor;
235235
import com.cloud.hypervisor.Hypervisor.HypervisorType;
236236
import com.cloud.network.PublicIpQuarantine;
@@ -426,7 +426,7 @@ public class QueryManagerImpl extends MutualExclusiveIdsManagerBase implements Q
426426
private StoragePoolTagsDao _storageTagDao;
427427

428428
@Inject
429-
private HostTagDao _hostTagDao;
429+
private HostTagsDao _hostTagDao;
430430

431431
@Inject
432432
private ImageStoreJoinDao _imageStoreJoinDao;
@@ -2268,10 +2268,10 @@ public Pair<List<Long>, Integer> searchForServerIdsAndCount(ListHostsCmd cmd) {
22682268
if (haHosts != null && haTag != null && !haTag.isEmpty()) {
22692269
SearchBuilder<HostTagVO> hostTagSearchBuilder = _hostTagDao.createSearchBuilder();
22702270
if ((Boolean)haHosts) {
2271-
hostTagSearchBuilder.and("tag", hostTagSearchBuilder.entity().getName(), SearchCriteria.Op.EQ);
2271+
hostTagSearchBuilder.and("tag", hostTagSearchBuilder.entity().getTag(), SearchCriteria.Op.EQ);
22722272
} else {
2273-
hostTagSearchBuilder.and().op("tag", hostTagSearchBuilder.entity().getName(), Op.NEQ);
2274-
hostTagSearchBuilder.or("tagNull", hostTagSearchBuilder.entity().getName(), Op.NULL);
2273+
hostTagSearchBuilder.and().op("tag", hostTagSearchBuilder.entity().getTag(), Op.NEQ);
2274+
hostTagSearchBuilder.or("tagNull", hostTagSearchBuilder.entity().getTag(), Op.NULL);
22752275
hostTagSearchBuilder.cp();
22762276
}
22772277
hostSearchBuilder.join("hostTagSearch", hostTagSearchBuilder, hostSearchBuilder.entity().getId(), hostTagSearchBuilder.entity().getHostId(), JoinBuilder.JoinType.LEFT);

server/src/main/java/com/cloud/api/query/ViewResponseHelper.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,6 @@
7474
import com.cloud.api.query.vo.DomainRouterJoinVO;
7575
import com.cloud.api.query.vo.EventJoinVO;
7676
import com.cloud.api.query.vo.HostJoinVO;
77-
import com.cloud.api.query.vo.HostTagVO;
7877
import com.cloud.api.query.vo.ImageStoreJoinVO;
7978
import com.cloud.api.query.vo.InstanceGroupJoinVO;
8079
import com.cloud.api.query.vo.ProjectAccountJoinVO;
@@ -91,6 +90,7 @@
9190
import com.cloud.api.query.vo.VolumeJoinVO;
9291
import com.cloud.configuration.Resource;
9392
import com.cloud.domain.Domain;
93+
import com.cloud.host.HostTagVO;
9494
import com.cloud.storage.Storage.ImageFormat;
9595
import com.cloud.storage.StoragePoolTagVO;
9696
import com.cloud.storage.VolumeStats;

server/src/main/java/com/cloud/api/query/dao/HostTagDao.java

Lines changed: 0 additions & 30 deletions
This file was deleted.

0 commit comments

Comments
 (0)