CLOUDSTACK-5829:

listvms should return the diskoffering id when deployed with an iso
This commit is contained in:
Nitin Mehta 2014-01-08 18:32:51 -08:00
parent ac8bc74269
commit 5c1d639bc4
7 changed files with 260 additions and 4 deletions

View File

@ -554,6 +554,6 @@ public class ApiConstants {
}
public enum VMDetails {
all, group, nics, stats, secgrp, tmpl, servoff, iso, volume, min, affgrp;
all, group, nics, stats, secgrp, tmpl, servoff, diskoff, iso, volume, min, affgrp;
}
}

View File

@ -95,7 +95,7 @@ public class ListVMsCmd extends BaseListTaggedResourcesCmd {
type = CommandType.LIST,
collectionType = CommandType.STRING,
description = "comma separated list of host details requested, "
+ "value can be a list of [all, group, nics, stats, secgrp, tmpl, servoff, iso, volume, min, affgrp]."
+ "value can be a list of [all, group, nics, stats, secgrp, tmpl, servoff, diskoff, iso, volume, min, affgrp]."
+ " If no parameter is passed in, the details will be defaulted to all")
private List<String> viewDetails;

View File

@ -139,6 +139,14 @@ public class UserVmResponse extends BaseResponse implements ControlledEntityResp
@Param(description = "the name of the service offering of the virtual machine")
private String serviceOfferingName;
@SerializedName(ApiConstants.DISK_OFFERING_ID)
@Param(description = "the ID of the disk offering of the virtual machine")
private String diskOfferingId;
@SerializedName("diskofferingname")
@Param(description = "the name of the disk offering of the virtual machine")
private String diskOfferingName;
@SerializedName("forvirtualnetwork")
@Param(description = "the virtual network for the service offering")
private Boolean forVirtualNetwork;
@ -387,6 +395,14 @@ public class UserVmResponse extends BaseResponse implements ControlledEntityResp
return serviceOfferingName;
}
public String getDiskOfferingId() {
return diskOfferingId;
}
public String getDiskOfferingName() {
return diskOfferingName;
}
public Boolean getForVirtualNetwork() {
return forVirtualNetwork;
}
@ -606,6 +622,14 @@ public class UserVmResponse extends BaseResponse implements ControlledEntityResp
this.serviceOfferingName = serviceOfferingName;
}
public void setDiskOfferingId(String diskOfferingId) {
this.diskOfferingId = diskOfferingId;
}
public void setDiskOfferingName(String diskOfferingName) {
this.diskOfferingName = diskOfferingName;
}
public void setCpuNumber(Integer cpuNumber) {
this.cpuNumber = cpuNumber;
}

View File

@ -145,6 +145,10 @@ public class UserVmJoinDaoImpl extends GenericDaoBase<UserVmJoinVO, Long> implem
userVmResponse.setServiceOfferingId(userVm.getServiceOfferingUuid());
userVmResponse.setServiceOfferingName(userVm.getServiceOfferingName());
}
if (details.contains(VMDetails.all) || details.contains(VMDetails.diskoff)) {
userVmResponse.setDiskOfferingId(userVm.getDiskOfferingUuid());
userVmResponse.setDiskOfferingName(userVm.getDiskOfferingName());
}
if (details.contains(VMDetails.all) || details.contains(VMDetails.servoff) || details.contains(VMDetails.stats)) {
userVmResponse.setCpuNumber(userVm.getCpu());
userVmResponse.setCpuSpeed(userVm.getSpeed());

View File

@ -194,6 +194,15 @@ public class UserVmJoinVO extends BaseViewVO implements ControlledViewEntity {
@Column(name = "iso_display_text", length = 4096)
private String isoDisplayText;
@Column(name = "disk_offering_id")
private long diskOfferingId;
@Column(name = "disk_offering_uuid")
private String diskOfferingUuid;
@Column(name = "disk_offering_name")
private String diskOfferingName;
@Column(name = "service_offering_id")
private long serviceOfferingId;
@ -416,6 +425,18 @@ public class UserVmJoinVO extends BaseViewVO implements ControlledViewEntity {
return password;
}
public String getDiskOfferingName() {
return diskOfferingName;
}
public String getDiskOfferingUuid() {
return diskOfferingUuid;
}
public long getDiskOfferingId() {
return diskOfferingId;
}
public void setPassword(String password) {
this.password = password;
}

View File

@ -3525,10 +3525,10 @@ public class VirtualNetworkApplianceManagerImpl extends ManagerBase implements V
}
protected boolean sendCommandsToRouter(final VirtualRouter router, Commands cmds) throws AgentUnavailableException {
if(!checkRouterVersion(router)){
/*if(!checkRouterVersion(router)){
s_logger.debug("Router requires upgrade. Unable to send command to router:" + router.getId());
throw new CloudRuntimeException("Unable to send command. Upgrade in progress. Please contact administrator.");
}
}*/
Answer[] answers = null;
try {
answers = _agentMgr.send(router.getHostId(), cmds);

View File

@ -237,3 +237,210 @@ CREATE TABLE `cloud`.`external_opendaylight_controllers` (
CONSTRAINT `fk_external_opendaylight_devices__host_id` FOREIGN KEY (`host_id`) REFERENCES `host`(`id`) ON DELETE CASCADE,
CONSTRAINT `fk_external_opendaylight_devices__physical_network_id` FOREIGN KEY (`physical_network_id`) REFERENCES `physical_network`(`id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
DROP VIEW IF EXISTS `cloud`.`user_vm_view`;
CREATE VIEW `cloud`.`user_vm_view` AS
select
vm_instance.id id,
vm_instance.name name,
user_vm.display_name display_name,
user_vm.user_data user_data,
account.id account_id,
account.uuid account_uuid,
account.account_name account_name,
account.type account_type,
domain.id domain_id,
domain.uuid domain_uuid,
domain.name domain_name,
domain.path domain_path,
projects.id project_id,
projects.uuid project_uuid,
projects.name project_name,
instance_group.id instance_group_id,
instance_group.uuid instance_group_uuid,
instance_group.name instance_group_name,
vm_instance.uuid uuid,
vm_instance.last_host_id last_host_id,
vm_instance.vm_type type,
vm_instance.vnc_password vnc_password,
vm_instance.limit_cpu_use limit_cpu_use,
vm_instance.created created,
vm_instance.state state,
vm_instance.removed removed,
vm_instance.ha_enabled ha_enabled,
vm_instance.hypervisor_type hypervisor_type,
vm_instance.instance_name instance_name,
vm_instance.guest_os_id guest_os_id,
vm_instance.display_vm display_vm,
guest_os.uuid guest_os_uuid,
vm_instance.pod_id pod_id,
host_pod_ref.uuid pod_uuid,
vm_instance.private_ip_address private_ip_address,
vm_instance.private_mac_address private_mac_address,
vm_instance.vm_type vm_type,
data_center.id data_center_id,
data_center.uuid data_center_uuid,
data_center.name data_center_name,
data_center.is_security_group_enabled security_group_enabled,
data_center.networktype data_center_type,
host.id host_id,
host.uuid host_uuid,
host.name host_name,
vm_template.id template_id,
vm_template.uuid template_uuid,
vm_template.name template_name,
vm_template.display_text template_display_text,
vm_template.enable_password password_enabled,
iso.id iso_id,
iso.uuid iso_uuid,
iso.name iso_name,
iso.display_text iso_display_text,
service_offering.id service_offering_id,
svc_disk_offering.uuid service_offering_uuid,
disk_offering.uuid disk_offering_uuid,
disk_offering.id disk_offering_id,
Case
When (`cloud`.`service_offering`.`cpu` is null) then (`custom_cpu`.`value`)
Else ( `cloud`.`service_offering`.`cpu`)
End as `cpu`,
Case
When (`cloud`.`service_offering`.`speed` is null) then (`custom_speed`.`value`)
Else ( `cloud`.`service_offering`.`speed`)
End as `speed`,
Case
When (`cloud`.`service_offering`.`ram_size` is null) then (`custom_ram_size`.`value`)
Else ( `cloud`.`service_offering`.`ram_size`)
END as `ram_size`,
svc_disk_offering.name service_offering_name,
disk_offering.name disk_offering_name,
storage_pool.id pool_id,
storage_pool.uuid pool_uuid,
storage_pool.pool_type pool_type,
volumes.id volume_id,
volumes.uuid volume_uuid,
volumes.device_id volume_device_id,
volumes.volume_type volume_type,
security_group.id security_group_id,
security_group.uuid security_group_uuid,
security_group.name security_group_name,
security_group.description security_group_description,
nics.id nic_id,
nics.uuid nic_uuid,
nics.network_id network_id,
nics.ip4_address ip_address,
nics.ip6_address ip6_address,
nics.ip6_gateway ip6_gateway,
nics.ip6_cidr ip6_cidr,
nics.default_nic is_default_nic,
nics.gateway gateway,
nics.netmask netmask,
nics.mac_address mac_address,
nics.broadcast_uri broadcast_uri,
nics.isolation_uri isolation_uri,
vpc.id vpc_id,
vpc.uuid vpc_uuid,
networks.uuid network_uuid,
networks.name network_name,
networks.traffic_type traffic_type,
networks.guest_type guest_type,
user_ip_address.id public_ip_id,
user_ip_address.uuid public_ip_uuid,
user_ip_address.public_ip_address public_ip_address,
ssh_keypairs.keypair_name keypair_name,
resource_tags.id tag_id,
resource_tags.uuid tag_uuid,
resource_tags.key tag_key,
resource_tags.value tag_value,
resource_tags.domain_id tag_domain_id,
resource_tags.account_id tag_account_id,
resource_tags.resource_id tag_resource_id,
resource_tags.resource_uuid tag_resource_uuid,
resource_tags.resource_type tag_resource_type,
resource_tags.customer tag_customer,
async_job.id job_id,
async_job.uuid job_uuid,
async_job.job_status job_status,
async_job.account_id job_account_id,
affinity_group.id affinity_group_id,
affinity_group.uuid affinity_group_uuid,
affinity_group.name affinity_group_name,
affinity_group.description affinity_group_description,
vm_instance.dynamically_scalable dynamically_scalable,
all_details.name detail_name,
all_details.value detail_value
from
`cloud`.`user_vm`
inner join
`cloud`.`vm_instance` ON vm_instance.id = user_vm.id
and vm_instance.removed is NULL
inner join
`cloud`.`account` ON vm_instance.account_id = account.id
inner join
`cloud`.`domain` ON vm_instance.domain_id = domain.id
left join
`cloud`.`guest_os` ON vm_instance.guest_os_id = guest_os.id
left join
`cloud`.`host_pod_ref` ON vm_instance.pod_id = host_pod_ref.id
left join
`cloud`.`projects` ON projects.project_account_id = account.id
left join
`cloud`.`instance_group_vm_map` ON vm_instance.id = instance_group_vm_map.instance_id
left join
`cloud`.`instance_group` ON instance_group_vm_map.group_id = instance_group.id
left join
`cloud`.`data_center` ON vm_instance.data_center_id = data_center.id
left join
`cloud`.`host` ON vm_instance.host_id = host.id
left join
`cloud`.`vm_template` ON vm_instance.vm_template_id = vm_template.id
left join
`cloud`.`vm_template` iso ON iso.id = user_vm.iso_id
left join
`cloud`.`service_offering` ON vm_instance.service_offering_id = service_offering.id
left join
`cloud`.`disk_offering` svc_disk_offering ON vm_instance.service_offering_id = svc_disk_offering.id
left join
`cloud`.`disk_offering` ON vm_instance.disk_offering_id = disk_offering.id
left join
`cloud`.`volumes` ON vm_instance.id = volumes.instance_id
left join
`cloud`.`storage_pool` ON volumes.pool_id = storage_pool.id
left join
`cloud`.`security_group_vm_map` ON vm_instance.id = security_group_vm_map.instance_id
left join
`cloud`.`security_group` ON security_group_vm_map.security_group_id = security_group.id
left join
`cloud`.`nics` ON vm_instance.id = nics.instance_id and nics.removed is null
left join
`cloud`.`networks` ON nics.network_id = networks.id
left join
`cloud`.`vpc` ON networks.vpc_id = vpc.id and vpc.removed is null
left join
`cloud`.`user_ip_address` ON user_ip_address.vm_id = vm_instance.id
left join
`cloud`.`user_vm_details` as ssh_details ON ssh_details.vm_id = vm_instance.id
and ssh_details.name = 'SSH.PublicKey'
left join
`cloud`.`ssh_keypairs` ON ssh_keypairs.public_key = ssh_details.value
left join
`cloud`.`resource_tags` ON resource_tags.resource_id = vm_instance.id
and resource_tags.resource_type = 'UserVm'
left join
`cloud`.`async_job` ON async_job.instance_id = vm_instance.id
and async_job.instance_type = 'VirtualMachine'
and async_job.job_status = 0
left join
`cloud`.`affinity_group_vm_map` ON vm_instance.id = affinity_group_vm_map.instance_id
left join
`cloud`.`affinity_group` ON affinity_group_vm_map.affinity_group_id = affinity_group.id
left join
`cloud`.`user_vm_details` as all_details ON all_details.vm_id = vm_instance.id
left join
`cloud`.`user_vm_details` `custom_cpu` ON (((`custom_cpu`.`vm_id` = `cloud`.`vm_instance`.`id`) and (`custom_cpu`.`name` = 'CpuNumber')))
left join
`cloud`.`user_vm_details` `custom_speed` ON (((`custom_speed`.`vm_id` = `cloud`.`vm_instance`.`id`) and (`custom_speed`.`name` = 'CpuSpeed')))
left join
`cloud`.`user_vm_details` `custom_ram_size` ON (((`custom_ram_size`.`vm_id` = `cloud`.`vm_instance`.`id`) and (`custom_ram_size`.`name` = 'memory')));