Merge branch 'master' into ui-restyle

This commit is contained in:
Brian Federle 2013-10-07 17:12:51 -07:00
commit 019e075987
11 changed files with 160 additions and 19 deletions

View File

@ -40,7 +40,8 @@ public interface ResourceTag extends ControlledEntity, Identity, InternalIdentit
NetworkACL,
StaticRoute,
VMSnapshot,
RemoteAccessVpn
RemoteAccessVpn,
Zone
}
/**

View File

@ -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);
}

View File

@ -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();

View File

@ -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;
}
}

View File

@ -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;
}
}

View File

@ -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");
}

View File

@ -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;
}

View File

@ -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;

View File

@ -1086,7 +1086,11 @@
vlan: {
label: 'label.vlan.id'
},
broadcasturi: {
label: 'broadcasturi'
},
networkofferingid: {
label: 'label.network.offering',
isEditable: true,

View File

@ -29,6 +29,9 @@
name: {
label: 'label.name'
},
description: {
label: 'label.description'
},
value: {
label: 'label.value',
editable: true

View File

@ -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...");
}