From 5a5bdc485c591aabb2d5eff05be0d61dfe8ec231 Mon Sep 17 00:00:00 2001 From: will Date: Mon, 21 Mar 2011 13:59:59 -0700 Subject: [PATCH] bug 9078: You will only see VMs with Virtual Network support when adding port forwarding and lb rules. --- .../src/com/cloud/api/commands/ListVMsCmd.java | 18 +++++++++++++----- ui/scripts/cloud.core.network.js | 4 ++-- 2 files changed, 15 insertions(+), 7 deletions(-) diff --git a/server/src/com/cloud/api/commands/ListVMsCmd.java b/server/src/com/cloud/api/commands/ListVMsCmd.java index cf09bbe40a2..3153591908a 100644 --- a/server/src/com/cloud/api/commands/ListVMsCmd.java +++ b/server/src/com/cloud/api/commands/ListVMsCmd.java @@ -32,6 +32,7 @@ import com.cloud.async.AsyncJobVO; import com.cloud.domain.DomainVO; import com.cloud.host.HostVO; import com.cloud.server.Criteria; +import com.cloud.service.ServiceOffering; import com.cloud.service.ServiceOfferingVO; import com.cloud.storage.VMTemplateVO; import com.cloud.user.Account; @@ -52,6 +53,7 @@ public class ListVMsCmd extends BaseCmd { s_properties.add(new Pair(BaseCmd.Properties.ZONE_ID, Boolean.FALSE)); s_properties.add(new Pair(BaseCmd.Properties.POD_ID, Boolean.FALSE)); s_properties.add(new Pair(BaseCmd.Properties.HOST_ID, Boolean.FALSE)); + s_properties.add(new Pair(BaseCmd.Properties.FOR_VIRTUAL_NETWORK, Boolean.FALSE)); s_properties.add(new Pair(BaseCmd.Properties.KEYWORD, Boolean.FALSE)); s_properties.add(new Pair(BaseCmd.Properties.ACCOUNT, Boolean.FALSE)); s_properties.add(new Pair(BaseCmd.Properties.DOMAIN_ID, Boolean.FALSE)); @@ -80,6 +82,7 @@ public class ListVMsCmd extends BaseCmd { Long zoneId = (Long)params.get(BaseCmd.Properties.ZONE_ID.getName()); Long podId = (Long)params.get(BaseCmd.Properties.POD_ID.getName()); Long hostId = (Long)params.get(BaseCmd.Properties.HOST_ID.getName()); + Boolean forVirtualNetwork = (Boolean)params.get(BaseCmd.Properties.FOR_VIRTUAL_NETWORK.getName()); String keyword = (String)params.get(BaseCmd.Properties.KEYWORD.getName()); Integer page = (Integer)params.get(BaseCmd.Properties.PAGE.getName()); Integer pageSize = (Integer)params.get(BaseCmd.Properties.PAGESIZE.getName()); @@ -149,8 +152,7 @@ public class ListVMsCmd extends BaseCmd { throw new ServerApiException(BaseCmd.VM_LIST_ERROR, "unable to find virtual machines for account id " + accountName.toString()); } - Object[] vmTag = new Object[virtualMachines.size()]; - int i = 0; + List vmTag = new ArrayList(); HashMap hostMap = new HashMap(); List hostList = getManagementServer().listAllActiveHosts(); @@ -235,8 +237,14 @@ public class ListVMsCmd extends BaseCmd { // Service Offering Info ServiceOfferingVO offering = getManagementServer().findServiceOfferingById(vmInstance.getServiceOfferingId()); + + // Probably not the best place to check but it will have to do for now to make this + // the least intrusive fix. + if (forVirtualNetwork != null && forVirtualNetwork && offering.getGuestIpType() != ServiceOffering.GuestIpType.Virtualized) { + continue; + } vmData.add(new Pair(BaseCmd.Properties.SERVICE_OFFERING_ID.getName(), Long.valueOf(vmInstance.getServiceOfferingId()).toString())); - vmData.add(new Pair(BaseCmd.Properties.SERVICE_OFFERING_NAME.getName(), offering.getName())); + vmData.add(new Pair(BaseCmd.Properties.SERVICE_OFFERING_NAME.getName(), offering.getName())); vmData.add(new Pair(BaseCmd.Properties.CPU_NUMBER.getName(), Integer.valueOf(offering.getCpu()).toString())); vmData.add(new Pair(BaseCmd.Properties.CPU_SPEED.getName(), Integer.valueOf(offering.getSpeed()).toString())); vmData.add(new Pair(BaseCmd.Properties.MEMORY.getName(), Integer.valueOf(offering.getRamSize()).toString())); @@ -261,10 +269,10 @@ public class ListVMsCmd extends BaseCmd { //network groups vmData.add(new Pair(BaseCmd.Properties.NETWORK_GROUP_LIST.getName(), getManagementServer().getNetworkGroupsNamesForVm(vmInstance.getId()))); - vmTag[i++] = vmData; + vmTag.add(vmData); } List> returnTags = new ArrayList>(); - Pair vmTags = new Pair("virtualmachine", vmTag); + Pair vmTags = new Pair("virtualmachine", vmTag.toArray()); returnTags.add(vmTags); return returnTags; } diff --git a/ui/scripts/cloud.core.network.js b/ui/scripts/cloud.core.network.js index bbb05ac71b6..d3f6ac9664f 100644 --- a/ui/scripts/cloud.core.network.js +++ b/ui/scripts/cloud.core.network.js @@ -399,7 +399,7 @@ function showNetworkingTab(p_domainId, p_account) { createPortForwardingRow.find("#protocol").val("TCP"); $.ajax({ - data: "command=listVirtualMachines&pagesize=500&response=json&domainid="+ipPanel.data("ip_domainid")+"&account="+ipPanel.data("ip_account"), + data: "command=listVirtualMachines&forvirtualnetwork=true&pagesize=500&response=json&domainid="+ipPanel.data("ip_domainid")+"&account="+ipPanel.data("ip_account"), dataType: "json", success: function(json) { var instances = json.listvirtualmachinesresponse.virtualmachine; @@ -436,7 +436,7 @@ function showNetworkingTab(p_domainId, p_account) { var virtualMachineId = json.virtualmachineid; $.ajax({ - data: "command=listVirtualMachines&pagesize=500&response=json&domainid="+ipPanel.data("ip_domainid")+"&account="+ipPanel.data("ip_account"), + data: "command=listVirtualMachines&forvirtualnetwork=true&pagesize=500&response=json&domainid="+ipPanel.data("ip_domainid")+"&account="+ipPanel.data("ip_account"), dataType: "json", success: function(json) { var instances = json.listvirtualmachinesresponse.virtualmachine;