mirror of https://github.com/apache/cloudstack.git
Merge branch 'master' into ui-restyle
This commit is contained in:
commit
019e075987
|
|
@ -40,7 +40,8 @@ public interface ResourceTag extends ControlledEntity, Identity, InternalIdentit
|
|||
NetworkACL,
|
||||
StaticRoute,
|
||||
VMSnapshot,
|
||||
RemoteAccessVpn
|
||||
RemoteAccessVpn,
|
||||
Zone
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -16,6 +16,7 @@
|
|||
// under the License.
|
||||
package com.cloud.dc.dao;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import com.cloud.dc.DcDetailVO;
|
||||
|
|
@ -29,4 +30,8 @@ public interface DcDetailsDao extends GenericDao<DcDetailVO, Long> {
|
|||
DcDetailVO findDetail(long dcId, String name);
|
||||
|
||||
void deleteDetails(long dcId);
|
||||
|
||||
void removeDetails(Long id, String key);
|
||||
|
||||
List<DcDetailVO> findDetailsList(long dcId);
|
||||
}
|
||||
|
|
@ -22,6 +22,7 @@ import java.util.Map;
|
|||
|
||||
import javax.ejb.Local;
|
||||
|
||||
import com.cloud.vm.UserVmDetailVO;
|
||||
import org.apache.cloudstack.framework.config.ConfigKey;
|
||||
import org.apache.cloudstack.framework.config.ConfigKey.Scope;
|
||||
import org.apache.cloudstack.framework.config.ScopedConfigStorage;
|
||||
|
|
@ -69,7 +70,17 @@ public class DcDetailsDaoImpl extends GenericDaoBase<DcDetailVO, Long> implement
|
|||
}
|
||||
return details;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public List<DcDetailVO> findDetailsList(long dcId) {
|
||||
SearchCriteria<DcDetailVO> sc = DcSearch.create();
|
||||
sc.setParameters("dcId", dcId);
|
||||
|
||||
List<DcDetailVO> results = search(sc, null);
|
||||
return results;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void deleteDetails(long dcId) {
|
||||
SearchCriteria<DcDetailVO> sc = DcSearch.create();
|
||||
|
|
@ -81,6 +92,18 @@ public class DcDetailsDaoImpl extends GenericDaoBase<DcDetailVO, Long> implement
|
|||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void removeDetails(Long id, String key) {
|
||||
if(key != null){
|
||||
DcDetailVO detail = findDetail(id, key);
|
||||
if(detail != null){
|
||||
remove(detail.getId());
|
||||
}
|
||||
}else {
|
||||
deleteDetails(id);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void persist(long dcId, Map<String, String> details) {
|
||||
Transaction txn = Transaction.currentTxn();
|
||||
|
|
|
|||
|
|
@ -27,6 +27,8 @@ import java.util.Set;
|
|||
import javax.ejb.Local;
|
||||
import javax.inject.Inject;
|
||||
|
||||
import com.cloud.dc.DcDetailVO;
|
||||
import com.cloud.dc.dao.DcDetailsDao;
|
||||
import com.cloud.vm.UserVmDetailVO;
|
||||
import com.cloud.vm.dao.UserVmDetailsDao;
|
||||
import org.apache.log4j.Logger;
|
||||
|
|
@ -326,6 +328,9 @@ public class QueryManagerImpl extends ManagerBase implements QueryService {
|
|||
@Inject
|
||||
private DedicatedResourceDao _dedicatedDao;
|
||||
|
||||
@Inject
|
||||
DcDetailsDao _dcDetailsDao;
|
||||
|
||||
@Inject
|
||||
DomainManager _domainMgr;
|
||||
|
||||
|
|
@ -3271,7 +3276,31 @@ public class QueryManagerImpl extends ManagerBase implements QueryService {
|
|||
|
||||
return nicDetailResponseList;
|
||||
|
||||
} else {
|
||||
} else if (resourceType == ResourceTag.TaggedResourceType.Zone){
|
||||
|
||||
List<DcDetailVO> dcDetailList;
|
||||
if (key == null) {
|
||||
dcDetailList = _dcDetailsDao.findDetailsList(id);
|
||||
} else {
|
||||
DcDetailVO nicDetail = _dcDetailsDao.findDetail(id, key);
|
||||
dcDetailList = new LinkedList<DcDetailVO>();
|
||||
dcDetailList.add(nicDetail);
|
||||
}
|
||||
|
||||
List<ResourceDetailResponse> dcDetailResponseList = new ArrayList<ResourceDetailResponse>();
|
||||
for (DcDetailVO dcDetail : dcDetailList) {
|
||||
ResourceDetailResponse dcDetailResponse = new ResourceDetailResponse();
|
||||
// String uuid = ApiDBUtils.findN
|
||||
dcDetailResponse.setName(dcDetail.getName());
|
||||
dcDetailResponse.setValue(dcDetail.getValue());
|
||||
dcDetailResponse.setResourceType(ResourceTag.TaggedResourceType.Nic.toString());
|
||||
dcDetailResponse.setObjectName("zonedetail");
|
||||
dcDetailResponseList.add(dcDetailResponse);
|
||||
}
|
||||
|
||||
return dcDetailResponseList;
|
||||
|
||||
}else {
|
||||
|
||||
List<UserVmDetailVO> userVmDetailList;
|
||||
if (key == null) {
|
||||
|
|
@ -3282,17 +3311,17 @@ public class QueryManagerImpl extends ManagerBase implements QueryService {
|
|||
userVmDetailList.add(nicDetail);
|
||||
}
|
||||
|
||||
List<ResourceDetailResponse> nicDetailResponseList = new ArrayList<ResourceDetailResponse>();
|
||||
List<ResourceDetailResponse> userVmDetailResponseList = new ArrayList<ResourceDetailResponse>();
|
||||
for (UserVmDetailVO nicDetail : userVmDetailList) {
|
||||
ResourceDetailResponse userVmDetailResponse = new ResourceDetailResponse();
|
||||
userVmDetailResponse.setName(nicDetail.getName());
|
||||
userVmDetailResponse.setValue(nicDetail.getValue());
|
||||
userVmDetailResponse.setResourceType(ResourceTag.TaggedResourceType.Nic.toString());
|
||||
userVmDetailResponse.setObjectName("uservmdetail");
|
||||
nicDetailResponseList.add(userVmDetailResponse);
|
||||
userVmDetailResponseList.add(userVmDetailResponse);
|
||||
}
|
||||
|
||||
return nicDetailResponseList;
|
||||
return userVmDetailResponseList;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -24,17 +24,16 @@ import javax.persistence.EnumType;
|
|||
import javax.persistence.Enumerated;
|
||||
import javax.persistence.Id;
|
||||
import javax.persistence.Table;
|
||||
import com.cloud.org.Cluster;
|
||||
import com.cloud.storage.ScopeType;
|
||||
import com.cloud.storage.StoragePoolStatus;
|
||||
import com.cloud.storage.Storage.StoragePoolType;
|
||||
import com.cloud.utils.db.GenericDao;
|
||||
|
||||
import org.apache.cloudstack.api.Identity;
|
||||
import org.apache.cloudstack.api.InternalIdentity;
|
||||
|
||||
|
||||
import com.cloud.hypervisor.Hypervisor.HypervisorType;
|
||||
import com.cloud.org.Cluster;
|
||||
import com.cloud.storage.ScopeType;
|
||||
import com.cloud.storage.Storage.StoragePoolType;
|
||||
import com.cloud.storage.StoragePoolStatus;
|
||||
import com.cloud.utils.db.GenericDao;
|
||||
|
||||
/**
|
||||
* Storage Pool DB view.
|
||||
|
|
@ -137,6 +136,9 @@ public class StoragePoolJoinVO extends BaseViewVO implements InternalIdentity, I
|
|||
@Enumerated(value = EnumType.STRING)
|
||||
private HypervisorType hypervisor;
|
||||
|
||||
@Column(name = "storage_provider_name")
|
||||
private String storageProviderName;
|
||||
|
||||
/**
|
||||
* @return the scope
|
||||
*/
|
||||
|
|
@ -378,5 +380,7 @@ public class StoragePoolJoinVO extends BaseViewVO implements InternalIdentity, I
|
|||
this.jobStatus = jobStatus;
|
||||
}
|
||||
|
||||
|
||||
public String getStorageProviderName() {
|
||||
return storageProviderName;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -23,6 +23,9 @@ import javax.ejb.Local;
|
|||
import javax.inject.Inject;
|
||||
import javax.naming.ConfigurationException;
|
||||
|
||||
import com.cloud.dc.DcDetailVO;
|
||||
import com.cloud.dc.dao.DataCenterDao;
|
||||
import com.cloud.dc.dao.DcDetailsDao;
|
||||
import com.cloud.server.ResourceMetaDataService;
|
||||
import com.cloud.storage.VolumeDetailVO;
|
||||
import com.cloud.storage.dao.VolumeDetailsDao;
|
||||
|
|
@ -95,6 +98,8 @@ public class ResourceMetaDataManagerImpl extends ManagerBase implements Resource
|
|||
@Inject
|
||||
NetworkDao _networkDao;
|
||||
@Inject
|
||||
DataCenterDao _dataCenterDao;
|
||||
@Inject
|
||||
LoadBalancerDao _lbDao;
|
||||
@Inject
|
||||
PortForwardingRulesDao _pfDao;
|
||||
|
|
@ -123,6 +128,8 @@ public class ResourceMetaDataManagerImpl extends ManagerBase implements Resource
|
|||
@Inject
|
||||
NicDao _nicDao;
|
||||
@Inject
|
||||
DcDetailsDao _dcDetailsDao;
|
||||
@Inject
|
||||
TaggedResourceService _taggedResourceMgr;
|
||||
@Inject
|
||||
UserVmDetailsDao _userVmDetail;
|
||||
|
|
@ -148,6 +155,7 @@ public class ResourceMetaDataManagerImpl extends ManagerBase implements Resource
|
|||
_daoMap.put(TaggedResourceType.StaticRoute, _staticRouteDao);
|
||||
_daoMap.put(TaggedResourceType.VMSnapshot, _vmSnapshotDao);
|
||||
_daoMap.put(TaggedResourceType.RemoteAccessVpn, _vpnDao);
|
||||
_daoMap.put(TaggedResourceType.Zone, _dataCenterDao);
|
||||
return true;
|
||||
}
|
||||
|
||||
|
|
@ -208,6 +216,9 @@ public class ResourceMetaDataManagerImpl extends ManagerBase implements Resource
|
|||
}else if (resourceType == TaggedResourceType.UserVm){
|
||||
UserVmDetailVO userVmDetail = new UserVmDetailVO(id, key, value);
|
||||
_userVmDetailDao.persist(userVmDetail);
|
||||
} else if (resourceType == TaggedResourceType.Zone){
|
||||
DcDetailVO dataCenterDetail = new DcDetailVO(id, key, value);
|
||||
_dcDetailsDao.persist(dataCenterDetail);
|
||||
} else {
|
||||
throw new InvalidParameterValueException("The resource type " + resourceType + " is not supported by the API yet");
|
||||
}
|
||||
|
|
@ -233,7 +244,10 @@ public class ResourceMetaDataManagerImpl extends ManagerBase implements Resource
|
|||
_nicDetailDao.removeDetails(id, key);
|
||||
} else if(resourceType == TaggedResourceType.UserVm){
|
||||
_userVmDetailDao.removeDetails(id, key);
|
||||
} else {
|
||||
} else if (resourceType == TaggedResourceType.Zone){
|
||||
_dcDetailsDao.removeDetails(id, key);
|
||||
}
|
||||
else{
|
||||
throw new InvalidParameterValueException("The resource type " + resourceType + " is not supported by the API yet");
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -25,6 +25,7 @@ import javax.ejb.Local;
|
|||
import javax.inject.Inject;
|
||||
import javax.naming.ConfigurationException;
|
||||
|
||||
import com.cloud.dc.dao.DataCenterDao;
|
||||
import com.cloud.vm.dao.NicDao;
|
||||
import com.cloud.network.vpc.NetworkACLItemDao;
|
||||
|
||||
|
|
@ -125,6 +126,8 @@ public class TaggedResourceManagerImpl extends ManagerBase implements TaggedReso
|
|||
NicDao _nicDao;
|
||||
@Inject
|
||||
NetworkACLItemDao _networkACLItemDao;
|
||||
@Inject
|
||||
DataCenterDao _dataCenterDao;
|
||||
|
||||
|
||||
@Override
|
||||
|
|
@ -147,6 +150,7 @@ public class TaggedResourceManagerImpl extends ManagerBase implements TaggedReso
|
|||
_daoMap.put(TaggedResourceType.StaticRoute, _staticRouteDao);
|
||||
_daoMap.put(TaggedResourceType.VMSnapshot, _vmSnapshotDao);
|
||||
_daoMap.put(TaggedResourceType.RemoteAccessVpn, _vpnDao);
|
||||
_daoMap.put(TaggedResourceType.Zone, _dataCenterDao);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -281,6 +281,7 @@ CREATE VIEW `cloud`.`template_view` AS
|
|||
and (resource_tags.resource_type = 'Template' or resource_tags.resource_type='ISO')
|
||||
where
|
||||
vm_template.state='Active';
|
||||
|
||||
DROP VIEW IF EXISTS `cloud`.`volume_view`;
|
||||
CREATE VIEW `cloud`.`volume_view` AS
|
||||
select
|
||||
|
|
@ -392,3 +393,56 @@ CREATE VIEW `cloud`.`volume_view` AS
|
|||
|
||||
INSERT IGNORE INTO `cloud`.`configuration`(category, instance, component, name, value, description, default_value) VALUES ('Advanced', 'DEFAULT', 'management-server', 's3.multipart.enabled', 'true', 'enable s3 multipart upload', 'true');
|
||||
|
||||
DROP VIEW IF EXISTS `cloud`.`storage_pool_view`;
|
||||
CREATE VIEW `cloud`.`storage_pool_view` AS
|
||||
select
|
||||
storage_pool.id,
|
||||
storage_pool.uuid,
|
||||
storage_pool.name,
|
||||
storage_pool.status,
|
||||
storage_pool.path,
|
||||
storage_pool.pool_type,
|
||||
storage_pool.host_address,
|
||||
storage_pool.created,
|
||||
storage_pool.removed,
|
||||
storage_pool.capacity_bytes,
|
||||
storage_pool.capacity_iops,
|
||||
storage_pool.scope,
|
||||
storage_pool.hypervisor,
|
||||
storage_pool.storage_provider_name,
|
||||
cluster.id cluster_id,
|
||||
cluster.uuid cluster_uuid,
|
||||
cluster.name cluster_name,
|
||||
cluster.cluster_type,
|
||||
data_center.id data_center_id,
|
||||
data_center.uuid data_center_uuid,
|
||||
data_center.name data_center_name,
|
||||
data_center.networktype data_center_type,
|
||||
host_pod_ref.id pod_id,
|
||||
host_pod_ref.uuid pod_uuid,
|
||||
host_pod_ref.name pod_name,
|
||||
storage_pool_details.name tag,
|
||||
op_host_capacity.used_capacity disk_used_capacity,
|
||||
op_host_capacity.reserved_capacity disk_reserved_capacity,
|
||||
async_job.id job_id,
|
||||
async_job.uuid job_uuid,
|
||||
async_job.job_status job_status,
|
||||
async_job.account_id job_account_id
|
||||
from
|
||||
`cloud`.`storage_pool`
|
||||
left join
|
||||
`cloud`.`cluster` ON storage_pool.cluster_id = cluster.id
|
||||
left join
|
||||
`cloud`.`data_center` ON storage_pool.data_center_id = data_center.id
|
||||
left join
|
||||
`cloud`.`host_pod_ref` ON storage_pool.pod_id = host_pod_ref.id
|
||||
left join
|
||||
`cloud`.`storage_pool_details` ON storage_pool_details.pool_id = storage_pool.id
|
||||
and storage_pool_details.value = 'true'
|
||||
left join
|
||||
`cloud`.`op_host_capacity` ON storage_pool.id = op_host_capacity.host_id
|
||||
and op_host_capacity.capacity_type = 3
|
||||
left join
|
||||
`cloud`.`async_job` ON async_job.instance_id = storage_pool.id
|
||||
and async_job.instance_type = 'StoragePool'
|
||||
and async_job.job_status = 0;
|
||||
|
|
|
|||
|
|
@ -1086,7 +1086,11 @@
|
|||
vlan: {
|
||||
label: 'label.vlan.id'
|
||||
},
|
||||
|
||||
|
||||
broadcasturi: {
|
||||
label: 'broadcasturi'
|
||||
},
|
||||
|
||||
networkofferingid: {
|
||||
label: 'label.network.offering',
|
||||
isEditable: true,
|
||||
|
|
|
|||
|
|
@ -29,6 +29,9 @@
|
|||
name: {
|
||||
label: 'label.name'
|
||||
},
|
||||
description: {
|
||||
label: 'label.description'
|
||||
},
|
||||
value: {
|
||||
label: 'label.value',
|
||||
editable: true
|
||||
|
|
|
|||
|
|
@ -281,15 +281,15 @@ public class UsageManagerImpl extends ManagerBase implements UsageManager, Runna
|
|||
|
||||
@Override
|
||||
public void run() {
|
||||
new ManagedContextRunnable() {
|
||||
(new ManagedContextRunnable() {
|
||||
@Override
|
||||
protected void runInContext() {
|
||||
runInContext();
|
||||
runInContextInternal();
|
||||
}
|
||||
};
|
||||
}).run();
|
||||
}
|
||||
|
||||
protected void runInContext() {
|
||||
protected void runInContextInternal() {
|
||||
if (s_logger.isInfoEnabled()) {
|
||||
s_logger.info("starting usage job...");
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue