mirror of
https://github.com/apache/cloudstack.git
synced 2025-10-26 08:42:29 +01:00
Made all resource details DAOs (nic_details, user_vm_details, template_details, volume_details, service_offering_details) extend from the same base class as although details are being stored in diff tables, those tables have the same structure and same accessors.
This commit is contained in:
parent
8e62fb7998
commit
0fb4d9d5a2
@ -16,12 +16,12 @@
|
||||
// under the License.
|
||||
package org.apache.cloudstack.api;
|
||||
|
||||
public interface ResourceDetail {
|
||||
public interface ResourceDetail extends InternalIdentity{
|
||||
|
||||
public long getResourceDetail();
|
||||
public long getResourceId();
|
||||
|
||||
public String getName();
|
||||
|
||||
public String getValue();
|
||||
|
||||
|
||||
}
|
||||
|
||||
@ -439,7 +439,7 @@ public class VirtualMachineManagerImpl extends ManagerBase implements VirtualMac
|
||||
VirtualMachineGuru guru = getVmGuru(vm);
|
||||
guru.finalizeExpunge(vm);
|
||||
//remove the overcommit detials from the uservm details
|
||||
_uservmDetailsDao.deleteDetails(vm.getId());
|
||||
_uservmDetailsDao.removeDetails(vm.getId());
|
||||
|
||||
// send hypervisor-dependent commands before removing
|
||||
List<Command> finalizeExpungeCommands = hvGuru.finalizeExpunge(vm);
|
||||
@ -810,11 +810,9 @@ public class VirtualMachineManagerImpl extends ManagerBase implements VirtualMac
|
||||
_uservmDetailsDao.persist(vmDetail_ram);
|
||||
} else if (_uservmDetailsDao.findDetail(vm.getId(), "cpuOvercommitRatio") != null) {
|
||||
UserVmDetailVO vmDetail_cpu = _uservmDetailsDao.findDetail(vm.getId(), "cpuOvercommitRatio");
|
||||
vmDetail_cpu.setValue(cluster_detail_cpu.getValue());
|
||||
UserVmDetailVO vmDetail_ram = _uservmDetailsDao.findDetail(vm.getId(), "memoryOvercommitRatio");
|
||||
vmDetail_ram.setValue(cluster_detail_ram.getValue());
|
||||
_uservmDetailsDao.update(vmDetail_cpu.getId(), vmDetail_cpu);
|
||||
_uservmDetailsDao.update(vmDetail_ram.getId(), vmDetail_ram);
|
||||
_uservmDetailsDao.addDetail(vmDetail_cpu);
|
||||
_uservmDetailsDao.addDetail(vmDetail_ram);
|
||||
}
|
||||
vmProfile.setCpuOvercommitRatio(Float.parseFloat(cluster_detail_cpu.getValue()));
|
||||
vmProfile.setMemoryOvercommitRatio(Float.parseFloat(cluster_detail_ram.getValue()));
|
||||
|
||||
@ -23,19 +23,18 @@ import javax.persistence.GenerationType;
|
||||
import javax.persistence.Id;
|
||||
import javax.persistence.Table;
|
||||
|
||||
import org.apache.cloudstack.api.InternalIdentity;
|
||||
import org.apache.cloudstack.api.ResourceDetail;
|
||||
|
||||
@Entity
|
||||
@Table(name="data_center_details")
|
||||
public class DataCenterDetailVO implements InternalIdentity, ResourceDetail {
|
||||
public class DataCenterDetailVO implements ResourceDetail {
|
||||
@Id
|
||||
@GeneratedValue(strategy=GenerationType.IDENTITY)
|
||||
@Column(name="id")
|
||||
private long id;
|
||||
|
||||
@Column(name="dc_id")
|
||||
private long dcId;
|
||||
private long resourceId;
|
||||
|
||||
@Column(name="name")
|
||||
private String name;
|
||||
@ -47,33 +46,29 @@ public class DataCenterDetailVO implements InternalIdentity, ResourceDetail {
|
||||
}
|
||||
|
||||
public DataCenterDetailVO(long dcId, String name, String value) {
|
||||
this.dcId = dcId;
|
||||
this.resourceId = dcId;
|
||||
this.name = name;
|
||||
this.value = value;
|
||||
}
|
||||
|
||||
|
||||
public long getDcId() {
|
||||
return dcId;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getName() {
|
||||
return name;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getValue() {
|
||||
return value;
|
||||
}
|
||||
|
||||
public void setValue(String value) {
|
||||
this.value = value;
|
||||
}
|
||||
|
||||
@Override
|
||||
public long getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
@Override
|
||||
public long getResourceDetail() {
|
||||
return dcId;
|
||||
public long getResourceId() {
|
||||
return resourceId;
|
||||
}
|
||||
}
|
||||
|
||||
@ -26,9 +26,11 @@ import javax.inject.Inject;
|
||||
import javax.naming.ConfigurationException;
|
||||
import javax.persistence.TableGenerator;
|
||||
|
||||
import org.apache.cloudstack.api.ResourceDetail;
|
||||
import org.apache.log4j.Logger;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import com.cloud.dc.DataCenterDetailVO;
|
||||
import com.cloud.dc.DataCenterIpAddressVO;
|
||||
import com.cloud.dc.DataCenterLinkLocalIpAddressVO;
|
||||
import com.cloud.dc.DataCenterVO;
|
||||
@ -366,7 +368,13 @@ public class DataCenterDaoImpl extends GenericDaoBase<DataCenterVO, Long> implem
|
||||
if (details == null) {
|
||||
return;
|
||||
}
|
||||
_detailsDao.persist(zone.getId(), details);
|
||||
|
||||
List<DataCenterDetailVO> resourceDetails = new ArrayList<DataCenterDetailVO>();
|
||||
for (String key : details.keySet()) {
|
||||
resourceDetails.add(new DataCenterDetailVO(zone.getId(), key, details.get(key)));
|
||||
}
|
||||
|
||||
_detailsDao.addDetails(resourceDetails);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@ -16,22 +16,8 @@
|
||||
// under the License.
|
||||
package com.cloud.dc.dao;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import com.cloud.dc.DataCenterDetailVO;
|
||||
import com.cloud.utils.db.GenericDao;
|
||||
|
||||
public interface DataCenterDetailsDao extends GenericDao<DataCenterDetailVO, Long> {
|
||||
Map<String, String> findDetails(long dcId);
|
||||
|
||||
void persist(long dcId, Map<String, String> details);
|
||||
|
||||
DataCenterDetailVO findDetail(long dcId, String name);
|
||||
|
||||
void deleteDetails(long dcId);
|
||||
|
||||
void removeDetails(long id, String key);
|
||||
|
||||
List<DataCenterDetailVO> findDetailsList(long dcId);
|
||||
public interface DataCenterDetailsDao extends GenericDao<DataCenterDetailVO, Long>, ResourceDetailDao<DataCenterDetailVO> {
|
||||
}
|
||||
@ -16,117 +16,29 @@
|
||||
// under the License.
|
||||
package com.cloud.dc.dao;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import javax.ejb.Local;
|
||||
|
||||
import com.cloud.vm.UserVmDetailVO;
|
||||
import org.apache.cloudstack.api.ResourceDetail;
|
||||
import org.apache.cloudstack.framework.config.ConfigKey;
|
||||
import org.apache.cloudstack.framework.config.ConfigKey.Scope;
|
||||
import org.apache.cloudstack.framework.config.ScopedConfigStorage;
|
||||
|
||||
import com.cloud.dc.DataCenterDetailVO;
|
||||
import com.cloud.utils.db.GenericDaoBase;
|
||||
import com.cloud.utils.db.SearchBuilder;
|
||||
import com.cloud.utils.db.SearchCriteria;
|
||||
import com.cloud.utils.db.TransactionLegacy;
|
||||
|
||||
@Local(value=DataCenterDetailsDao.class)
|
||||
public class DataCenterDetailsDaoImpl extends GenericDaoBase<DataCenterDetailVO, Long> implements DataCenterDetailsDao, ScopedConfigStorage {
|
||||
protected final SearchBuilder<DataCenterDetailVO> DcSearch;
|
||||
protected final SearchBuilder<DataCenterDetailVO> DetailSearch;
|
||||
public class DataCenterDetailsDaoImpl extends ResourceDetailDaoImpl<DataCenterDetailVO> implements DataCenterDetailsDao, ScopedConfigStorage {
|
||||
|
||||
public DataCenterDetailsDaoImpl() {
|
||||
DcSearch = createSearchBuilder();
|
||||
DcSearch.and("dcId", DcSearch.entity().getDcId(), SearchCriteria.Op.EQ);
|
||||
DcSearch.done();
|
||||
|
||||
DetailSearch = createSearchBuilder();
|
||||
DetailSearch.and("dcId", DetailSearch.entity().getDcId(), SearchCriteria.Op.EQ);
|
||||
DetailSearch.and("name", DetailSearch.entity().getName(), SearchCriteria.Op.EQ);
|
||||
DetailSearch.done();
|
||||
}
|
||||
|
||||
@Override
|
||||
public DataCenterDetailVO findDetail(long dcId, String name) {
|
||||
SearchCriteria<DataCenterDetailVO> sc = DetailSearch.create();
|
||||
sc.setParameters("dcId", dcId);
|
||||
sc.setParameters("name", name);
|
||||
|
||||
return findOneIncludingRemovedBy(sc);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Map<String, String> findDetails(long dcId) {
|
||||
SearchCriteria<DataCenterDetailVO> sc = DcSearch.create();
|
||||
sc.setParameters("dcId", dcId);
|
||||
|
||||
List<DataCenterDetailVO> results = search(sc, null);
|
||||
Map<String, String> details = new HashMap<String, String>(results.size());
|
||||
for (DataCenterDetailVO result : results) {
|
||||
details.put(result.getName(), result.getValue());
|
||||
}
|
||||
return details;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<DataCenterDetailVO> findDetailsList(long dcId) {
|
||||
SearchCriteria<DataCenterDetailVO> sc = DcSearch.create();
|
||||
sc.setParameters("dcId", dcId);
|
||||
|
||||
List<DataCenterDetailVO> results = search(sc, null);
|
||||
return results;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void deleteDetails(long dcId) {
|
||||
SearchCriteria<DataCenterDetailVO> sc = DcSearch.create();
|
||||
sc.setParameters("dcId", dcId);
|
||||
|
||||
List<DataCenterDetailVO> results = search(sc, null);
|
||||
for (DataCenterDetailVO result : results) {
|
||||
remove(result.getId());
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void removeDetails(long id, String key) {
|
||||
if(key != null){
|
||||
DataCenterDetailVO detail = findDetail(id, key);
|
||||
if(detail != null){
|
||||
remove(detail.getId());
|
||||
}
|
||||
}else {
|
||||
deleteDetails(id);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void persist(long dcId, Map<String, String> details) {
|
||||
TransactionLegacy txn = TransactionLegacy.currentTxn();
|
||||
txn.start();
|
||||
SearchCriteria<DataCenterDetailVO> sc = DcSearch.create();
|
||||
sc.setParameters("dcId", dcId);
|
||||
expunge(sc);
|
||||
|
||||
for (Map.Entry<String, String> detail : details.entrySet()) {
|
||||
DataCenterDetailVO vo = new DataCenterDetailVO(dcId, detail.getKey(), detail.getValue());
|
||||
persist(vo);
|
||||
}
|
||||
txn.commit();
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public Scope getScope() {
|
||||
return ConfigKey.Scope.Zone;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public String getConfigValue(long id, ConfigKey<?> key) {
|
||||
DataCenterDetailVO vo = findDetail(id, key.key());
|
||||
ResourceDetail vo = findDetail(id, key.key());
|
||||
return vo == null ? null : vo.getValue();
|
||||
}
|
||||
|
||||
|
||||
40
engine/schema/src/com/cloud/dc/dao/ResourceDetailDao.java
Normal file
40
engine/schema/src/com/cloud/dc/dao/ResourceDetailDao.java
Normal file
@ -0,0 +1,40 @@
|
||||
// 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.dc.dao;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import org.apache.cloudstack.api.ResourceDetail;
|
||||
|
||||
import com.cloud.utils.db.GenericDao;
|
||||
|
||||
public interface ResourceDetailDao<R extends ResourceDetail> extends GenericDao<R, Long>{
|
||||
public R findDetail(long resourceId, String name);
|
||||
|
||||
public Map<String, String> findDetails(long resourceId);
|
||||
|
||||
public List<R> findDetailsList(long resourceId);
|
||||
|
||||
public void removeDetails(long resourceId);
|
||||
|
||||
public void removeDetail(long resourceId, String key);
|
||||
|
||||
public void addDetails(List<R> details);
|
||||
|
||||
public void addDetail(R detail);
|
||||
}
|
||||
110
engine/schema/src/com/cloud/dc/dao/ResourceDetailDaoImpl.java
Normal file
110
engine/schema/src/com/cloud/dc/dao/ResourceDetailDaoImpl.java
Normal file
@ -0,0 +1,110 @@
|
||||
// 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.dc.dao;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import org.apache.cloudstack.api.ResourceDetail;
|
||||
|
||||
import com.cloud.utils.db.GenericDaoBase;
|
||||
import com.cloud.utils.db.SearchBuilder;
|
||||
import com.cloud.utils.db.SearchCriteria;
|
||||
import com.cloud.utils.db.TransactionLegacy;
|
||||
|
||||
|
||||
public abstract class ResourceDetailDaoImpl<R extends ResourceDetail> extends GenericDaoBase<R, Long>{
|
||||
private SearchBuilder<R> AllFieldsSearch;
|
||||
|
||||
public ResourceDetailDaoImpl() {
|
||||
AllFieldsSearch = createSearchBuilder();
|
||||
AllFieldsSearch.and("resourceId", AllFieldsSearch.entity().getResourceId(), SearchCriteria.Op.EQ);
|
||||
AllFieldsSearch.and("name", AllFieldsSearch.entity().getName(), SearchCriteria.Op.EQ);
|
||||
AllFieldsSearch.done();
|
||||
}
|
||||
|
||||
public R findDetail(long resourceId, String name) {
|
||||
SearchCriteria<R> sc = AllFieldsSearch.create();
|
||||
sc.setParameters("resourceId", resourceId);
|
||||
sc.setParameters("name", name);
|
||||
|
||||
return findOneBy(sc);
|
||||
}
|
||||
|
||||
|
||||
public Map<String, String> findDetails(long resourceId) {
|
||||
SearchCriteria<R> sc = AllFieldsSearch.create();
|
||||
sc.setParameters("resourceId", resourceId);
|
||||
|
||||
List<R> results = search(sc, null);
|
||||
Map<String, String> details = new HashMap<String, String>(results.size());
|
||||
for (R result : results) {
|
||||
details.put(result.getName(), result.getValue());
|
||||
}
|
||||
return details;
|
||||
}
|
||||
|
||||
public List<R> findDetailsList(long resourceId) {
|
||||
SearchCriteria<R> sc = AllFieldsSearch.create();
|
||||
sc.setParameters("resourceId", resourceId);
|
||||
|
||||
List<R> results = search(sc, null);
|
||||
return results;
|
||||
}
|
||||
|
||||
|
||||
public void removeDetails(long resourceId) {
|
||||
SearchCriteria<R> sc = AllFieldsSearch.create();
|
||||
sc.setParameters("resourceId", resourceId);
|
||||
remove(sc);
|
||||
}
|
||||
|
||||
|
||||
public void removeDetail(long resourceId, String key) {
|
||||
if (key != null){
|
||||
SearchCriteria<R> sc = AllFieldsSearch.create();
|
||||
sc.setParameters("name", key);
|
||||
remove(sc);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public void addDetails(List<R> details) {
|
||||
TransactionLegacy txn = TransactionLegacy.currentTxn();
|
||||
txn.start();
|
||||
SearchCriteria<R> sc = AllFieldsSearch.create();
|
||||
sc.setParameters("resourceId", details.get(0).getResourceId());
|
||||
expunge(sc);
|
||||
|
||||
for (R detail : details) {
|
||||
persist(detail);
|
||||
}
|
||||
|
||||
txn.commit();
|
||||
}
|
||||
|
||||
|
||||
public void addDetail(R detail) {
|
||||
R existingDetail = findDetail(detail.getResourceId(), detail.getName());
|
||||
if (existingDetail != null) {
|
||||
remove(existingDetail.getId());
|
||||
}
|
||||
persist(detail);
|
||||
}
|
||||
|
||||
}
|
||||
@ -16,9 +16,6 @@
|
||||
// under the License.
|
||||
package com.cloud.network.dao;
|
||||
|
||||
import org.apache.cloudstack.api.InternalIdentity;
|
||||
import org.apache.cloudstack.api.ResourceDetail;
|
||||
|
||||
import javax.persistence.Column;
|
||||
import javax.persistence.Entity;
|
||||
import javax.persistence.GeneratedValue;
|
||||
@ -26,16 +23,18 @@ import javax.persistence.GenerationType;
|
||||
import javax.persistence.Id;
|
||||
import javax.persistence.Table;
|
||||
|
||||
import org.apache.cloudstack.api.ResourceDetail;
|
||||
|
||||
@Entity
|
||||
@Table(name="network_details")
|
||||
public class NetworkDetailVO implements InternalIdentity, ResourceDetail {
|
||||
public class NetworkDetailVO implements ResourceDetail {
|
||||
@Id
|
||||
@GeneratedValue(strategy= GenerationType.IDENTITY)
|
||||
@Column(name="id")
|
||||
private long id;
|
||||
|
||||
@Column(name="network_id")
|
||||
private long networkId;
|
||||
private long resourceId;
|
||||
|
||||
@Column(name="name")
|
||||
private String name;
|
||||
@ -46,45 +45,28 @@ public class NetworkDetailVO implements InternalIdentity, ResourceDetail {
|
||||
public NetworkDetailVO() {}
|
||||
|
||||
public NetworkDetailVO(long networkId, String name, String value) {
|
||||
this.networkId = networkId;
|
||||
this.resourceId = networkId;
|
||||
this.name = name;
|
||||
this.value = value;
|
||||
}
|
||||
|
||||
public long getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
public long getNetworkId() {
|
||||
return networkId;
|
||||
}
|
||||
|
||||
public String getName() {
|
||||
return name;
|
||||
}
|
||||
|
||||
public String getValue() {
|
||||
return value;
|
||||
}
|
||||
|
||||
public void setId(long id) {
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
public void setNetworkId(long networkId) {
|
||||
this.networkId = networkId;
|
||||
}
|
||||
|
||||
public void setName(String name) {
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
public void setValue(String value) {
|
||||
this.value = value;
|
||||
}
|
||||
|
||||
@Override
|
||||
public long getResourceDetail() {
|
||||
return networkId;
|
||||
public long getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getName() {
|
||||
return name;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getValue() {
|
||||
return value;
|
||||
}
|
||||
|
||||
@Override
|
||||
public long getResourceId() {
|
||||
return resourceId;
|
||||
}
|
||||
}
|
||||
|
||||
@ -16,20 +16,9 @@
|
||||
// under the License.
|
||||
package com.cloud.network.dao;
|
||||
|
||||
import com.cloud.dc.dao.ResourceDetailDao;
|
||||
import com.cloud.utils.db.GenericDao;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
public interface NetworkDetailsDao extends GenericDao<NetworkDetailVO, Long> {
|
||||
List<NetworkDetailVO> findDetails(long networkId);
|
||||
|
||||
void persist(long networkId, Map<String, String> details);
|
||||
|
||||
NetworkDetailVO findDetail(long networkId, String name);
|
||||
|
||||
void deleteDetails(long networkId);
|
||||
|
||||
public void removeDetails(long networkId, String key);
|
||||
public interface NetworkDetailsDao extends GenericDao<NetworkDetailVO, Long>, ResourceDetailDao<NetworkDetailVO> {
|
||||
|
||||
}
|
||||
@ -16,78 +16,14 @@
|
||||
// under the License.
|
||||
package com.cloud.network.dao;
|
||||
|
||||
import com.cloud.utils.db.GenericDaoBase;
|
||||
import com.cloud.utils.db.SearchBuilder;
|
||||
import com.cloud.utils.db.SearchCriteria;
|
||||
import com.cloud.network.dao.NetworkDetailVO;
|
||||
import com.cloud.vm.dao.UserVmDetailsDao;
|
||||
import javax.ejb.Local;
|
||||
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import javax.ejb.Local;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import com.cloud.dc.dao.ResourceDetailDaoImpl;
|
||||
|
||||
@Component
|
||||
@Local(value=NetworkDetailsDao.class)
|
||||
public class NetworkDetailsDaoImpl extends GenericDaoBase<NetworkDetailVO, Long> implements NetworkDetailsDao {
|
||||
public class NetworkDetailsDaoImpl extends ResourceDetailDaoImpl<NetworkDetailVO> implements NetworkDetailsDao {
|
||||
|
||||
protected final SearchBuilder<NetworkDetailVO> NetworkSearch;
|
||||
protected final SearchBuilder<NetworkDetailVO> DetailSearch;
|
||||
|
||||
public NetworkDetailsDaoImpl() {
|
||||
NetworkSearch = createSearchBuilder();
|
||||
NetworkSearch.and("networkId", NetworkSearch.entity().getNetworkId(), SearchCriteria.Op.EQ);
|
||||
NetworkSearch.done();
|
||||
|
||||
DetailSearch = createSearchBuilder();
|
||||
DetailSearch.and("networkId", DetailSearch.entity().getNetworkId(), SearchCriteria.Op.EQ);
|
||||
DetailSearch.and("name", DetailSearch.entity().getName(), SearchCriteria.Op.EQ);
|
||||
DetailSearch.done();
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public List<NetworkDetailVO> findDetails(long networkId) {
|
||||
SearchCriteria<NetworkDetailVO> sc = NetworkSearch.create();
|
||||
sc.setParameters("networkId", networkId);
|
||||
|
||||
List<NetworkDetailVO> results = search(sc, null);
|
||||
return results;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void persist(long networkId, Map<String, String> details) {
|
||||
//To change body of implemented methods use File | Settings | File Templates.
|
||||
}
|
||||
|
||||
@Override
|
||||
public NetworkDetailVO findDetail(long networkId, String name) {
|
||||
SearchCriteria<NetworkDetailVO> sc = DetailSearch.create();
|
||||
sc.setParameters("networkId", networkId);
|
||||
sc.setParameters("name", name);
|
||||
|
||||
return findOneBy(sc); }
|
||||
|
||||
@Override
|
||||
public void deleteDetails(long networkId) {
|
||||
SearchCriteria<NetworkDetailVO> sc = NetworkSearch.create();
|
||||
sc.setParameters("networkId", networkId);
|
||||
|
||||
List<NetworkDetailVO> results = search(sc, null);
|
||||
for (NetworkDetailVO result : results) {
|
||||
remove(result.getId());
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void removeDetails(long networkId, String key) {
|
||||
if(key != null){
|
||||
NetworkDetailVO detail = findDetail(networkId, key);
|
||||
if(detail != null){
|
||||
remove(detail.getId());
|
||||
}
|
||||
}else {
|
||||
deleteDetails(networkId);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -16,8 +16,6 @@
|
||||
// under the License.
|
||||
package com.cloud.service;
|
||||
|
||||
import org.apache.cloudstack.api.InternalIdentity;
|
||||
|
||||
import javax.persistence.Column;
|
||||
import javax.persistence.Entity;
|
||||
import javax.persistence.GeneratedValue;
|
||||
@ -25,16 +23,18 @@ import javax.persistence.GenerationType;
|
||||
import javax.persistence.Id;
|
||||
import javax.persistence.Table;
|
||||
|
||||
import org.apache.cloudstack.api.ResourceDetail;
|
||||
|
||||
@Entity
|
||||
@Table(name="service_offering_details")
|
||||
public class ServiceOfferingDetailsVO implements InternalIdentity {
|
||||
public class ServiceOfferingDetailsVO implements ResourceDetail {
|
||||
@Id
|
||||
@GeneratedValue(strategy=GenerationType.IDENTITY)
|
||||
@Column(name="id")
|
||||
private long id;
|
||||
|
||||
@Column(name="service_offering_id")
|
||||
private long serviceOfferingId;
|
||||
private long resourceId;
|
||||
|
||||
@Column(name="name")
|
||||
private String name;
|
||||
@ -46,27 +46,27 @@ public class ServiceOfferingDetailsVO implements InternalIdentity {
|
||||
}
|
||||
|
||||
public ServiceOfferingDetailsVO(long serviceOfferingId, String name, String value) {
|
||||
this.serviceOfferingId = serviceOfferingId;
|
||||
this.resourceId = serviceOfferingId;
|
||||
this.name = name;
|
||||
this.value = value;
|
||||
}
|
||||
|
||||
public long getServiceOfferingId() {
|
||||
return serviceOfferingId;
|
||||
@Override
|
||||
public long getResourceId() {
|
||||
return resourceId;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getName() {
|
||||
return name;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getValue() {
|
||||
return value;
|
||||
}
|
||||
|
||||
public void setValue(String value) {
|
||||
this.value = value;
|
||||
}
|
||||
|
||||
@Override
|
||||
public long getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
@ -16,6 +16,7 @@
|
||||
// under the License.
|
||||
package com.cloud.service.dao;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
@ -27,6 +28,7 @@ import javax.persistence.EntityExistsException;
|
||||
import org.apache.log4j.Logger;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import com.cloud.service.ServiceOfferingDetailsVO;
|
||||
import com.cloud.service.ServiceOfferingVO;
|
||||
import com.cloud.utils.db.DB;
|
||||
import com.cloud.utils.db.GenericDaoBase;
|
||||
@ -167,8 +169,15 @@ public class ServiceOfferingDaoImpl extends GenericDaoBase<ServiceOfferingVO, Lo
|
||||
@Override
|
||||
public void saveDetails(ServiceOfferingVO serviceOffering) {
|
||||
Map<String, String> details = serviceOffering.getDetails();
|
||||
if (details != null) {
|
||||
detailsDao.persist(serviceOffering.getId(), details);
|
||||
if (details == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
List<ServiceOfferingDetailsVO> resourceDetails = new ArrayList<ServiceOfferingDetailsVO>();
|
||||
for (String key : details.keySet()) {
|
||||
resourceDetails.add(new ServiceOfferingDetailsVO(serviceOffering.getId(), key, details.get(key)));
|
||||
}
|
||||
|
||||
detailsDao.addDetails(resourceDetails);
|
||||
}
|
||||
}
|
||||
|
||||
@ -16,15 +16,9 @@
|
||||
// under the License.
|
||||
package com.cloud.service.dao;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
import com.cloud.dc.dao.ResourceDetailDao;
|
||||
import com.cloud.service.ServiceOfferingDetailsVO;
|
||||
import com.cloud.utils.db.GenericDao;
|
||||
|
||||
public interface ServiceOfferingDetailsDao extends GenericDao<ServiceOfferingDetailsVO, Long> {
|
||||
Map<String, String> findDetails(long serviceOfferingId);
|
||||
void persist(long serviceOfferingId, Map<String, String> details);
|
||||
ServiceOfferingDetailsVO findDetail(long serviceOfferingId, String name);
|
||||
void deleteDetails(long serviceOfferingId);
|
||||
void removeDetails(long offId, String key);
|
||||
public interface ServiceOfferingDetailsDao extends GenericDao<ServiceOfferingDetailsVO, Long>, ResourceDetailDao<ServiceOfferingDetailsVO> {
|
||||
}
|
||||
@ -16,96 +16,16 @@
|
||||
// under the License.
|
||||
package com.cloud.service.dao;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import javax.ejb.Local;
|
||||
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import com.cloud.dc.dao.ResourceDetailDaoImpl;
|
||||
import com.cloud.service.ServiceOfferingDetailsVO;
|
||||
import com.cloud.utils.db.GenericDaoBase;
|
||||
import com.cloud.utils.db.SearchBuilder;
|
||||
import com.cloud.utils.db.SearchCriteria;
|
||||
import com.cloud.utils.db.TransactionLegacy;
|
||||
|
||||
@Component
|
||||
@Local(value=ServiceOfferingDetailsDao.class)
|
||||
public class ServiceOfferingDetailsDaoImpl extends GenericDaoBase<ServiceOfferingDetailsVO, Long>
|
||||
public class ServiceOfferingDetailsDaoImpl extends ResourceDetailDaoImpl<ServiceOfferingDetailsVO>
|
||||
implements ServiceOfferingDetailsDao {
|
||||
protected final SearchBuilder<ServiceOfferingDetailsVO> ServiceOfferingSearch;
|
||||
protected final SearchBuilder<ServiceOfferingDetailsVO> DetailSearch;
|
||||
|
||||
public ServiceOfferingDetailsDaoImpl() {
|
||||
ServiceOfferingSearch = createSearchBuilder();
|
||||
ServiceOfferingSearch.and("serviceOfferingId", ServiceOfferingSearch.entity().getServiceOfferingId(), SearchCriteria.Op.EQ);
|
||||
ServiceOfferingSearch.done();
|
||||
|
||||
DetailSearch = createSearchBuilder();
|
||||
DetailSearch.and("serviceOfferingId", DetailSearch.entity().getServiceOfferingId(), SearchCriteria.Op.EQ);
|
||||
DetailSearch.and("name", DetailSearch.entity().getName(), SearchCriteria.Op.EQ);
|
||||
DetailSearch.done();
|
||||
}
|
||||
|
||||
@Override
|
||||
public ServiceOfferingDetailsVO findDetail(long serviceOfferingId, String name) {
|
||||
SearchCriteria<ServiceOfferingDetailsVO> sc = DetailSearch.create();
|
||||
sc.setParameters("serviceOfferingId", serviceOfferingId);
|
||||
sc.setParameters("name", name);
|
||||
ServiceOfferingDetailsVO detail = findOneIncludingRemovedBy(sc);
|
||||
return detail;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Map<String, String> findDetails(long serviceOfferingId) {
|
||||
SearchCriteria<ServiceOfferingDetailsVO> sc = ServiceOfferingSearch.create();
|
||||
sc.setParameters("serviceOfferingId", serviceOfferingId);
|
||||
List<ServiceOfferingDetailsVO> results = search(sc, null);
|
||||
Map<String, String> details = new HashMap<String, String>(results.size());
|
||||
for (ServiceOfferingDetailsVO result : results) {
|
||||
details.put(result.getName(), result.getValue());
|
||||
}
|
||||
|
||||
return details;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void deleteDetails(long serviceOfferingId) {
|
||||
SearchCriteria sc = ServiceOfferingSearch.create();
|
||||
sc.setParameters("serviceOfferingId", serviceOfferingId);
|
||||
List<ServiceOfferingDetailsVO> results = search(sc, null);
|
||||
for (ServiceOfferingDetailsVO result : results) {
|
||||
remove(result.getId());
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void persist(long serviceOfferingId, Map<String, String> details) {
|
||||
TransactionLegacy txn = TransactionLegacy.currentTxn();
|
||||
txn.start();
|
||||
SearchCriteria<ServiceOfferingDetailsVO> sc = ServiceOfferingSearch.create();
|
||||
sc.setParameters("serviceOfferingId", serviceOfferingId);
|
||||
expunge(sc);
|
||||
|
||||
for (Map.Entry<String, String> detail : details.entrySet()) {
|
||||
String value = detail.getValue();
|
||||
ServiceOfferingDetailsVO vo = new ServiceOfferingDetailsVO(serviceOfferingId, detail.getKey(), value);
|
||||
persist(vo);
|
||||
}
|
||||
txn.commit();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void removeDetails(long offId, String key) {
|
||||
if(key != null){
|
||||
ServiceOfferingDetailsVO detail = findDetail(offId, key);
|
||||
if(detail != null){
|
||||
remove(detail.getId());
|
||||
}
|
||||
}else {
|
||||
deleteDetails(offId);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -16,8 +16,6 @@
|
||||
// under the License.
|
||||
package com.cloud.storage;
|
||||
|
||||
import org.apache.cloudstack.api.InternalIdentity;
|
||||
|
||||
import javax.persistence.Column;
|
||||
import javax.persistence.Entity;
|
||||
import javax.persistence.GeneratedValue;
|
||||
@ -25,16 +23,18 @@ import javax.persistence.GenerationType;
|
||||
import javax.persistence.Id;
|
||||
import javax.persistence.Table;
|
||||
|
||||
import org.apache.cloudstack.api.ResourceDetail;
|
||||
|
||||
@Entity
|
||||
@Table(name = "vm_template_details")
|
||||
public class VMTemplateDetailVO implements InternalIdentity {
|
||||
public class VMTemplateDetailVO implements ResourceDetail {
|
||||
@Id
|
||||
@GeneratedValue(strategy = GenerationType.IDENTITY)
|
||||
@Column(name = "id")
|
||||
private long id;
|
||||
|
||||
@Column(name = "template_id")
|
||||
private long templateId;
|
||||
private long resourceId;
|
||||
|
||||
@Column(name = "name")
|
||||
private String name;
|
||||
@ -46,40 +46,28 @@ public class VMTemplateDetailVO implements InternalIdentity {
|
||||
}
|
||||
|
||||
public VMTemplateDetailVO(long templateId, String name, String value) {
|
||||
this.templateId = templateId;
|
||||
this.resourceId = templateId;
|
||||
this.name = name;
|
||||
this.value = value;
|
||||
}
|
||||
|
||||
@Override
|
||||
public long getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
public long getTemplateId() {
|
||||
return templateId;
|
||||
@Override
|
||||
public long getResourceId() {
|
||||
return resourceId;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getName() {
|
||||
return name;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getValue() {
|
||||
return value;
|
||||
}
|
||||
|
||||
public void setId(long id) {
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
public void setTemplateId(long templateId) {
|
||||
this.templateId = templateId;
|
||||
}
|
||||
|
||||
public void setName(String name) {
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
public void setValue(String value) {
|
||||
this.value = value;
|
||||
}
|
||||
}
|
||||
|
||||
@ -28,14 +28,14 @@ import org.apache.cloudstack.api.ResourceDetail;
|
||||
|
||||
@Entity
|
||||
@Table(name="volume_details")
|
||||
public class VolumeDetailVO implements InternalIdentity, ResourceDetail {
|
||||
public class VolumeDetailVO implements ResourceDetail {
|
||||
@Id
|
||||
@GeneratedValue(strategy=GenerationType.IDENTITY)
|
||||
@Column(name="id")
|
||||
private long id;
|
||||
|
||||
@Column(name="volume_id")
|
||||
private long volumeId;
|
||||
private long resourceId;
|
||||
|
||||
@Column(name="name")
|
||||
private String name;
|
||||
@ -46,46 +46,29 @@ public class VolumeDetailVO implements InternalIdentity, ResourceDetail {
|
||||
public VolumeDetailVO() {}
|
||||
|
||||
public VolumeDetailVO(long volumeId, String name, String value) {
|
||||
this.volumeId = volumeId;
|
||||
this.resourceId = volumeId;
|
||||
this.name = name;
|
||||
this.value = value;
|
||||
}
|
||||
|
||||
public long getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
public long getVolumeId() {
|
||||
return volumeId;
|
||||
}
|
||||
|
||||
public String getName() {
|
||||
return name;
|
||||
}
|
||||
|
||||
public String getValue() {
|
||||
return value;
|
||||
}
|
||||
|
||||
public void setId(long id) {
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
public void setVolumeId(long volumeId) {
|
||||
this.volumeId = volumeId;
|
||||
}
|
||||
|
||||
public void setName(String name) {
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
public void setValue(String value) {
|
||||
this.value = value;
|
||||
}
|
||||
|
||||
@Override
|
||||
public long getResourceDetail() {
|
||||
return volumeId;
|
||||
public long getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getName() {
|
||||
return name;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getValue() {
|
||||
return value;
|
||||
}
|
||||
|
||||
@Override
|
||||
public long getResourceId() {
|
||||
return resourceId;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -28,11 +28,10 @@ import javax.ejb.Local;
|
||||
import javax.inject.Inject;
|
||||
import javax.naming.ConfigurationException;
|
||||
|
||||
import org.apache.log4j.Logger;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import org.apache.cloudstack.storage.datastore.db.TemplateDataStoreDao;
|
||||
import org.apache.cloudstack.storage.datastore.db.TemplateDataStoreVO;
|
||||
import org.apache.log4j.Logger;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import com.cloud.dc.dao.DataCenterDao;
|
||||
import com.cloud.domain.dao.DomainDao;
|
||||
@ -44,6 +43,7 @@ import com.cloud.server.ResourceTag.ResourceObjectType;
|
||||
import com.cloud.storage.Storage;
|
||||
import com.cloud.storage.Storage.ImageFormat;
|
||||
import com.cloud.storage.Storage.TemplateType;
|
||||
import com.cloud.storage.VMTemplateDetailVO;
|
||||
import com.cloud.storage.VMTemplateStorageResourceAssoc;
|
||||
import com.cloud.storage.VMTemplateVO;
|
||||
import com.cloud.storage.VMTemplateZoneVO;
|
||||
@ -411,11 +411,17 @@ public class VMTemplateDaoImpl extends GenericDaoBase<VMTemplateVO, Long> implem
|
||||
|
||||
@Override
|
||||
public void saveDetails(VMTemplateVO tmpl) {
|
||||
Map<String, String> details = tmpl.getDetails();
|
||||
if (details == null) {
|
||||
Map<String, String> detailsStr = tmpl.getDetails();
|
||||
if (detailsStr == null) {
|
||||
return;
|
||||
}
|
||||
_templateDetailsDao.persist(tmpl.getId(), details);
|
||||
List<VMTemplateDetailVO> details = new ArrayList<VMTemplateDetailVO>();
|
||||
for (String key : detailsStr.keySet()) {
|
||||
VMTemplateDetailVO detail = new VMTemplateDetailVO(tmpl.getId(), key, detailsStr.get(key));
|
||||
details.add(detail);
|
||||
}
|
||||
|
||||
_templateDetailsDao.addDetails(details);
|
||||
}
|
||||
|
||||
|
||||
@ -744,8 +750,13 @@ public class VMTemplateDaoImpl extends GenericDaoBase<VMTemplateVO, Long> implem
|
||||
if (persist(tmplt) == null) {
|
||||
throw new CloudRuntimeException("Failed to persist the template " + tmplt);
|
||||
}
|
||||
|
||||
if (tmplt.getDetails() != null) {
|
||||
_templateDetailsDao.persist(tmplt.getId(), tmplt.getDetails());
|
||||
List<VMTemplateDetailVO> details = new ArrayList<VMTemplateDetailVO>();
|
||||
for (String key : tmplt.getDetails().keySet()) {
|
||||
details.add(new VMTemplateDetailVO(tmplt.getId(), key, tmplt.getDetails().get(key)));
|
||||
}
|
||||
_templateDetailsDao.addDetails(details);
|
||||
}
|
||||
}
|
||||
VMTemplateZoneVO tmpltZoneVO = _templateZoneDao.findByZoneTemplate(zoneId, tmplt.getId());
|
||||
|
||||
@ -16,21 +16,10 @@
|
||||
// under the License.
|
||||
package com.cloud.storage.dao;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
import com.cloud.dc.dao.ResourceDetailDao;
|
||||
import com.cloud.storage.VMTemplateDetailVO;
|
||||
import com.cloud.utils.db.GenericDao;
|
||||
|
||||
public interface VMTemplateDetailsDao extends GenericDao<VMTemplateDetailVO, Long> {
|
||||
Map<String, String> findDetails(long templateId);
|
||||
|
||||
void persist(long templateId, Map<String, String> details);
|
||||
|
||||
VMTemplateDetailVO findDetail(long templateId, String name);
|
||||
|
||||
void deleteDetails(long vmId);
|
||||
|
||||
void addTemplateDetail(long templateId, String key, String value);
|
||||
|
||||
void removeDetails(long templateId, String key);
|
||||
public interface VMTemplateDetailsDao extends GenericDao<VMTemplateDetailVO, Long>, ResourceDetailDao<VMTemplateDetailVO> {
|
||||
|
||||
}
|
||||
|
||||
@ -16,108 +16,14 @@
|
||||
// under the License.
|
||||
package com.cloud.storage.dao;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import javax.ejb.Local;
|
||||
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import com.cloud.dc.dao.ResourceDetailDaoImpl;
|
||||
import com.cloud.storage.VMTemplateDetailVO;
|
||||
import com.cloud.utils.db.GenericDaoBase;
|
||||
import com.cloud.utils.db.SearchBuilder;
|
||||
import com.cloud.utils.db.SearchCriteria;
|
||||
import com.cloud.utils.db.TransactionLegacy;
|
||||
|
||||
@Component
|
||||
@Local(value = VMTemplateDetailsDao.class)
|
||||
public class VMTemplateDetailsDaoImpl extends GenericDaoBase<VMTemplateDetailVO, Long> implements VMTemplateDetailsDao {
|
||||
|
||||
protected final SearchBuilder<VMTemplateDetailVO> TemplateSearch;
|
||||
protected final SearchBuilder<VMTemplateDetailVO> DetailSearch;
|
||||
|
||||
public VMTemplateDetailsDaoImpl() {
|
||||
TemplateSearch = createSearchBuilder();
|
||||
TemplateSearch.and("templateId", TemplateSearch.entity().getTemplateId(), SearchCriteria.Op.EQ);
|
||||
TemplateSearch.done();
|
||||
|
||||
DetailSearch = createSearchBuilder();
|
||||
DetailSearch.and("templateId", DetailSearch.entity().getTemplateId(), SearchCriteria.Op.EQ);
|
||||
DetailSearch.and("name", DetailSearch.entity().getName(), SearchCriteria.Op.EQ);
|
||||
DetailSearch.done();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void deleteDetails(long templateId) {
|
||||
SearchCriteria<VMTemplateDetailVO> sc = TemplateSearch.create();
|
||||
sc.setParameters("templateId", templateId);
|
||||
|
||||
List<VMTemplateDetailVO> results = search(sc, null);
|
||||
for (VMTemplateDetailVO result : results) {
|
||||
remove(result.getId());
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public VMTemplateDetailVO findDetail(long templateId, String name) {
|
||||
SearchCriteria<VMTemplateDetailVO> sc = DetailSearch.create();
|
||||
sc.setParameters("templateId", templateId);
|
||||
sc.setParameters("name", name);
|
||||
|
||||
return findOneBy(sc);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Map<String, String> findDetails(long templateId) {
|
||||
SearchCriteria<VMTemplateDetailVO> sc = TemplateSearch.create();
|
||||
sc.setParameters("templateId", templateId);
|
||||
|
||||
List<VMTemplateDetailVO> results = search(sc, null);
|
||||
Map<String, String> details = new HashMap<String, String>(results.size());
|
||||
for (VMTemplateDetailVO result : results) {
|
||||
details.put(result.getName(), result.getValue());
|
||||
}
|
||||
|
||||
return details;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void persist(long templateId, Map<String, String> details) {
|
||||
TransactionLegacy txn = TransactionLegacy.currentTxn();
|
||||
txn.start();
|
||||
SearchCriteria<VMTemplateDetailVO> sc = TemplateSearch.create();
|
||||
sc.setParameters("templateId", templateId);
|
||||
expunge(sc);
|
||||
|
||||
for (Map.Entry<String, String> detail : details.entrySet()) {
|
||||
VMTemplateDetailVO vo = new VMTemplateDetailVO(templateId, detail.getKey(), detail.getValue());
|
||||
persist(vo);
|
||||
}
|
||||
txn.commit();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addTemplateDetail(long templateId, String key, String value) {
|
||||
VMTemplateDetailVO detail = findDetail(templateId, key);
|
||||
if (detail == null) {
|
||||
VMTemplateDetailVO newEntry = new VMTemplateDetailVO(templateId, key, value);
|
||||
persist(newEntry);
|
||||
} else {
|
||||
detail.setValue(value);
|
||||
update(detail.getId(), detail);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void removeDetails(long templateId, String key) {
|
||||
if(key != null){
|
||||
VMTemplateDetailVO detail = findDetail(templateId, key);
|
||||
if(detail != null){
|
||||
remove(detail.getId());
|
||||
}
|
||||
} else {
|
||||
deleteDetails(templateId);
|
||||
}
|
||||
}
|
||||
public class VMTemplateDetailsDaoImpl extends ResourceDetailDaoImpl<VMTemplateDetailVO> implements VMTemplateDetailsDao {
|
||||
}
|
||||
|
||||
@ -16,21 +16,10 @@
|
||||
// under the License.
|
||||
package com.cloud.storage.dao;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import com.cloud.dc.dao.ResourceDetailDao;
|
||||
import com.cloud.storage.VolumeDetailVO;
|
||||
import com.cloud.utils.db.GenericDao;
|
||||
|
||||
public interface VolumeDetailsDao extends GenericDao<VolumeDetailVO, Long> {
|
||||
List<VolumeDetailVO> findDetails(long volumeId);
|
||||
public interface VolumeDetailsDao extends GenericDao<VolumeDetailVO, Long>, ResourceDetailDao<VolumeDetailVO> {
|
||||
|
||||
void persist(long vmId, Map<String, String> details);
|
||||
|
||||
VolumeDetailVO findDetail(long vmId, String name);
|
||||
|
||||
void deleteDetails(long vmId);
|
||||
|
||||
public void removeDetails(long volumeId, String key);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@ -16,99 +16,15 @@
|
||||
// under the License.
|
||||
package com.cloud.storage.dao;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import javax.ejb.Local;
|
||||
|
||||
import com.cloud.storage.VolumeDetailVO;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import com.cloud.utils.db.GenericDaoBase;
|
||||
import com.cloud.utils.db.SearchBuilder;
|
||||
import com.cloud.utils.db.SearchCriteria;
|
||||
import com.cloud.utils.db.TransactionLegacy;
|
||||
import com.cloud.dc.dao.ResourceDetailDaoImpl;
|
||||
import com.cloud.storage.VolumeDetailVO;
|
||||
|
||||
@Component
|
||||
@Local(value=VolumeDetailsDao.class)
|
||||
public class VolumeDetailsDaoImpl extends GenericDaoBase<VolumeDetailVO, Long> implements VolumeDetailsDao {
|
||||
protected final SearchBuilder<VolumeDetailVO> VolumeSearch;
|
||||
protected final SearchBuilder<VolumeDetailVO> DetailSearch;
|
||||
protected final SearchBuilder<VolumeDetailVO> VolumeDetailSearch;
|
||||
|
||||
public VolumeDetailsDaoImpl() {
|
||||
VolumeSearch = createSearchBuilder();
|
||||
VolumeSearch.and("volumeId", VolumeSearch.entity().getVolumeId(), SearchCriteria.Op.EQ);
|
||||
VolumeSearch.done();
|
||||
|
||||
DetailSearch = createSearchBuilder();
|
||||
DetailSearch.and("volumeId", DetailSearch.entity().getVolumeId(), SearchCriteria.Op.EQ);
|
||||
DetailSearch.and("name", DetailSearch.entity().getName(), SearchCriteria.Op.EQ);
|
||||
DetailSearch.done();
|
||||
|
||||
VolumeDetailSearch = createSearchBuilder();
|
||||
VolumeDetailSearch.and("volumeId", VolumeDetailSearch.entity().getVolumeId(), SearchCriteria.Op.EQ);
|
||||
VolumeDetailSearch.and("name", VolumeDetailSearch.entity().getName(), SearchCriteria.Op.IN);
|
||||
VolumeDetailSearch.done();
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void deleteDetails(long volumeId) {
|
||||
SearchCriteria<VolumeDetailVO> sc = VolumeSearch.create();
|
||||
sc.setParameters("volumeId", volumeId);
|
||||
|
||||
List<VolumeDetailVO> results = search(sc, null);
|
||||
for (VolumeDetailVO result : results) {
|
||||
remove(result.getId());
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public VolumeDetailVO findDetail(long volumeId, String name) {
|
||||
SearchCriteria<VolumeDetailVO> sc = DetailSearch.create();
|
||||
sc.setParameters("volumeId", volumeId);
|
||||
sc.setParameters("name", name);
|
||||
|
||||
return findOneBy(sc);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void removeDetails(long volumeId, String key) {
|
||||
|
||||
if(key != null){
|
||||
VolumeDetailVO detail = findDetail(volumeId, key);
|
||||
if(detail != null){
|
||||
remove(detail.getId());
|
||||
}
|
||||
}else {
|
||||
deleteDetails(volumeId);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<VolumeDetailVO> findDetails(long volumeId) {
|
||||
SearchCriteria<VolumeDetailVO> sc = VolumeSearch.create();
|
||||
sc.setParameters("volumeId", volumeId);
|
||||
|
||||
List<VolumeDetailVO> results = search(sc, null);
|
||||
return results;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void persist(long volumeId, Map<String, String> details) {
|
||||
TransactionLegacy txn = TransactionLegacy.currentTxn();
|
||||
txn.start();
|
||||
SearchCriteria<VolumeDetailVO> sc = VolumeSearch.create();
|
||||
sc.setParameters("volumeId", volumeId);
|
||||
expunge(sc);
|
||||
|
||||
for (Map.Entry<String, String> detail : details.entrySet()) {
|
||||
VolumeDetailVO vo = new VolumeDetailVO(volumeId, detail.getKey(), detail.getValue());
|
||||
persist(vo);
|
||||
}
|
||||
txn.commit();
|
||||
}
|
||||
public class VolumeDetailsDaoImpl extends ResourceDetailDaoImpl<VolumeDetailVO> implements VolumeDetailsDao {
|
||||
|
||||
}
|
||||
|
||||
@ -23,19 +23,18 @@ import javax.persistence.GenerationType;
|
||||
import javax.persistence.Id;
|
||||
import javax.persistence.Table;
|
||||
|
||||
import org.apache.cloudstack.api.InternalIdentity;
|
||||
import org.apache.cloudstack.api.ResourceDetail;
|
||||
|
||||
@Entity
|
||||
@Table(name="nic_details")
|
||||
public class NicDetailVO implements InternalIdentity, ResourceDetail {
|
||||
public class NicDetailVO implements ResourceDetail {
|
||||
@Id
|
||||
@GeneratedValue(strategy=GenerationType.IDENTITY)
|
||||
@Column(name="id")
|
||||
private long id;
|
||||
|
||||
@Column(name="nic_id")
|
||||
private long nicId;
|
||||
private long resourceId;
|
||||
|
||||
@Column(name="name")
|
||||
private String name;
|
||||
@ -46,46 +45,29 @@ public class NicDetailVO implements InternalIdentity, ResourceDetail {
|
||||
public NicDetailVO() {}
|
||||
|
||||
public NicDetailVO(long nicId, String name, String value) {
|
||||
this.nicId = nicId;
|
||||
this.resourceId = nicId;
|
||||
this.name = name;
|
||||
this.value = value;
|
||||
}
|
||||
|
||||
public long getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
public long getNicId() {
|
||||
return nicId;
|
||||
}
|
||||
|
||||
public String getName() {
|
||||
return name;
|
||||
}
|
||||
|
||||
public String getValue() {
|
||||
return value;
|
||||
}
|
||||
|
||||
public void setId(long id) {
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
public void setNicId(long nicId) {
|
||||
this.nicId = nicId;
|
||||
}
|
||||
|
||||
public void setName(String name) {
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
public void setValue(String value) {
|
||||
this.value = value;
|
||||
}
|
||||
|
||||
@Override
|
||||
public long getResourceDetail() {
|
||||
return nicId;
|
||||
public long getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getName() {
|
||||
return name;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getValue() {
|
||||
return value;
|
||||
}
|
||||
|
||||
@Override
|
||||
public long getResourceId() {
|
||||
return resourceId;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -23,19 +23,18 @@ import javax.persistence.GenerationType;
|
||||
import javax.persistence.Id;
|
||||
import javax.persistence.Table;
|
||||
|
||||
import org.apache.cloudstack.api.InternalIdentity;
|
||||
import org.apache.cloudstack.api.ResourceDetail;
|
||||
|
||||
@Entity
|
||||
@Table(name="user_vm_details")
|
||||
public class UserVmDetailVO implements InternalIdentity, ResourceDetail {
|
||||
public class UserVmDetailVO implements ResourceDetail {
|
||||
@Id
|
||||
@GeneratedValue(strategy=GenerationType.IDENTITY)
|
||||
@Column(name="id")
|
||||
private long id;
|
||||
|
||||
@Column(name="vm_id")
|
||||
private long vmId;
|
||||
private long resourceId;
|
||||
|
||||
@Column(name="name")
|
||||
private String name;
|
||||
@ -46,46 +45,29 @@ public class UserVmDetailVO implements InternalIdentity, ResourceDetail {
|
||||
public UserVmDetailVO() {}
|
||||
|
||||
public UserVmDetailVO(long vmId, String name, String value) {
|
||||
this.vmId = vmId;
|
||||
this.resourceId = vmId;
|
||||
this.name = name;
|
||||
this.value = value;
|
||||
}
|
||||
|
||||
@Override
|
||||
public long getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
public long getVmId() {
|
||||
return vmId;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getName() {
|
||||
return name;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getValue() {
|
||||
return value;
|
||||
}
|
||||
|
||||
public void setId(long id) {
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
public void setVmId(long vmId) {
|
||||
this.vmId = vmId;
|
||||
}
|
||||
|
||||
public void setName(String name) {
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
public void setValue(String value) {
|
||||
this.value = value;
|
||||
}
|
||||
|
||||
@Override
|
||||
public long getResourceDetail() {
|
||||
return vmId;
|
||||
public long getResourceId() {
|
||||
return resourceId;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -16,20 +16,9 @@
|
||||
// under the License.
|
||||
package com.cloud.vm.dao;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import com.cloud.dc.dao.ResourceDetailDao;
|
||||
import com.cloud.utils.db.GenericDao;
|
||||
import com.cloud.vm.NicDetailVO;
|
||||
|
||||
public interface NicDetailDao extends GenericDao<NicDetailVO, Long> {
|
||||
List<NicDetailVO> findDetails(long nicId);
|
||||
|
||||
void persist(long nicId, Map<String, String> details);
|
||||
|
||||
NicDetailVO findDetail(long nicId, String name);
|
||||
|
||||
void deleteDetails(long nicId);
|
||||
|
||||
void removeDetails(long nicId, String key);
|
||||
public interface NicDetailDao extends GenericDao<NicDetailVO, Long>, ResourceDetailDao<NicDetailVO> {
|
||||
}
|
||||
|
||||
@ -16,88 +16,15 @@
|
||||
// under the License.
|
||||
package com.cloud.vm.dao;
|
||||
|
||||
import com.cloud.utils.db.GenericDaoBase;
|
||||
import com.cloud.utils.db.SearchBuilder;
|
||||
import com.cloud.utils.db.SearchCriteria;
|
||||
import com.cloud.utils.db.TransactionLegacy;
|
||||
import com.cloud.vm.NicDetailVO;
|
||||
import javax.ejb.Local;
|
||||
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import javax.ejb.Local;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import com.cloud.dc.dao.ResourceDetailDaoImpl;
|
||||
import com.cloud.vm.NicDetailVO;
|
||||
|
||||
@Component
|
||||
@Local (value={NicDetailDao.class})
|
||||
public class NicDetailDaoImpl extends GenericDaoBase<NicDetailVO, Long> implements NicDetailDao {
|
||||
protected final SearchBuilder<NicDetailVO> NicSearch;
|
||||
protected final SearchBuilder<NicDetailVO> DetailSearch;
|
||||
|
||||
public NicDetailDaoImpl() {
|
||||
NicSearch = createSearchBuilder();
|
||||
NicSearch.and("nicId", NicSearch.entity().getNicId(), SearchCriteria.Op.EQ);
|
||||
NicSearch.done();
|
||||
|
||||
DetailSearch = createSearchBuilder();
|
||||
DetailSearch.and("nicId", DetailSearch.entity().getNicId(), SearchCriteria.Op.EQ);
|
||||
DetailSearch.and("name", DetailSearch.entity().getName(), SearchCriteria.Op.EQ);
|
||||
DetailSearch.done();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void deleteDetails(long nicId) {
|
||||
SearchCriteria<NicDetailVO> sc = NicSearch.create();
|
||||
sc.setParameters("nicId", nicId);
|
||||
|
||||
List<NicDetailVO> results = search(sc, null);
|
||||
for (NicDetailVO result : results) {
|
||||
remove(result.getId());
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public NicDetailVO findDetail(long nicId, String name) {
|
||||
SearchCriteria<NicDetailVO> sc = DetailSearch.create();
|
||||
sc.setParameters("nicId", nicId);
|
||||
sc.setParameters("name", name);
|
||||
|
||||
return findOneBy(sc);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<NicDetailVO> findDetails(long nicId) {
|
||||
SearchCriteria<NicDetailVO> sc = NicSearch.create();
|
||||
sc.setParameters("nicId", nicId);
|
||||
|
||||
List<NicDetailVO> results = search(sc, null);
|
||||
return results;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void persist(long nicId, Map<String, String> details) {
|
||||
TransactionLegacy txn = TransactionLegacy.currentTxn();
|
||||
txn.start();
|
||||
SearchCriteria<NicDetailVO> sc = NicSearch.create();
|
||||
sc.setParameters("nicId", nicId);
|
||||
expunge(sc);
|
||||
|
||||
for (Map.Entry<String, String> detail : details.entrySet()) {
|
||||
NicDetailVO vo = new NicDetailVO(nicId, detail.getKey(), detail.getValue());
|
||||
persist(vo);
|
||||
}
|
||||
txn.commit();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void removeDetails(long nicId, String key) {
|
||||
if(key != null){
|
||||
NicDetailVO detail = findDetail(nicId, key);
|
||||
if(detail != null){
|
||||
remove(detail.getId());
|
||||
}
|
||||
}else {
|
||||
deleteDetails(nicId);
|
||||
}
|
||||
}
|
||||
public class NicDetailDaoImpl extends ResourceDetailDaoImpl<NicDetailVO> implements NicDetailDao {
|
||||
|
||||
}
|
||||
|
||||
@ -31,14 +31,10 @@ import javax.ejb.Local;
|
||||
import javax.inject.Inject;
|
||||
|
||||
import org.apache.log4j.Logger;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import com.cloud.configuration.Resource;
|
||||
import com.cloud.server.ResourceTag.ResourceObjectType;
|
||||
import com.cloud.tags.dao.ResourceTagDao;
|
||||
import com.cloud.tags.dao.ResourceTagsDaoImpl;
|
||||
import com.cloud.user.Account;
|
||||
|
||||
import com.cloud.utils.db.Attribute;
|
||||
import com.cloud.utils.db.GenericDaoBase;
|
||||
import com.cloud.utils.db.GenericSearchBuilder;
|
||||
@ -49,6 +45,7 @@ import com.cloud.utils.db.SearchCriteria.Func;
|
||||
import com.cloud.utils.db.TransactionLegacy;
|
||||
import com.cloud.utils.exception.CloudRuntimeException;
|
||||
import com.cloud.vm.NicVO;
|
||||
import com.cloud.vm.UserVmDetailVO;
|
||||
import com.cloud.vm.UserVmVO;
|
||||
import com.cloud.vm.VirtualMachine;
|
||||
import com.cloud.vm.VirtualMachine.State;
|
||||
@ -341,11 +338,16 @@ public class UserVmDaoImpl extends GenericDaoBase<UserVmVO, Long> implements Use
|
||||
|
||||
@Override
|
||||
public void saveDetails(UserVmVO vm) {
|
||||
Map<String, String> details = vm.getDetails();
|
||||
if (details == null) {
|
||||
Map<String, String> detailsStr = vm.getDetails();
|
||||
if (detailsStr == null) {
|
||||
return;
|
||||
}
|
||||
_detailsDao.persist(vm.getId(), details);
|
||||
List<UserVmDetailVO> details = new ArrayList<UserVmDetailVO>();
|
||||
for (String key : detailsStr.keySet()) {
|
||||
details.add(new UserVmDetailVO(vm.getId(), key, detailsStr.get(key)));
|
||||
}
|
||||
|
||||
_detailsDao.addDetails(details);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@ -16,24 +16,9 @@
|
||||
// under the License.
|
||||
package com.cloud.vm.dao;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import com.cloud.dc.dao.ResourceDetailDao;
|
||||
import com.cloud.utils.db.GenericDao;
|
||||
import com.cloud.vm.UserVmDetailVO;
|
||||
|
||||
public interface UserVmDetailsDao extends GenericDao<UserVmDetailVO, Long> {
|
||||
Map<String, String> findDetails(long vmId);
|
||||
|
||||
public List<UserVmDetailVO> findDetailsList(long vmId);
|
||||
|
||||
void persist(long vmId, Map<String, String> details);
|
||||
|
||||
UserVmDetailVO findDetail(long vmId, String name);
|
||||
|
||||
void deleteDetails(long vmId);
|
||||
|
||||
void addVmDetail(long vmId, String key, String value);
|
||||
|
||||
void removeDetails(long vmId, String key);
|
||||
public interface UserVmDetailsDao extends GenericDao<UserVmDetailVO, Long>, ResourceDetailDao<UserVmDetailVO> {
|
||||
}
|
||||
|
||||
@ -16,116 +16,15 @@
|
||||
// under the License.
|
||||
package com.cloud.vm.dao;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import javax.ejb.Local;
|
||||
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import com.cloud.utils.db.GenericDaoBase;
|
||||
import com.cloud.utils.db.SearchBuilder;
|
||||
import com.cloud.utils.db.SearchCriteria;
|
||||
import com.cloud.utils.db.TransactionLegacy;
|
||||
import com.cloud.dc.dao.ResourceDetailDaoImpl;
|
||||
import com.cloud.vm.UserVmDetailVO;
|
||||
|
||||
@Component
|
||||
@Local(value=UserVmDetailsDao.class)
|
||||
public class UserVmDetailsDaoImpl extends GenericDaoBase<UserVmDetailVO, Long> implements UserVmDetailsDao {
|
||||
protected final SearchBuilder<UserVmDetailVO> VmSearch;
|
||||
protected final SearchBuilder<UserVmDetailVO> DetailSearch;
|
||||
public class UserVmDetailsDaoImpl extends ResourceDetailDaoImpl<UserVmDetailVO> implements UserVmDetailsDao {
|
||||
|
||||
public UserVmDetailsDaoImpl() {
|
||||
VmSearch = createSearchBuilder();
|
||||
VmSearch.and("vmId", VmSearch.entity().getVmId(), SearchCriteria.Op.EQ);
|
||||
VmSearch.done();
|
||||
|
||||
DetailSearch = createSearchBuilder();
|
||||
DetailSearch.and("vmId", DetailSearch.entity().getVmId(), SearchCriteria.Op.EQ);
|
||||
DetailSearch.and("name", DetailSearch.entity().getName(), SearchCriteria.Op.EQ);
|
||||
DetailSearch.done();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void deleteDetails(long vmId) {
|
||||
SearchCriteria<UserVmDetailVO> sc = VmSearch.create();
|
||||
sc.setParameters("vmId", vmId);
|
||||
|
||||
List<UserVmDetailVO> results = search(sc, null);
|
||||
for (UserVmDetailVO result : results) {
|
||||
remove(result.getId());
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public UserVmDetailVO findDetail(long vmId, String name) {
|
||||
SearchCriteria<UserVmDetailVO> sc = DetailSearch.create();
|
||||
sc.setParameters("vmId", vmId);
|
||||
sc.setParameters("name", name);
|
||||
|
||||
return findOneBy(sc);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Map<String, String> findDetails(long vmId) {
|
||||
SearchCriteria<UserVmDetailVO> sc = VmSearch.create();
|
||||
sc.setParameters("vmId", vmId);
|
||||
|
||||
List<UserVmDetailVO> results = search(sc, null);
|
||||
Map<String, String> details = new HashMap<String, String>(results.size());
|
||||
for (UserVmDetailVO result : results) {
|
||||
details.put(result.getName(), result.getValue());
|
||||
}
|
||||
|
||||
return details;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<UserVmDetailVO> findDetailsList(long vmId) {
|
||||
SearchCriteria<UserVmDetailVO> sc = VmSearch.create();
|
||||
sc.setParameters("vmId", vmId);
|
||||
|
||||
List<UserVmDetailVO> results = search(sc, null);
|
||||
return results;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void persist(long vmId, Map<String, String> details) {
|
||||
TransactionLegacy txn = TransactionLegacy.currentTxn();
|
||||
txn.start();
|
||||
SearchCriteria<UserVmDetailVO> sc = VmSearch.create();
|
||||
sc.setParameters("vmId", vmId);
|
||||
expunge(sc);
|
||||
|
||||
for (Map.Entry<String, String> detail : details.entrySet()) {
|
||||
UserVmDetailVO vo = new UserVmDetailVO(vmId, detail.getKey(), detail.getValue());
|
||||
persist(vo);
|
||||
}
|
||||
txn.commit();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addVmDetail(long vmId, String key, String value) {
|
||||
UserVmDetailVO detail = findDetail(vmId, key);
|
||||
if (detail == null) {
|
||||
UserVmDetailVO newEntry = new UserVmDetailVO(vmId, key, value);
|
||||
persist(newEntry);
|
||||
} else {
|
||||
detail.setValue(value);
|
||||
update(detail.getId(), detail);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void removeDetails(long vmId, String key) {
|
||||
if(key != null){
|
||||
UserVmDetailVO detail = findDetail(vmId, key);
|
||||
if(detail != null){
|
||||
remove(detail.getId());
|
||||
}
|
||||
}else {
|
||||
deleteDetails(vmId);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -116,6 +116,7 @@ import com.cloud.dc.ClusterDetailsDao;
|
||||
import com.cloud.dc.ClusterDetailsVO;
|
||||
import com.cloud.dc.ClusterVO;
|
||||
import com.cloud.dc.DataCenter;
|
||||
import com.cloud.dc.DataCenterDetailVO;
|
||||
import com.cloud.dc.DataCenterVO;
|
||||
import com.cloud.dc.HostPodVO;
|
||||
import com.cloud.dc.Vlan;
|
||||
@ -125,6 +126,7 @@ import com.cloud.dc.dao.ClusterDao;
|
||||
import com.cloud.dc.dao.DataCenterDao;
|
||||
import com.cloud.dc.dao.DataCenterDetailsDao;
|
||||
import com.cloud.dc.dao.HostPodDao;
|
||||
import com.cloud.dc.dao.ResourceDetailDaoImpl;
|
||||
import com.cloud.dc.dao.VlanDao;
|
||||
import com.cloud.domain.DomainVO;
|
||||
import com.cloud.domain.dao.DomainDao;
|
||||
|
||||
@ -3273,13 +3273,13 @@ public class QueryManagerImpl extends ManagerBase implements QueryService {
|
||||
|
||||
if (resourceType == ResourceTag.ResourceObjectType.Volume) {
|
||||
if (key == null) {
|
||||
detailList = _volumeDetailDao.findDetails(id);
|
||||
detailList = _volumeDetailDao.findDetailsList(id);
|
||||
} else {
|
||||
requestedDetail = _volumeDetailDao.findDetail(id, key);
|
||||
}
|
||||
} else if (resourceType == ResourceTag.ResourceObjectType.Nic){
|
||||
if (key == null) {
|
||||
detailList = _nicDetailDao.findDetails(id);
|
||||
detailList = _nicDetailDao.findDetailsList(id);
|
||||
} else {
|
||||
requestedDetail = _nicDetailDao.findDetail(id, key);
|
||||
}
|
||||
@ -3297,7 +3297,7 @@ public class QueryManagerImpl extends ManagerBase implements QueryService {
|
||||
}
|
||||
} else if (resourceType == ResourceObjectType.Network){
|
||||
if (key == null) {
|
||||
detailList = _networkDetailsDao.findDetails(id);
|
||||
detailList = _networkDetailsDao.findDetailsList(id);
|
||||
} else {
|
||||
requestedDetail = _networkDetailsDao.findDetail(id, key);
|
||||
}
|
||||
|
||||
@ -35,7 +35,6 @@ import javax.ejb.Local;
|
||||
import javax.inject.Inject;
|
||||
import javax.naming.ConfigurationException;
|
||||
|
||||
import org.apache.log4j.Logger;
|
||||
import org.apache.cloudstack.acl.SecurityChecker;
|
||||
import org.apache.cloudstack.affinity.AffinityGroup;
|
||||
import org.apache.cloudstack.affinity.AffinityGroupService;
|
||||
@ -83,6 +82,7 @@ import org.apache.cloudstack.storage.datastore.db.PrimaryDataStoreDao;
|
||||
import org.apache.cloudstack.storage.datastore.db.StoragePoolDetailVO;
|
||||
import org.apache.cloudstack.storage.datastore.db.StoragePoolDetailsDao;
|
||||
import org.apache.cloudstack.storage.datastore.db.StoragePoolVO;
|
||||
import org.apache.log4j.Logger;
|
||||
|
||||
import com.cloud.alert.AlertManager;
|
||||
import com.cloud.api.ApiDBUtils;
|
||||
@ -95,10 +95,10 @@ import com.cloud.dc.ClusterDetailsVO;
|
||||
import com.cloud.dc.ClusterVO;
|
||||
import com.cloud.dc.DataCenter;
|
||||
import com.cloud.dc.DataCenter.NetworkType;
|
||||
import com.cloud.dc.DataCenterDetailVO;
|
||||
import com.cloud.dc.DataCenterIpAddressVO;
|
||||
import com.cloud.dc.DataCenterLinkLocalIpAddressVO;
|
||||
import com.cloud.dc.DataCenterVO;
|
||||
import com.cloud.dc.DataCenterDetailVO;
|
||||
import com.cloud.dc.DedicatedResourceVO;
|
||||
import com.cloud.dc.HostPodVO;
|
||||
import com.cloud.dc.Pod;
|
||||
@ -109,9 +109,9 @@ import com.cloud.dc.VlanVO;
|
||||
import com.cloud.dc.dao.AccountVlanMapDao;
|
||||
import com.cloud.dc.dao.ClusterDao;
|
||||
import com.cloud.dc.dao.DataCenterDao;
|
||||
import com.cloud.dc.dao.DataCenterDetailsDao;
|
||||
import com.cloud.dc.dao.DataCenterIpAddressDao;
|
||||
import com.cloud.dc.dao.DataCenterLinkLocalIpAddressDao;
|
||||
import com.cloud.dc.dao.DataCenterDetailsDao;
|
||||
import com.cloud.dc.dao.DedicatedResourceDao;
|
||||
import com.cloud.dc.dao.HostPodDao;
|
||||
import com.cloud.dc.dao.PodVlanMapDao;
|
||||
@ -167,6 +167,7 @@ import com.cloud.projects.Project;
|
||||
import com.cloud.projects.ProjectManager;
|
||||
import com.cloud.server.ConfigurationServer;
|
||||
import com.cloud.server.ManagementService;
|
||||
import com.cloud.service.ServiceOfferingDetailsVO;
|
||||
import com.cloud.service.ServiceOfferingVO;
|
||||
import com.cloud.service.dao.ServiceOfferingDao;
|
||||
import com.cloud.service.dao.ServiceOfferingDetailsDao;
|
||||
@ -450,14 +451,8 @@ public class ConfigurationManagerImpl extends ManagerBase implements Configurati
|
||||
if (zone == null) {
|
||||
throw new InvalidParameterValueException("unable to find zone by id " + resourceId);
|
||||
}
|
||||
DataCenterDetailVO dcDetailVO = _dcDetailsDao.findDetail(resourceId, name.toLowerCase());
|
||||
if (dcDetailVO == null) {
|
||||
dcDetailVO = new DataCenterDetailVO(resourceId, name, value);
|
||||
_dcDetailsDao.persist(dcDetailVO);
|
||||
} else {
|
||||
dcDetailVO.setValue(value);
|
||||
_dcDetailsDao.update(dcDetailVO.getId(), dcDetailVO);
|
||||
}
|
||||
DataCenterDetailVO dcDetailVO = new DataCenterDetailVO(resourceId, name, value);
|
||||
_dcDetailsDao.addDetail(dcDetailVO);
|
||||
break;
|
||||
case Cluster:
|
||||
ClusterVO cluster = _clusterDao.findById(resourceId);
|
||||
@ -2113,7 +2108,12 @@ public class ConfigurationManagerImpl extends ManagerBase implements Configurati
|
||||
|
||||
if ((offering = _serviceOfferingDao.persist(offering)) != null) {
|
||||
if (details != null) {
|
||||
_serviceOfferingDetailsDao.persist(offering.getId(), details);
|
||||
List<ServiceOfferingDetailsVO> detailsVO = new ArrayList<ServiceOfferingDetailsVO>();
|
||||
for (String key : details.keySet()) {
|
||||
detailsVO.add(new ServiceOfferingDetailsVO(offering.getId(), key, details.get(key)));
|
||||
}
|
||||
|
||||
_serviceOfferingDetailsDao.addDetails(detailsVO);
|
||||
}
|
||||
CallContext.current().setEventDetails("Service offering id=" + offering.getId());
|
||||
return offering;
|
||||
|
||||
@ -23,11 +23,11 @@ import javax.ejb.Local;
|
||||
import javax.inject.Inject;
|
||||
import javax.naming.ConfigurationException;
|
||||
|
||||
import org.apache.cloudstack.api.ResourceDetail;
|
||||
import org.apache.cloudstack.framework.config.dao.ConfigurationDao;
|
||||
import org.apache.log4j.Logger;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import org.apache.cloudstack.framework.config.dao.ConfigurationDao;
|
||||
|
||||
import com.cloud.agent.AgentManager;
|
||||
import com.cloud.agent.StartupCommandProcessor;
|
||||
import com.cloud.agent.api.StartupCommand;
|
||||
@ -38,7 +38,6 @@ import com.cloud.configuration.ConfigurationManager;
|
||||
import com.cloud.configuration.ZoneConfig;
|
||||
import com.cloud.dc.ClusterVO;
|
||||
import com.cloud.dc.DataCenterVO;
|
||||
import com.cloud.dc.DataCenterDetailVO;
|
||||
import com.cloud.dc.HostPodVO;
|
||||
import com.cloud.dc.dao.ClusterDao;
|
||||
import com.cloud.dc.dao.DataCenterDao;
|
||||
@ -46,11 +45,9 @@ import com.cloud.dc.dao.DataCenterDetailsDao;
|
||||
import com.cloud.dc.dao.HostPodDao;
|
||||
import com.cloud.exception.ConnectionException;
|
||||
import com.cloud.host.Host;
|
||||
import com.cloud.host.Host.Type;
|
||||
import com.cloud.host.HostVO;
|
||||
import com.cloud.host.dao.HostDao;
|
||||
import com.cloud.hypervisor.Hypervisor.HypervisorType;
|
||||
import com.cloud.storage.Storage;
|
||||
import com.cloud.utils.component.AdapterBase;
|
||||
import com.cloud.utils.exception.CloudRuntimeException;
|
||||
import com.cloud.utils.net.MacAddress;
|
||||
@ -175,7 +172,7 @@ public class CloudZonesStartupProcessor extends AdapterBase implements StartupCo
|
||||
}
|
||||
|
||||
long zoneId = zone.getId();
|
||||
DataCenterDetailVO maxHostsInZone = _zoneDetailsDao.findDetail(zoneId, ZoneConfig.MaxHosts.key());
|
||||
ResourceDetail maxHostsInZone = _zoneDetailsDao.findDetail(zoneId, ZoneConfig.MaxHosts.key());
|
||||
if(maxHostsInZone != null){
|
||||
long maxHosts = new Long(maxHostsInZone.getValue()).longValue();
|
||||
long currentCountOfHosts = _hostDao.countRoutingHostsByDataCenter(zoneId);
|
||||
|
||||
@ -37,6 +37,7 @@ import com.cloud.server.ResourceTag.ResourceObjectType;
|
||||
import com.cloud.server.TaggedResourceService;
|
||||
import com.cloud.service.ServiceOfferingDetailsVO;
|
||||
import com.cloud.service.dao.ServiceOfferingDetailsDao;
|
||||
import com.cloud.storage.VMTemplateDetailVO;
|
||||
import com.cloud.storage.VolumeDetailVO;
|
||||
import com.cloud.storage.dao.VMTemplateDetailsDao;
|
||||
import com.cloud.storage.dao.VolumeDetailsDao;
|
||||
@ -46,6 +47,7 @@ import com.cloud.utils.db.Transaction;
|
||||
import com.cloud.utils.db.TransactionCallback;
|
||||
import com.cloud.utils.db.TransactionStatus;
|
||||
import com.cloud.vm.NicDetailVO;
|
||||
import com.cloud.vm.UserVmDetailVO;
|
||||
import com.cloud.vm.dao.NicDetailDao;
|
||||
import com.cloud.vm.dao.UserVmDetailsDao;
|
||||
|
||||
@ -111,24 +113,26 @@ public class ResourceMetaDataManagerImpl extends ManagerBase implements Resource
|
||||
long id = _taggedResourceMgr.getResourceId(resourceId, resourceType);
|
||||
// TODO - Have a better design here for getting the DAO.
|
||||
if(resourceType == ResourceObjectType.Volume){
|
||||
VolumeDetailVO v = new VolumeDetailVO(id, key, value);
|
||||
_volumeDetailDao.persist(v);
|
||||
VolumeDetailVO detail = new VolumeDetailVO(id, key, value);
|
||||
_volumeDetailDao.addDetail(detail);
|
||||
} else if (resourceType == ResourceObjectType.Nic){
|
||||
NicDetailVO n = new NicDetailVO(id, key, value);
|
||||
_nicDetailDao.persist(n);
|
||||
NicDetailVO detail = new NicDetailVO(id, key, value);
|
||||
_nicDetailDao.addDetail(detail);
|
||||
} else if (resourceType == ResourceObjectType.Zone){
|
||||
DataCenterDetailVO dataCenterDetail = new DataCenterDetailVO(id, key, value);
|
||||
_dcDetailsDao.persist(dataCenterDetail);
|
||||
_dcDetailsDao.addDetail(dataCenterDetail);
|
||||
} else if (resourceType == ResourceObjectType.Network){
|
||||
NetworkDetailVO networkDetail = new NetworkDetailVO(id, key, value);
|
||||
_networkDetailsDao.persist(networkDetail);
|
||||
NetworkDetailVO detail = new NetworkDetailVO(id, key, value);
|
||||
_networkDetailsDao.addDetail(detail);
|
||||
} else if (resourceType == ResourceObjectType.UserVm) {
|
||||
_userVmDetailsDao.addVmDetail(id, key, value);
|
||||
UserVmDetailVO detail = new UserVmDetailVO(id, key, value);
|
||||
_userVmDetailsDao.addDetail(detail);
|
||||
} else if (resourceType == ResourceObjectType.Template) {
|
||||
_templateDetailsDao.addTemplateDetail(id, key, value);
|
||||
VMTemplateDetailVO detail = new VMTemplateDetailVO(id, key, value);
|
||||
_templateDetailsDao.addDetail(detail);
|
||||
} else if (resourceType == ResourceObjectType.ServiceOffering) {
|
||||
ServiceOfferingDetailsVO entity = new ServiceOfferingDetailsVO(id, key, value);
|
||||
_serviceOfferingDetailsDao.persist(entity);
|
||||
ServiceOfferingDetailsVO detail = new ServiceOfferingDetailsVO(id, key, value);
|
||||
_serviceOfferingDetailsDao.addDetail(detail);
|
||||
}
|
||||
}
|
||||
|
||||
@ -152,19 +156,19 @@ public class ResourceMetaDataManagerImpl extends ManagerBase implements Resource
|
||||
|
||||
// TODO - Have a better design here for getting the DAO.
|
||||
if (resourceType == ResourceObjectType.Volume){
|
||||
_volumeDetailDao.removeDetails(id, key);
|
||||
_volumeDetailDao.removeDetail(id, key);
|
||||
} else if (resourceType == ResourceObjectType.Nic){
|
||||
_nicDetailDao.removeDetails(id, key);
|
||||
_nicDetailDao.removeDetail(id, key);
|
||||
} else if (resourceType == ResourceObjectType.UserVm) {
|
||||
_userVmDetailsDao.removeDetails(id, key);
|
||||
_userVmDetailsDao.removeDetail(id, key);
|
||||
} else if (resourceType == ResourceObjectType.Template) {
|
||||
_templateDetailsDao.removeDetails(id, key);
|
||||
_templateDetailsDao.removeDetail(id, key);
|
||||
} else if (resourceType == ResourceObjectType.Zone){
|
||||
_dcDetailsDao.removeDetails(id, key);
|
||||
_dcDetailsDao.removeDetail(id, key);
|
||||
} else if (resourceType == ResourceObjectType.ServiceOffering) {
|
||||
_serviceOfferingDetailsDao.removeDetails(id, key);
|
||||
_serviceOfferingDetailsDao.removeDetail(id, key);
|
||||
} else if (resourceType == ResourceObjectType.Network) {
|
||||
_networkDetailsDao.removeDetails(id, key);
|
||||
_networkDetailsDao.removeDetail(id, key);
|
||||
}
|
||||
|
||||
return true;
|
||||
|
||||
@ -30,7 +30,6 @@ import javax.ejb.Local;
|
||||
import javax.inject.Inject;
|
||||
import javax.naming.ConfigurationException;
|
||||
|
||||
import org.apache.log4j.Logger;
|
||||
import org.apache.cloudstack.acl.SecurityChecker.AccessType;
|
||||
import org.apache.cloudstack.api.BaseListTemplateOrIsoPermissionsCmd;
|
||||
import org.apache.cloudstack.api.BaseUpdateTemplateOrIsoCmd;
|
||||
@ -82,6 +81,7 @@ import org.apache.cloudstack.storage.datastore.db.StoragePoolVO;
|
||||
import org.apache.cloudstack.storage.datastore.db.TemplateDataStoreDao;
|
||||
import org.apache.cloudstack.storage.datastore.db.TemplateDataStoreVO;
|
||||
import org.apache.cloudstack.storage.image.datastore.ImageStoreEntity;
|
||||
import org.apache.log4j.Logger;
|
||||
|
||||
import com.cloud.agent.AgentManager;
|
||||
import com.cloud.agent.api.Answer;
|
||||
@ -135,6 +135,7 @@ import com.cloud.storage.StoragePoolHostVO;
|
||||
import com.cloud.storage.StoragePoolStatus;
|
||||
import com.cloud.storage.TemplateProfile;
|
||||
import com.cloud.storage.Upload;
|
||||
import com.cloud.storage.VMTemplateDetailVO;
|
||||
import com.cloud.storage.VMTemplateHostVO;
|
||||
import com.cloud.storage.VMTemplateStoragePoolVO;
|
||||
import com.cloud.storage.VMTemplateStorageResourceAssoc;
|
||||
@ -176,7 +177,6 @@ import com.cloud.utils.component.ManagerBase;
|
||||
import com.cloud.utils.concurrency.NamedThreadFactory;
|
||||
import com.cloud.utils.db.DB;
|
||||
import com.cloud.utils.db.Transaction;
|
||||
import com.cloud.utils.db.TransactionCallback;
|
||||
import com.cloud.utils.db.TransactionCallbackNoReturn;
|
||||
import com.cloud.utils.db.TransactionStatus;
|
||||
import com.cloud.utils.exception.CloudRuntimeException;
|
||||
@ -1627,8 +1627,13 @@ public class TemplateManagerImpl extends ManagerBase implements TemplateManager,
|
||||
VMTemplateVO template = _tmpltDao.persist(privateTemplate);
|
||||
// Increment the number of templates
|
||||
if (template != null) {
|
||||
if (cmd.getDetails() != null) {
|
||||
_templateDetailsDao.persist(template.getId(), cmd.getDetails());
|
||||
Map<String, String> detailsStr = cmd.getDetails();
|
||||
if (detailsStr != null) {
|
||||
List<VMTemplateDetailVO> details = new ArrayList<VMTemplateDetailVO>();
|
||||
for (String key : detailsStr.keySet()) {
|
||||
details.add(new VMTemplateDetailVO(template.getId(), key, detailsStr.get(key)));
|
||||
}
|
||||
_templateDetailsDao.addDetails(details);
|
||||
}
|
||||
|
||||
_resourceLimitMgr.incrementResourceCount(templateOwner.getId(), ResourceType.template);
|
||||
|
||||
@ -76,8 +76,8 @@ public class ResourceMetaDataManagerTest {
|
||||
doReturn(1L).when(_taggedResourceMgr).getResourceId(anyString(), eq(ResourceTag.ResourceObjectType.Volume));
|
||||
// _volumeDetailDao.removeDetails(id, key);
|
||||
|
||||
doNothing().when(_volumeDetailDao).removeDetails(anyLong(), anyString());
|
||||
doNothing().when(_nicDetailDao).removeDetails(anyLong(), anyString());
|
||||
doNothing().when(_volumeDetailDao).removeDetail(anyLong(), anyString());
|
||||
doNothing().when(_nicDetailDao).removeDetail(anyLong(), anyString());
|
||||
_resourceMetaDataMgr.deleteResourceMetaData(anyString(), eq(ResourceTag.ResourceObjectType.Volume), anyString());
|
||||
|
||||
}
|
||||
@ -91,8 +91,8 @@ public class ResourceMetaDataManagerTest {
|
||||
doReturn(1L).when(_taggedResourceMgr).getResourceId("1", ResourceTag.ResourceObjectType.Volume);
|
||||
// _volumeDetailDao.removeDetails(id, key);
|
||||
|
||||
doNothing().when(_volumeDetailDao).removeDetails(anyLong(), anyString());
|
||||
doNothing().when(_nicDetailDao).removeDetails(anyLong(), anyString());
|
||||
doNothing().when(_volumeDetailDao).removeDetail(anyLong(), anyString());
|
||||
doNothing().when(_nicDetailDao).removeDetail(anyLong(), anyString());
|
||||
Map<String, String> map = new HashedMap();
|
||||
map.put("key","value");
|
||||
_resourceMetaDataMgr.addResourceMetaData("1", ResourceTag.ResourceObjectType.Volume, map);
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user