diff --git a/core/src/com/cloud/vm/ConsoleProxy.java b/core/src/com/cloud/vm/ConsoleProxy.java
index 66d2da16eb2..d3fefb52cdc 100644
--- a/core/src/com/cloud/vm/ConsoleProxy.java
+++ b/core/src/com/cloud/vm/ConsoleProxy.java
@@ -15,30 +15,13 @@
* along with this program. If not, see .
*
*/
-
package com.cloud.vm;
-import java.util.Date;
-
/**
* ConsoleProxy is a system VM instance that is used
* to proxy VNC traffic
*/
-public interface ConsoleProxy extends VirtualMachine {
-
- public String getGateway();
- public String getDns1();
- public String getDns2();
- public String getDomain();
- public String getPublicIpAddress();
- public String getPublicNetmask();
- public String getPublicMacAddress();
- public Long getVlanDbId();
- public String getVlanId();
- public String getPrivateNetmask();
- public int getRamSize();
- public int getActiveSession();
- public Date getLastUpdateTime();
+public interface ConsoleProxy extends SystemVm {
public byte[] getSessionDetails();
}
diff --git a/core/src/com/cloud/vm/SecondaryStorageVm.java b/core/src/com/cloud/vm/SecondaryStorageVm.java
index 139bf23f6db..b43a3160788 100644
--- a/core/src/com/cloud/vm/SecondaryStorageVm.java
+++ b/core/src/com/cloud/vm/SecondaryStorageVm.java
@@ -17,25 +17,10 @@
*/
package com.cloud.vm;
-import java.util.Date;
-
/**
* Secondary Storage VM is a system VM instance that is used
* to interface the management server to secondary storage
*/
-public interface SecondaryStorageVm extends VirtualMachine {
-
- public String getGateway();
- public String getDns1();
- public String getDns2();
- public String getDomain();
- public String getPublicIpAddress();
- public String getPublicNetmask();
- public String getPublicMacAddress();
- public Long getVlanDbId();
- public String getVlanId();
- public String getPrivateNetmask();
- public int getRamSize();
- public Date getLastUpdateTime();
+public interface SecondaryStorageVm extends SystemVm {
}
diff --git a/core/src/com/cloud/vm/SystemVm.java b/core/src/com/cloud/vm/SystemVm.java
new file mode 100644
index 00000000000..d6cad60abf8
--- /dev/null
+++ b/core/src/com/cloud/vm/SystemVm.java
@@ -0,0 +1,36 @@
+/**
+ * Copyright (C) 2010 Cloud.com, Inc. All rights reserved.
+ *
+ * This software is licensed under the GNU General Public License v3 or later.
+ *
+ * It is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or any later version.
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ *
+ */
+package com.cloud.vm;
+
+import java.util.Date;
+
+public interface SystemVm extends VirtualMachine {
+ public String getGateway();
+ public String getDns1();
+ public String getDns2();
+ public String getDomain();
+ public String getPublicIpAddress();
+ public String getPublicNetmask();
+ public String getPublicMacAddress();
+ public Long getVlanDbId();
+ public String getVlanId();
+ public String getPrivateNetmask();
+ public int getRamSize();
+ public int getActiveSession();
+ public Date getLastUpdateTime();
+}
diff --git a/server/src/com/cloud/api/commands/ListIsoPermissionsCmd.java b/server/src/com/cloud/api/commands/ListIsoPermissionsCmd.java
index d655008c439..0db2ea788c8 100644
--- a/server/src/com/cloud/api/commands/ListIsoPermissionsCmd.java
+++ b/server/src/com/cloud/api/commands/ListIsoPermissionsCmd.java
@@ -10,7 +10,7 @@ public class ListIsoPermissionsCmd extends ListTemplateOrIsoPermissionsCmd {
return "listisopermissionsresponse";
}
- protected String getMediaType() {
+ public String getMediaType() {
return "iso";
}
diff --git a/server/src/com/cloud/api/commands/ListLoadBalancerRuleInstancesCmd.java b/server/src/com/cloud/api/commands/ListLoadBalancerRuleInstancesCmd.java
index 12aabd3686c..d84e936be02 100644
--- a/server/src/com/cloud/api/commands/ListLoadBalancerRuleInstancesCmd.java
+++ b/server/src/com/cloud/api/commands/ListLoadBalancerRuleInstancesCmd.java
@@ -80,6 +80,7 @@ public class ListLoadBalancerRuleInstancesCmd extends BaseListCmd {
userVmResponse.setId(instance.getId());
userVmResponse.setName(instance.getName());
userVmResponse.setDisplayName(instance.getDisplayName());
+ userVmResponse.setPrivateIp(instance.getPrivateIpAddress());
// TODO: implement
Account accountTemp = getManagementServer().findAccountById(instance.getAccountId());
diff --git a/server/src/com/cloud/api/commands/ListStoragePoolsAndHostsCmd.java b/server/src/com/cloud/api/commands/ListStoragePoolsAndHostsCmd.java
index 7f474325f26..e84c843f9cd 100644
--- a/server/src/com/cloud/api/commands/ListStoragePoolsAndHostsCmd.java
+++ b/server/src/com/cloud/api/commands/ListStoragePoolsAndHostsCmd.java
@@ -25,12 +25,15 @@ import java.util.Map;
import org.apache.log4j.Logger;
import com.cloud.api.BaseCmd;
+import com.cloud.api.BaseListCmd;
+import com.cloud.api.Implementation;
import com.cloud.api.Parameter;
import com.cloud.host.Host;
import com.cloud.server.ManagementServer;
import com.cloud.utils.Pair;
-
-public class ListStoragePoolsAndHostsCmd extends BaseCmd{
+
+@Implementation(method="")
+public class ListStoragePoolsAndHostsCmd extends BaseListCmd {
public static final Logger s_logger = Logger.getLogger(ListStoragePoolsAndHostsCmd.class.getName());
private static final String s_name = "liststoragepoolsandhostsresponse";
@@ -115,8 +118,7 @@ public class ListStoragePoolsAndHostsCmd extends BaseCmd{
}
@Override
- public List> getProperties() {
- return s_properties;
+ public String getResponse() {
}
@Override
diff --git a/server/src/com/cloud/api/commands/ListStoragePoolsCmd.java b/server/src/com/cloud/api/commands/ListStoragePoolsCmd.java
index abb5848c2f5..5c375d5f554 100644
--- a/server/src/com/cloud/api/commands/ListStoragePoolsCmd.java
+++ b/server/src/com/cloud/api/commands/ListStoragePoolsCmd.java
@@ -20,40 +20,23 @@ package com.cloud.api.commands;
import java.util.ArrayList;
import java.util.List;
-import java.util.Map;
import org.apache.log4j.Logger;
-import com.cloud.api.BaseCmd;
+import com.cloud.api.BaseListCmd;
+import com.cloud.api.Implementation;
import com.cloud.api.Parameter;
-import com.cloud.api.ServerApiException;
+import com.cloud.api.response.StoragePoolResponse;
import com.cloud.dc.ClusterVO;
-import com.cloud.server.Criteria;
-import com.cloud.server.ManagementServer;
+import com.cloud.serializer.SerializerHelper;
import com.cloud.storage.StoragePoolVO;
import com.cloud.storage.StorageStats;
-import com.cloud.storage.dao.VolumeDao;
-import com.cloud.utils.Pair;
-import com.cloud.utils.component.ComponentLocator;
-
-public class ListStoragePoolsCmd extends BaseCmd{
+
+@Implementation(method="searchForStoragePools")
+public class ListStoragePoolsCmd extends BaseListCmd {
public static final Logger s_logger = Logger.getLogger(ListStoragePoolsCmd.class.getName());
private static final String s_name = "liststoragepoolsresponse";
- private static final List> s_properties = new ArrayList>();
-
- static {
- s_properties.add(new Pair(BaseCmd.Properties.CLUSTER_ID, Boolean.FALSE));
- s_properties.add(new Pair(BaseCmd.Properties.IP_ADDRESS, Boolean.FALSE));
- s_properties.add(new Pair(BaseCmd.Properties.NAME, Boolean.FALSE));
- s_properties.add(new Pair(BaseCmd.Properties.PATH, Boolean.FALSE));
- s_properties.add(new Pair(BaseCmd.Properties.POD_ID, Boolean.FALSE));
- s_properties.add(new Pair(BaseCmd.Properties.ZONE_ID, Boolean.FALSE));
-
- s_properties.add(new Pair(BaseCmd.Properties.KEYWORD, Boolean.FALSE));
- s_properties.add(new Pair(BaseCmd.Properties.PAGE, Boolean.FALSE));
- s_properties.add(new Pair(BaseCmd.Properties.PAGESIZE, Boolean.FALSE));
- }
/////////////////////////////////////////////////////
//////////////// API parameters /////////////////////
@@ -114,107 +97,54 @@ public class ListStoragePoolsCmd extends BaseCmd{
return s_name;
}
- @Override
- public List> getProperties() {
- return s_properties;
- }
-
- @Override
- public List> execute(Map params) {
- String name = (String)params.get(BaseCmd.Properties.NAME.getName());
- Long zoneId = (Long)params.get(BaseCmd.Properties.ZONE_ID.getName());
- Long podId = (Long)params.get(BaseCmd.Properties.POD_ID.getName());
- Long clusterId = (Long)params.get(BaseCmd.Properties.CLUSTER_ID.getName());
- String ipAddress = (String)params.get(BaseCmd.Properties.IP_ADDRESS.getName());
- String path = (String)params.get(BaseCmd.Properties.PATH.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());
-
- Long startIndex = Long.valueOf(0);
- int pageSizeNum = 50;
- if (pageSize != null) {
- pageSizeNum = pageSize.intValue();
- }
- if (page != null) {
- int pageNum = page.intValue();
- if (pageNum > 0) {
- startIndex = Long.valueOf(pageSizeNum * (pageNum-1));
- }
- }
- Criteria c = new Criteria("id", Boolean.TRUE, startIndex, Long.valueOf(pageSizeNum));
- if (keyword != null) {
- c.addCriteria(Criteria.KEYWORD, keyword);
- } else {
- c.addCriteria(Criteria.NAME, name);
- c.addCriteria(Criteria.DATACENTERID, zoneId);
- c.addCriteria(Criteria.PODID, podId);
- c.addCriteria(Criteria.CLUSTERID, clusterId);
- c.addCriteria(Criteria.ADDRESS, ipAddress);
- c.addCriteria(Criteria.PATH, path);
- }
-
- List extends StoragePoolVO> pools = getManagementServer().searchForStoragePools(c);
-
- if (pools == null) {
- throw new ServerApiException(BaseCmd.INTERNAL_ERROR, "unable to find pools");
- }
-
- ComponentLocator locator = ComponentLocator.getLocator(ManagementServer.Name);
- VolumeDao volDao = locator.getDao(VolumeDao.class);
- List> poolTags = new ArrayList>();
- Object[] sTag = new Object[pools.size()];
- int i = 0;
- for (StoragePoolVO pool : pools) {
- StoragePoolVO netfsPool = pool;
- List> poolData = new ArrayList>();
- poolData.add(new Pair(BaseCmd.Properties.ID.getName(), Long.toString(pool.getId())));
- poolData.add(new Pair(BaseCmd.Properties.NAME.getName(), pool.getName()));
-
- if (pool.getPoolType() != null) {
- poolData.add(new Pair(BaseCmd.Properties.TYPE.getName(), pool.getPoolType().toString()));
- }
- poolData.add(new Pair(BaseCmd.Properties.IP_ADDRESS.getName(), netfsPool.getHostAddress()));
- poolData.add(new Pair(BaseCmd.Properties.ZONE_ID.getName(), Long.valueOf(pool.getDataCenterId()).toString()));
- poolData.add(new Pair(BaseCmd.Properties.ZONE_NAME.getName(), getManagementServer().getDataCenterBy(pool.getDataCenterId()).getName()));
- if (pool.getPodId() != null) {
- poolData.add(new Pair(BaseCmd.Properties.POD_ID.getName(), Long.valueOf(pool.getPodId()).toString()));
- poolData.add(new Pair(BaseCmd.Properties.POD_NAME.getName(), getManagementServer().getPodBy(pool.getPodId()).getName()));
- }
-
- poolData.add(new Pair(BaseCmd.Properties.PATH.getName(), netfsPool.getPath().toString()));
-
- StorageStats stats = getManagementServer().getStoragePoolStatistics(pool.getId());
- long capacity = pool.getCapacityBytes();
- long available = pool.getAvailableBytes() ;
- long used = capacity - available;
-
- if (stats != null) {
- used = stats.getByteUsed();
- available = capacity - used;
- }
-
- poolData.add(new Pair(BaseCmd.Properties.DISK_SIZE_TOTAL.getName(), Long.valueOf(pool.getCapacityBytes()).toString()));
- poolData.add(new Pair(BaseCmd.Properties.DISK_SIZE_ALLOCATED.getName(), Long.valueOf(used).toString()));
-
- if (pool.getCreated() != null) {
- poolData.add(new Pair(BaseCmd.Properties.CREATED.getName(), getDateString(pool.getCreated())));
+ @Override @SuppressWarnings("unchecked")
+ public String getResponse() {
+ List extends StoragePoolVO> pools = (List extends StoragePoolVO>)getResponseObject();
+
+ List response = new ArrayList();
+ for (StoragePoolVO pool : pools) {
+ StoragePoolResponse poolResponse = new StoragePoolResponse();
+ poolResponse.setId(pool.getId());
+ poolResponse.setName(pool.getName());
+ poolResponse.setPath(pool.getPath());
+ poolResponse.setIpAddress(pool.getHostAddress());
+ poolResponse.setZoneId(pool.getDataCenterId());
+ poolResponse.setZoneName(getManagementServer().getDataCenterBy(pool.getDataCenterId()).getName());
+ if (pool.getPoolType() != null) {
+ poolResponse.setType(pool.getPoolType().toString());
}
-
+ if (pool.getPodId() != null) {
+ poolResponse.setPodId(pool.getPodId());
+ poolResponse.setPodName(getManagementServer().getPodBy(pool.getPodId()).getName());
+ }
+ if (pool.getCreated() != null) {
+ poolResponse.setCreated(pool.getCreated());
+ }
+
+ StorageStats stats = getManagementServer().getStoragePoolStatistics(pool.getId());
+ long capacity = pool.getCapacityBytes();
+ long available = pool.getAvailableBytes() ;
+ long used = capacity - available;
+
+ if (stats != null) {
+ used = stats.getByteUsed();
+ available = capacity - used;
+ }
+
+ poolResponse.setDiskSizeTotal(pool.getCapacityBytes());
+ poolResponse.setDiskSizeAllocated(used);
+
if (pool.getClusterId() != null) {
- ClusterVO cluster = getManagementServer().findClusterById(pool.getClusterId());
- poolData.add(new Pair(BaseCmd.Properties.CLUSTER_ID.getName(), cluster.getId()));
- poolData.add(new Pair(BaseCmd.Properties.CLUSTER_NAME.getName(), cluster.getName()));
+ ClusterVO cluster = getManagementServer().findClusterById(pool.getClusterId());
+ poolResponse.setClusterId(cluster.getId());
+ poolResponse.setClusterName(cluster.getName());
}
-
- poolData.add(new Pair(BaseCmd.Properties.TAGS.getName(), getManagementServer().getStoragePoolTags(pool.getId())));
-
- sTag[i++] = poolData;
- volDao.getCountAndTotalByPool(pool.getId());
- }
- Pair poolTag = new Pair("storagepool", sTag);
- poolTags.add(poolTag);
-
- return poolTags;
+
+ poolResponse.setTags(getManagementServer().getStoragePoolTags(pool.getId()));
+
+ response.add(poolResponse);
+ }
+
+ return SerializerHelper.toSerializedString(response);
}
}
diff --git a/server/src/com/cloud/api/commands/ListSystemVMsCmd.java b/server/src/com/cloud/api/commands/ListSystemVMsCmd.java
index 4ae4939639c..fd967021489 100644
--- a/server/src/com/cloud/api/commands/ListSystemVMsCmd.java
+++ b/server/src/com/cloud/api/commands/ListSystemVMsCmd.java
@@ -15,43 +15,30 @@
* along with this program. If not, see .
*
*/
-
package com.cloud.api.commands;
-
+
import java.util.ArrayList;
import java.util.List;
-import java.util.Map;
import org.apache.log4j.Logger;
-import com.cloud.api.BaseCmd;
+import com.cloud.api.BaseListCmd;
+import com.cloud.api.Implementation;
import com.cloud.api.Parameter;
+import com.cloud.api.response.SystemVmResponse;
import com.cloud.async.AsyncJobVO;
-import com.cloud.server.Criteria;
-import com.cloud.utils.Pair;
+import com.cloud.serializer.SerializerHelper;
import com.cloud.vm.ConsoleProxyVO;
import com.cloud.vm.SecondaryStorageVmVO;
-
-public class ListSystemVMsCmd extends BaseCmd {
- public static final Logger s_logger = Logger.getLogger(ListSystemVMsCmd.class.getName());
-
- private static final String s_name = "listsystemvmsresponse";
- private static final List> s_properties = new ArrayList>();
-
- static {
- s_properties.add(new Pair(BaseCmd.Properties.HOST_ID, Boolean.FALSE));
- s_properties.add(new Pair(BaseCmd.Properties.ID, Boolean.FALSE));
- s_properties.add(new Pair(BaseCmd.Properties.NAME, Boolean.FALSE));
- s_properties.add(new Pair(BaseCmd.Properties.POD_ID, Boolean.FALSE));
- s_properties.add(new Pair(BaseCmd.Properties.STATE, Boolean.FALSE));
- s_properties.add(new Pair(BaseCmd.Properties.SYSTEM_VM_TYPE, Boolean.FALSE));
- s_properties.add(new Pair(BaseCmd.Properties.ZONE_ID, Boolean.FALSE));
+import com.cloud.vm.SystemVm;
+import com.cloud.vm.VMInstanceVO;
- s_properties.add(new Pair(BaseCmd.Properties.KEYWORD, Boolean.FALSE));
- s_properties.add(new Pair(BaseCmd.Properties.PAGE, Boolean.FALSE));
- s_properties.add(new Pair(BaseCmd.Properties.PAGESIZE, Boolean.FALSE));
- }
+@Implementation(method="searchForSystemVms")
+public class ListSystemVMsCmd extends BaseListCmd {
+ public static final Logger s_logger = Logger.getLogger(ListSystemVMsCmd.class.getName());
+ private static final String s_name = "listsystemvmsresponse";
+
/////////////////////////////////////////////////////
//////////////// API parameters /////////////////////
/////////////////////////////////////////////////////
@@ -118,157 +105,65 @@ public class ListSystemVMsCmd extends BaseCmd {
return s_name;
}
- @Override
- public List> getProperties() {
- return s_properties;
- }
-
- @Override
- public List> execute(Map params) {
- Long id = (Long)params.get(BaseCmd.Properties.ID.getName());
- 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());
- String name = (String)params.get(BaseCmd.Properties.NAME.getName());
- String state = (String)params.get(BaseCmd.Properties.STATE.getName());
- String keyword = (String)params.get(BaseCmd.Properties.KEYWORD.getName());
- String type = (String)params.get(BaseCmd.Properties.SYSTEM_VM_TYPE.getName());
- Integer page = (Integer)params.get(BaseCmd.Properties.PAGE.getName());
- Integer pageSize = (Integer)params.get(BaseCmd.Properties.PAGESIZE.getName());
-
- Long startIndex = Long.valueOf(0);
- int pageSizeNum = 50;
- if (pageSize != null) {
- pageSizeNum = pageSize.intValue();
- }
-
- if (page != null) {
- int pageNum = page.intValue();
- if (pageNum > 0) {
- startIndex = Long.valueOf(pageSizeNum * (pageNum-1));
- }
- }
-
- Criteria c = new Criteria("id", Boolean.TRUE, startIndex, Long.valueOf(pageSizeNum));
- if (keyword != null) {
- c.addCriteria(Criteria.KEYWORD, keyword);
- } else {
- c.addCriteria(Criteria.ID, id);
- c.addCriteria(Criteria.DATACENTERID, zoneId);
- c.addCriteria(Criteria.PODID, podId);
- c.addCriteria(Criteria.HOSTID, hostId);
- c.addCriteria(Criteria.NAME, name);
- c.addCriteria(Criteria.STATE, state);
- }
-
- List proxies = null;
- List ssVms = null;
- Object[] proxyDataArray = null;
-
- if(type == null) //search for all vm types
- {
- proxies = getManagementServer().searchForConsoleProxy(c);
- ssVms = getManagementServer().searchForSecondaryStorageVm(c);
-
- proxyDataArray = new Object[proxies.size() + ssVms.size()];
- }
- else if((type != null) && (type.equalsIgnoreCase("secondarystoragevm"))) // search for ssvm
- {
- ssVms = getManagementServer().searchForSecondaryStorageVm(c);
-
- proxyDataArray = new Object[ssVms.size()];
- }
- else if((type != null) && (type.equalsIgnoreCase("consoleproxy"))) // search for consoleproxy
- {
- proxies = getManagementServer().searchForConsoleProxy(c);
-
- proxyDataArray = new Object[proxies.size()];
- }
-
- List> proxiesTags = new ArrayList>();
- int i = 0;
+ @Override @SuppressWarnings("unchecked")
+ public String getResponse() {
+ List extends VMInstanceVO> systemVMs = (List extends VMInstanceVO>)getResponseObject();
- if(proxies != null && proxies.size() > 0)
- {
- for (ConsoleProxyVO proxy : proxies) {
- List> proxyData = new ArrayList>();
- proxyData.add(new Pair(BaseCmd.Properties.SYSTEM_VM_TYPE.getName(), "consoleproxy"));
-
- proxyData.add(new Pair(BaseCmd.Properties.ID.getName(), Long.toString(proxy.getId())));
-
- AsyncJobVO asyncJob = getManagementServer().findInstancePendingAsyncJob("console_proxy", proxy.getId());
- if(asyncJob != null) {
- proxyData.add(new Pair(BaseCmd.Properties.JOB_ID.getName(), asyncJob.getId().toString()));
- proxyData.add(new Pair(BaseCmd.Properties.JOB_STATUS.getName(), String.valueOf(asyncJob.getStatus())));
- }
-
- proxyData.add(new Pair(BaseCmd.Properties.ZONE_ID.getName(), Long.valueOf(proxy.getDataCenterId()).toString()));
- proxyData.add(new Pair(BaseCmd.Properties.ZONE_NAME.getName(), getManagementServer().findDataCenterById(proxy.getDataCenterId()).getName()));
- proxyData.add(new Pair(BaseCmd.Properties.DNS1.getName(), proxy.getDns1()));
- proxyData.add(new Pair(BaseCmd.Properties.DNS2.getName(), proxy.getDns2()));
- proxyData.add(new Pair(BaseCmd.Properties.NETWORK_DOMAIN.getName(), proxy.getDomain()));
- proxyData.add(new Pair(BaseCmd.Properties.GATEWAY.getName(), proxy.getGateway()));
- proxyData.add(new Pair(BaseCmd.Properties.NAME.getName(), proxy.getName()));
- proxyData.add(new Pair(BaseCmd.Properties.POD_ID.getName(), Long.valueOf(proxy.getPodId()).toString()));
- if (proxy.getHostId() != null) {
- proxyData.add(new Pair(BaseCmd.Properties.HOST_ID.getName(), proxy.getHostId().toString()));
- proxyData.add(new Pair(BaseCmd.Properties.HOST_NAME.getName(), getManagementServer().getHostBy(proxy.getHostId()).getName()));
- }
- proxyData.add(new Pair(BaseCmd.Properties.PRIVATE_IP.getName(), proxy.getPrivateIpAddress()));
- proxyData.add(new Pair(BaseCmd.Properties.PRIVATE_MAC_ADDRESS.getName(), proxy.getPrivateMacAddress()));
- proxyData.add(new Pair(BaseCmd.Properties.PRIVATE_NETMASK.getName(), proxy.getPrivateNetmask()));
- proxyData.add(new Pair(BaseCmd.Properties.PUBLIC_IP.getName(), proxy.getPublicIpAddress()));
- proxyData.add(new Pair(BaseCmd.Properties.PUBLIC_MAC_ADDRESS.getName(), proxy.getPublicMacAddress()));
- proxyData.add(new Pair(BaseCmd.Properties.PUBLIC_NETMASK.getName(), proxy.getPublicNetmask()));
- proxyData.add(new Pair(BaseCmd.Properties.TEMPLATE_ID.getName(), Long.valueOf(proxy.getTemplateId()).toString()));
- proxyData.add(new Pair(BaseCmd.Properties.CREATED.getName(), getDateString(proxy.getCreated())));
- proxyData.add(new Pair(BaseCmd.Properties.ACTIVE_VIEWER_SESSIONS.getName(),
- String.valueOf(proxy.getActiveSession())));
-
- if (proxy.getState() != null) {
- proxyData.add(new Pair(BaseCmd.Properties.STATE.getName(), proxy.getState().toString()));
- }
-
- proxyDataArray[i++] = proxyData;
- }
+ List response = new ArrayList();
+ for (VMInstanceVO systemVM : systemVMs) {
+ SystemVmResponse vmResponse = new SystemVmResponse();
+ if (systemVM instanceof SystemVm) {
+ SystemVm vm = (SystemVm)systemVM;
+
+ vmResponse.setId(vm.getId());
+ vmResponse.setSystemVmType(vm.getType().toString().toLowerCase());
+
+ String instanceType = "console_proxy";
+ if (systemVM instanceof SecondaryStorageVmVO) {
+ instanceType = "sec_storage_vm"; // FIXME: this should be a constant so that the async jobs get updated with the correct instance type, they are using
+ // different instance types at the moment
+ }
+
+ AsyncJobVO asyncJob = getManagementServer().findInstancePendingAsyncJob(instanceType, vm.getId());
+ if (asyncJob != null) {
+ vmResponse.setJobId(asyncJob.getId());
+ vmResponse.setJobStatus(asyncJob.getStatus());
+ }
+
+ vmResponse.setZoneId(vm.getDataCenterId());
+ vmResponse.setZoneName(getManagementServer().findDataCenterById(vm.getDataCenterId()).getName());
+ vmResponse.setDns1(vm.getDns1());
+ vmResponse.setDns2(vm.getDns2());
+ vmResponse.setNetworkDomain(vm.getDomain());
+ vmResponse.setGateway(vm.getGateway());
+ vmResponse.setName(vm.getName());
+ vmResponse.setPodId(vm.getPodId());
+ if (vm.getHostId() != null) {
+ vmResponse.setHostId(vm.getHostId());
+ vmResponse.setHostName(getManagementServer().getHostBy(vm.getHostId()).getName());
+ }
+ vmResponse.setPrivateIp(vm.getPrivateIpAddress());
+ vmResponse.setPrivateMacAddress(vm.getPrivateMacAddress());
+ vmResponse.setPrivateNetmask(vm.getPrivateNetmask());
+ vmResponse.setPublicIp(vm.getPublicIpAddress());
+ vmResponse.setPublicMacAddress(vm.getPublicMacAddress());
+ vmResponse.setPublicNetmask(vm.getPublicNetmask());
+ vmResponse.setTemplateId(vm.getTemplateId());
+ vmResponse.setCreated(vm.getCreated());
+ if (vm.getState() != null) {
+ vmResponse.setState(vm.getState().toString());
+ }
+ }
+
+ // for console proxies, add the active sessions
+ if (systemVM instanceof ConsoleProxyVO) {
+ ConsoleProxyVO proxy = (ConsoleProxyVO)systemVM;
+ vmResponse.setActiveViewerSessions(proxy.getActiveSession());
+ }
+
+ response.add(vmResponse);
}
-
- if(ssVms != null && ssVms.size() > 0)
- {
- for (SecondaryStorageVmVO ssVm : ssVms) {
- List> ssvmData = new ArrayList>();
- ssvmData.add(new Pair(BaseCmd.Properties.SYSTEM_VM_TYPE.getName(), "secondarystoragevm"));
- ssvmData.add(new Pair(BaseCmd.Properties.ID.getName(), ssVm.getId()));
-
- ssvmData.add(new Pair(BaseCmd.Properties.ZONE_ID.getName(), Long.valueOf(ssVm.getDataCenterId()).toString()));
- ssvmData.add(new Pair(BaseCmd.Properties.ZONE_NAME.getName(), getManagementServer().findDataCenterById(ssVm.getDataCenterId()).getName()));
- ssvmData.add(new Pair(BaseCmd.Properties.DNS1.getName(), ssVm.getDns1()));
- ssvmData.add(new Pair(BaseCmd.Properties.DNS2.getName(), ssVm.getDns2()));
- ssvmData.add(new Pair(BaseCmd.Properties.NETWORK_DOMAIN.getName(), ssVm.getDomain()));
- ssvmData.add(new Pair(BaseCmd.Properties.GATEWAY.getName(), ssVm.getGateway()));
- ssvmData.add(new Pair(BaseCmd.Properties.NAME.getName(), ssVm.getName()));
- ssvmData.add(new Pair(BaseCmd.Properties.POD_ID.getName(), Long.valueOf(ssVm.getPodId()).toString()));
- if (ssVm.getHostId() != null) {
- ssvmData.add(new Pair(BaseCmd.Properties.HOST_ID.getName(), ssVm.getHostId().toString()));
- ssvmData.add(new Pair(BaseCmd.Properties.HOST_NAME.getName(), getManagementServer().getHostBy(ssVm.getHostId()).getName()));
- }
- ssvmData.add(new Pair(BaseCmd.Properties.PRIVATE_IP.getName(), ssVm.getPrivateIpAddress()));
- ssvmData.add(new Pair(BaseCmd.Properties.PRIVATE_MAC_ADDRESS.getName(), ssVm.getPrivateMacAddress()));
- ssvmData.add(new Pair(BaseCmd.Properties.PRIVATE_NETMASK.getName(), ssVm.getPrivateNetmask()));
- ssvmData.add(new Pair(BaseCmd.Properties.PUBLIC_IP.getName(), ssVm.getPublicIpAddress()));
- ssvmData.add(new Pair(BaseCmd.Properties.PUBLIC_MAC_ADDRESS.getName(), ssVm.getPublicMacAddress()));
- ssvmData.add(new Pair(BaseCmd.Properties.PUBLIC_NETMASK.getName(), ssVm.getPublicNetmask()));
- ssvmData.add(new Pair(BaseCmd.Properties.TEMPLATE_ID.getName(), Long.valueOf(ssVm.getTemplateId()).toString()));
- ssvmData.add(new Pair(BaseCmd.Properties.CREATED.getName(), getDateString(ssVm.getCreated())));
-
- if (ssVm.getState() != null) {
- ssvmData.add(new Pair(BaseCmd.Properties.STATE.getName(), ssVm.getState().toString()));
- }
-
- proxyDataArray[i++] = ssvmData;
- }
- }
- proxiesTags.add(new Pair("systemvm", proxyDataArray));
- return proxiesTags;
+
+ return SerializerHelper.toSerializedString(response);
}
}
diff --git a/server/src/com/cloud/api/commands/ListTemplateOrIsoPermissionsCmd.java b/server/src/com/cloud/api/commands/ListTemplateOrIsoPermissionsCmd.java
index 73185fd8d52..2e43e5db35d 100644
--- a/server/src/com/cloud/api/commands/ListTemplateOrIsoPermissionsCmd.java
+++ b/server/src/com/cloud/api/commands/ListTemplateOrIsoPermissionsCmd.java
@@ -1,31 +1,23 @@
package com.cloud.api.commands;
-import java.util.ArrayList;
import java.util.List;
-import java.util.Map;
import org.apache.log4j.Logger;
-import com.cloud.api.BaseCmd;
+import com.cloud.api.BaseListCmd;
+import com.cloud.api.Implementation;
import com.cloud.api.Parameter;
-import com.cloud.api.ServerApiException;
-import com.cloud.domain.DomainVO;
+import com.cloud.api.response.TemplatePermissionsResponse;
+import com.cloud.serializer.SerializerHelper;
import com.cloud.storage.VMTemplateVO;
import com.cloud.user.Account;
-import com.cloud.utils.Pair;
+import com.cloud.user.UserContext;
-public class ListTemplateOrIsoPermissionsCmd extends BaseCmd {
+@Implementation(method="listTemplatePermissions")
+public class ListTemplateOrIsoPermissionsCmd extends BaseListCmd {
public Logger s_logger = getLogger();
- protected static final List> s_properties = new ArrayList>();
protected String s_name = getResponseName();
- static {
- s_properties.add(new Pair(BaseCmd.Properties.ACCOUNT_OBJ, Boolean.FALSE));
- s_properties.add(new Pair(BaseCmd.Properties.ACCOUNT, Boolean.FALSE));
- s_properties.add(new Pair(BaseCmd.Properties.DOMAIN_ID, Boolean.FALSE));
- s_properties.add(new Pair(BaseCmd.Properties.ID, Boolean.TRUE));
- }
-
/////////////////////////////////////////////////////
//////////////// API parameters /////////////////////
/////////////////////////////////////////////////////
@@ -63,9 +55,32 @@ public class ListTemplateOrIsoPermissionsCmd extends BaseCmd {
public String getName() {
return s_name;
}
- @Override
- public List> getProperties() {
- return s_properties;
+
+ @Override @SuppressWarnings("unchecked")
+ public String getResponse() {
+ List accountNames = (List)getResponseObject();
+ Account account = (Account)UserContext.current().getAccountObject();
+ boolean isAdmin = ((account == null) || isAdmin(account.getType()));
+ Long templateOwnerDomain = null;
+ VMTemplateVO template = getManagementServer().findTemplateById(id);
+ if (isAdmin) {
+ // FIXME: we have just template id and need to get template owner from that
+ Account templateOwner = getManagementServer().findAccountById(template.getAccountId());
+ if (templateOwner != null) {
+ templateOwnerDomain = templateOwner.getDomainId();
+ }
+ }
+
+ TemplatePermissionsResponse response = new TemplatePermissionsResponse();
+ response.setId(template.getId());
+ response.setPublicTemplate(template.isPublicTemplate());
+ if (isAdmin && (templateOwnerDomain != null)) {
+ response.setDomainId(templateOwnerDomain);
+ }
+
+ response.setAccountNames(accountNames);
+
+ return SerializerHelper.toSerializedString(response);
}
protected boolean templateIsCorrectType(VMTemplateVO template) {
@@ -76,87 +91,11 @@ public class ListTemplateOrIsoPermissionsCmd extends BaseCmd {
return "updatetemplateorisopermissionsresponse";
}
- protected String getMediaType() {
+ public String getMediaType() {
return "templateOrIso";
}
protected Logger getLogger() {
return Logger.getLogger(UpdateTemplateOrIsoPermissionsCmd.class.getName());
}
-
- @Override
- public List> execute(Map params) {
- Long id = (Long)params.get(BaseCmd.Properties.ID.getName());
- Account account = (Account)params.get(BaseCmd.Properties.ACCOUNT_OBJ.getName());
- String acctName = (String)params.get(BaseCmd.Properties.ACCOUNT.getName());
- Long domainId = (Long)params.get(BaseCmd.Properties.DOMAIN_ID.getName());
- Long accountId = null;
-
- if ((account == null) || account.getType() == Account.ACCOUNT_TYPE_ADMIN) {
- // validate domainId before proceeding
- if (domainId != null) {
- if ((account != null) && !getManagementServer().isChildDomain(account.getDomainId(), domainId)) {
- throw new ServerApiException(BaseCmd.PARAM_ERROR, "Invalid domain id (" + domainId + ") given, unable to list " + getMediaType() + " permissions.");
- }
- if (acctName != null) {
- Account userAccount = getManagementServer().findAccountByName(acctName, domainId);
- if (userAccount != null) {
- accountId = userAccount.getId();
- } else {
- throw new ServerApiException(BaseCmd.ACCOUNT_ERROR, "Unable to find account " + acctName + " in domain " + domainId);
- }
- }
- }
- } else {
- accountId = account.getId();
- }
-
- VMTemplateVO template = getManagementServer().findTemplateById(id.longValue());
- if (template == null || !templateIsCorrectType(template)) {
- throw new ServerApiException(BaseCmd.PARAM_ERROR, "unable to find " + getMediaType() + " with id " + id);
- }
-
- if (accountId != null && !template.isPublicTemplate()) {
- if (account.getType() == Account.ACCOUNT_TYPE_NORMAL && template.getAccountId() != accountId) {
- throw new ServerApiException(BaseCmd.ACCOUNT_ERROR, "unable to list permissions for " + getMediaType() + " with id " + id);
- } else if (account.getType() == Account.ACCOUNT_TYPE_DOMAIN_ADMIN) {
- DomainVO accountDomain = getManagementServer().findDomainIdById(account.getDomainId());
- Account templateAccount = getManagementServer().findAccountById(template.getAccountId());
- DomainVO templateDomain = getManagementServer().findDomainIdById(templateAccount.getDomainId());
- if (!templateDomain.getPath().contains(accountDomain.getPath())) {
- throw new ServerApiException(BaseCmd.ACCOUNT_ERROR, "unable to list permissions for " + getMediaType() + " with id " + id);
- }
- }
- }
-
- if (id == Long.valueOf(1)) {
- throw new ServerApiException(BaseCmd.PARAM_ERROR, "unable to list permissions for " + getMediaType() + " with id " + id);
- }
-
- List accountNames = getManagementServer().listTemplatePermissions(id);
-
- boolean isAdmin = ((account == null) || isAdmin(account.getType()));
- Long templateOwnerDomain = null;
- if (isAdmin) {
- Account templateOwner = getManagementServer().findAccountById(template.getAccountId());
- if (templateOwner != null) {
- templateOwnerDomain = templateOwner.getDomainId();
- }
- }
-
- List> embeddedObject = new ArrayList>();
- List> returnValues = new ArrayList>();
- returnValues.add(new Pair(BaseCmd.Properties.ID.getName(), template.getId().toString()));
- returnValues.add(new Pair(BaseCmd.Properties.IS_PUBLIC.getName(), Boolean.valueOf(template.isPublicTemplate()).toString()));
- if (isAdmin && (templateOwnerDomain != null)) {
- returnValues.add(new Pair(BaseCmd.Properties.DOMAIN_ID.getName(), templateOwnerDomain.toString()));
- }
- if ((accountNames != null) && !accountNames.isEmpty()) {
- for (String accountName : accountNames) {
- returnValues.add(new Pair(BaseCmd.Properties.ACCOUNT.getName(), accountName));
- }
- }
- embeddedObject.add(new Pair(getMediaType() + "permission", new Object[] { returnValues } ));
- return embeddedObject;
- }
}
diff --git a/server/src/com/cloud/api/commands/ListTemplatePermissionsCmd.java b/server/src/com/cloud/api/commands/ListTemplatePermissionsCmd.java
index 8525fc31d88..f9cf0181989 100644
--- a/server/src/com/cloud/api/commands/ListTemplatePermissionsCmd.java
+++ b/server/src/com/cloud/api/commands/ListTemplatePermissionsCmd.java
@@ -28,7 +28,7 @@ public class ListTemplatePermissionsCmd extends ListTemplateOrIsoPermissionsCmd
return "listtemplatepermissionsresponse";
}
- protected String getMediaType() {
+ public String getMediaType() {
return "template";
}
diff --git a/server/src/com/cloud/api/commands/ListUsersCmd.java b/server/src/com/cloud/api/commands/ListUsersCmd.java
index d88964f2647..130cede6e27 100644
--- a/server/src/com/cloud/api/commands/ListUsersCmd.java
+++ b/server/src/com/cloud/api/commands/ListUsersCmd.java
@@ -20,38 +20,21 @@ package com.cloud.api.commands;
import java.util.ArrayList;
import java.util.List;
-import java.util.Map;
import org.apache.log4j.Logger;
-import com.cloud.api.BaseCmd;
+import com.cloud.api.BaseListCmd;
+import com.cloud.api.Implementation;
import com.cloud.api.Parameter;
-import com.cloud.api.ServerApiException;
-import com.cloud.domain.DomainVO;
-import com.cloud.server.Criteria;
-import com.cloud.user.Account;
+import com.cloud.api.response.UserResponse;
+import com.cloud.serializer.SerializerHelper;
import com.cloud.user.UserAccountVO;
-import com.cloud.utils.Pair;
-
-public class ListUsersCmd extends BaseCmd {
+
+@Implementation(method="searchForUsers")
+public class ListUsersCmd extends BaseListCmd {
public static final Logger s_logger = Logger.getLogger(ListUsersCmd.class.getName());
private static final String s_name = "listusersresponse";
- private static final List> s_properties = new ArrayList>();
-
- static {
- s_properties.add(new Pair(BaseCmd.Properties.ACCOUNT, Boolean.FALSE));
- s_properties.add(new Pair(BaseCmd.Properties.ACCOUNT_TYPE, Boolean.FALSE));
- s_properties.add(new Pair(BaseCmd.Properties.DOMAIN_ID, Boolean.FALSE));
- s_properties.add(new Pair(BaseCmd.Properties.ID, Boolean.FALSE));
- s_properties.add(new Pair(BaseCmd.Properties.STATE, Boolean.FALSE));
- s_properties.add(new Pair(BaseCmd.Properties.USERNAME, Boolean.FALSE));
-
- s_properties.add(new Pair(BaseCmd.Properties.ACCOUNT_OBJ, Boolean.FALSE));
- s_properties.add(new Pair(BaseCmd.Properties.KEYWORD, Boolean.FALSE));
- s_properties.add(new Pair(BaseCmd.Properties.PAGE, Boolean.FALSE));
- s_properties.add(new Pair(BaseCmd.Properties.PAGESIZE, Boolean.FALSE));
- }
/////////////////////////////////////////////////////
//////////////// API parameters /////////////////////
@@ -107,88 +90,36 @@ public class ListUsersCmd extends BaseCmd {
/////////////// API Implementation///////////////////
/////////////////////////////////////////////////////
+ @Override
public String getName() {
return s_name;
}
- public List> getProperties() {
- return s_properties;
- }
-
- @Override
- public List> execute(Map params) {
- Account account = (Account)params.get(BaseCmd.Properties.ACCOUNT_OBJ.getName());
- Long id = (Long)params.get(BaseCmd.Properties.ID.getName());
- String userName = (String)params.get(BaseCmd.Properties.USERNAME.getName());
- String accountName = (String)params.get(BaseCmd.Properties.ACCOUNT.getName());
- Long domainId = (Long)params.get(BaseCmd.Properties.DOMAIN_ID.getName());
- Long type = (Long)params.get(BaseCmd.Properties.ACCOUNT_TYPE.getName());
- String state = (String)params.get(BaseCmd.Properties.STATE.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());
-
- if (domainId != null) {
- if ((account != null) && !getManagementServer().isChildDomain(account.getDomainId(), domainId)) {
- throw new ServerApiException(BaseCmd.PARAM_ERROR, "Invalid domain id (" + domainId + ") given, unable to list users.");
- }
- } else {
- // default domainId to the admin's domain
- domainId = ((account == null) ? DomainVO.ROOT_DOMAIN : account.getDomainId());
- }
-
- Long startIndex = Long.valueOf(0);
- int pageSizeNum = 50;
- if (pageSize != null) {
- pageSizeNum = pageSize.intValue();
- }
- if (page != null) {
- int pageNum = page.intValue();
- if (pageNum > 0) {
- startIndex = Long.valueOf(pageSizeNum * (pageNum-1));
- }
- }
- Criteria c = new Criteria("id", Boolean.TRUE, startIndex, Long.valueOf(pageSizeNum));
- if (keyword != null) {
- c.addCriteria(Criteria.KEYWORD, keyword);
- }
- else {
- c.addCriteria(Criteria.ID, id);
- c.addCriteria(Criteria.ACCOUNTNAME, accountName);
- c.addCriteria(Criteria.DOMAINID, domainId);
- c.addCriteria(Criteria.USERNAME, userName);
- c.addCriteria(Criteria.TYPE, type);
- c.addCriteria(Criteria.STATE, state);
- }
- List users = getManagementServer().searchForUsers(c);
-
- List> userTags = new ArrayList>();
- Object[] uTag = new Object[users.size()];
- int i = 0;
- for (UserAccountVO user: users) {
- if ((user.getRemoved() == null)&&(user.getId() != 1)) {
- List> userData = new ArrayList>();
- userData.add(new Pair(BaseCmd.Properties.ID.getName(), Long.valueOf(user.getId()).toString()));
- userData.add(new Pair(BaseCmd.Properties.USERNAME.getName(), user.getUsername()));
- userData.add(new Pair(BaseCmd.Properties.FIRSTNAME.getName(), user.getFirstname()));
- userData.add(new Pair(BaseCmd.Properties.LASTNAME.getName(), user.getLastname()));
- userData.add(new Pair(BaseCmd.Properties.EMAIL.getName(), user.getEmail()));
- userData.add(new Pair(BaseCmd.Properties.CREATED.getName(), getDateString(user.getCreated())));
- userData.add(new Pair(BaseCmd.Properties.STATE.getName(), user.getState()));
- userData.add(new Pair(BaseCmd.Properties.ACCOUNT.getName(), getManagementServer().findAccountById(user.getAccountId()).getAccountName()));
- userData.add(new Pair(BaseCmd.Properties.ACCOUNT_TYPE.getName(), getManagementServer().findAccountById(user.getAccountId()).getType()));
- userData.add(new Pair(BaseCmd.Properties.DOMAIN_ID.getName(), user.getDomainId().toString()));
- userData.add(new Pair(BaseCmd.Properties.DOMAIN.getName(), getManagementServer().findDomainIdById(user.getDomainId()).getName()));
- userData.add(new Pair(BaseCmd.Properties.TIMEZONE.getName(),user.getTimezone()));
- if(user.getApiKey()!=null)
- userData.add(new Pair(BaseCmd.Properties.API_KEY.getName(), user.getApiKey()));
- if(user.getSecretKey()!=null)
- userData.add(new Pair(BaseCmd.Properties.SECRET_KEY.getName(), user.getSecretKey()));
- uTag[i++] = userData;
- }
- }
- Pair userTag = new Pair("user", uTag);
- userTags.add(userTag);
- return userTags;
-
+
+ @Override @SuppressWarnings("unchecked")
+ public String getResponse() {
+ List users = (List)getResponseObject();
+
+ List response = new ArrayList();
+ for (UserAccountVO user : users) {
+ UserResponse userResponse = new UserResponse();
+ userResponse.setId(user.getId());
+ userResponse.setUsername(user.getUsername());
+ userResponse.setFirstname(user.getFirstname());
+ userResponse.setLastname(user.getLastname());
+ userResponse.setEmail(user.getEmail());
+ userResponse.setCreated(user.getCreated());
+ userResponse.setState(user.getState());
+ userResponse.setAccountName(user.getAccountName());
+ userResponse.setAccountType(user.getType());
+ userResponse.setDomainId(user.getDomainId());
+ userResponse.setDomainName(getManagementServer().findDomainIdById(user.getDomainId()).getName());
+ userResponse.setTimezone(user.getTimezone());
+ userResponse.setApiKey(user.getApiKey());
+ userResponse.setSecretKey(user.getSecretKey());
+
+ response.add(userResponse);
+ }
+
+ return SerializerHelper.toSerializedString(response);
}
}
diff --git a/server/src/com/cloud/api/commands/ListVMsCmd.java b/server/src/com/cloud/api/commands/ListVMsCmd.java
index 2f902018c7d..cc956a79276 100644
--- a/server/src/com/cloud/api/commands/ListVMsCmd.java
+++ b/server/src/com/cloud/api/commands/ListVMsCmd.java
@@ -15,52 +15,32 @@
* along with this program. If not, see .
*
*/
-
package com.cloud.api.commands;
import java.text.DecimalFormat;
import java.util.ArrayList;
-import java.util.HashMap;
import java.util.List;
-import java.util.Map;
import org.apache.log4j.Logger;
-import com.cloud.api.BaseCmd;
+import com.cloud.api.BaseListCmd;
+import com.cloud.api.Implementation;
import com.cloud.api.Parameter;
-import com.cloud.api.ServerApiException;
+import com.cloud.api.response.UserVmResponse;
import com.cloud.async.AsyncJobVO;
-import com.cloud.domain.DomainVO;
-import com.cloud.host.HostVO;
-import com.cloud.server.Criteria;
+import com.cloud.serializer.SerializerHelper;
import com.cloud.service.ServiceOfferingVO;
import com.cloud.storage.VMTemplateVO;
import com.cloud.user.Account;
-import com.cloud.uservm.UserVm;
-import com.cloud.utils.Pair;
+import com.cloud.user.UserContext;
+import com.cloud.vm.UserVmVO;
import com.cloud.vm.VmStats;
-public class ListVMsCmd extends BaseCmd {
+@Implementation(method="searchForUserVMs")
+public class ListVMsCmd extends BaseListCmd {
public static final Logger s_logger = Logger.getLogger(ListVMsCmd.class.getName());
private static final String s_name = "listvirtualmachinesresponse";
- private static final List> s_properties = new ArrayList>();
-
- static {
- s_properties.add(new Pair(BaseCmd.Properties.ACCOUNT, Boolean.FALSE));
- s_properties.add(new Pair(BaseCmd.Properties.DOMAIN_ID, Boolean.FALSE));
- s_properties.add(new Pair(BaseCmd.Properties.HOST_ID, Boolean.FALSE));
- s_properties.add(new Pair(BaseCmd.Properties.ID, Boolean.FALSE));
- s_properties.add(new Pair(BaseCmd.Properties.NAME, Boolean.FALSE));
- s_properties.add(new Pair(BaseCmd.Properties.POD_ID, Boolean.FALSE));
- s_properties.add(new Pair(BaseCmd.Properties.STATE, Boolean.FALSE));
- s_properties.add(new Pair(BaseCmd.Properties.ZONE_ID, Boolean.FALSE));
-
- s_properties.add(new Pair(BaseCmd.Properties.KEYWORD, Boolean.FALSE));
- s_properties.add(new Pair(BaseCmd.Properties.ACCOUNT_OBJ, Boolean.FALSE));
- s_properties.add(new Pair(BaseCmd.Properties.PAGE, Boolean.FALSE));
- s_properties.add(new Pair(BaseCmd.Properties.PAGESIZE, Boolean.FALSE));
- }
/////////////////////////////////////////////////////
//////////////// API parameters /////////////////////
@@ -134,210 +114,111 @@ public class ListVMsCmd extends BaseCmd {
public String getName() {
return s_name;
}
- @Override
- public List> getProperties() {
- return s_properties;
- }
- @Override
- public List> execute(Map params) {
- Long id = (Long)params.get(BaseCmd.Properties.ID.getName());
- Account account = (Account)params.get(BaseCmd.Properties.ACCOUNT_OBJ.getName());
- String accountName = (String)params.get(BaseCmd.Properties.ACCOUNT.getName());
- Long domainId = (Long)params.get(BaseCmd.Properties.DOMAIN_ID.getName());
- String name = (String) params.get(BaseCmd.Properties.NAME.getName());
- String state = (String) params.get(BaseCmd.Properties.STATE.getName());
- 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());
- 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());
- Long accountId = null;
- Boolean isAdmin = false;
+ @Override @SuppressWarnings("unchecked")
+ public String getResponse() {
+ List userVms = (List)getResponseObject();
- if ((account == null) || isAdmin(account.getType())) {
- isAdmin = true;
- if (domainId != null) {
- if ((account != null) && !getManagementServer().isChildDomain(account.getDomainId(), domainId)) {
- throw new ServerApiException(BaseCmd.PARAM_ERROR, "Invalid domain id (" + domainId + ") given, unable to list virtual machines.");
- }
-
- if (accountName != null) {
- account = getManagementServer().findActiveAccount(accountName, domainId);
- if (account == null) {
- throw new ServerApiException(BaseCmd.ACCOUNT_ERROR, "Unable to find account " + accountName + " in domain " + domainId);
- }
- accountId = account.getId();
- }
- } else {
- domainId = ((account == null) ? DomainVO.ROOT_DOMAIN : account.getDomainId());
- }
- } else {
- accountName = account.getAccountName();
- accountId = account.getId();
- domainId = account.getDomainId();
- }
-
- Long[] accountIds = null;
- if (accountId != null) {
- accountIds = new Long[1];
- accountIds[0] = accountId;
- }
-
- Long startIndex = Long.valueOf(0);
- int pageSizeNum = 50;
- if (pageSize != null) {
- pageSizeNum = pageSize.intValue();
- }
- if (page != null) {
- int pageNum = page.intValue();
- if (pageNum > 0) {
- startIndex = Long.valueOf(pageSizeNum * (pageNum-1));
- }
- }
- Criteria c = new Criteria("id", Boolean.TRUE, startIndex, Long.valueOf(pageSizeNum));
-
- if (keyword != null) {
- c.addCriteria(Criteria.KEYWORD, keyword);
- } else {
- c.addCriteria(Criteria.ID, id);
- c.addCriteria(Criteria.NAME, name);
- c.addCriteria(Criteria.STATE, state);
-
- if(zoneId != null)
- c.addCriteria(Criteria.DATACENTERID, zoneId);
-
- // ignore these search requests if it's not an admin
- if (isAdmin == true) {
- c.addCriteria(Criteria.DOMAINID, domainId);
-
- if(podId != null)
- c.addCriteria(Criteria.PODID, podId);
- c.addCriteria(Criteria.HOSTID, hostId);
- }
- }
-
- c.addCriteria(Criteria.ACCOUNTID, accountIds);
- c.addCriteria(Criteria.ISADMIN, isAdmin);
-
- List extends UserVm> virtualMachines = getManagementServer().searchForUserVMs(c);
-
- if (virtualMachines == null) {
- 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;
-
- HashMap hostMap = new HashMap();
- List hostList = getManagementServer().listAllActiveHosts();
- for (HostVO hostVO : hostList) {
- hostMap.put(hostVO.getId(), hostVO);
- }
-
- for (UserVm vmInstance : virtualMachines) {
- List> vmData = new ArrayList>();
- AsyncJobVO asyncJob = getManagementServer().findInstancePendingAsyncJob("vm_instance", vmInstance.getId());
- if(asyncJob != null) {
- vmData.add(new Pair(BaseCmd.Properties.JOB_ID.getName(), asyncJob.getId().toString()));
- vmData.add(new Pair(BaseCmd.Properties.JOB_STATUS.getName(), String.valueOf(asyncJob.getStatus())));
+ List response = new ArrayList();
+ for (UserVmVO userVm : userVms) {
+ UserVmResponse userVmResponse = new UserVmResponse();
+ userVmResponse.setId(userVm.getId());
+ AsyncJobVO asyncJob = getManagementServer().findInstancePendingAsyncJob("vm_instance", userVm.getId());
+ if (asyncJob != null) {
+ userVmResponse.setJobId(asyncJob.getId());
+ userVmResponse.setJobStatus(asyncJob.getStatus());
}
- vmData.add(new Pair(BaseCmd.Properties.ID.getName(), Long.toString(vmInstance.getId())));
- vmData.add(new Pair(BaseCmd.Properties.NAME.getName(), vmInstance.getName()));
- vmData.add(new Pair(BaseCmd.Properties.CREATED.getName(), getDateString(vmInstance.getCreated())));
- vmData.add(new Pair(BaseCmd.Properties.IP_ADDRESS.getName(), vmInstance.getPrivateIpAddress()));
- if (vmInstance.getState() != null) {
- vmData.add(new Pair(BaseCmd.Properties.STATE.getName(), vmInstance.getState().toString()));
+ userVmResponse.setName(userVm.getName());
+ userVmResponse.setCreated(userVm.getCreated());
+ userVmResponse.setPrivateIp(userVm.getPrivateIpAddress());
+ if (userVm.getState() != null) {
+ userVmResponse.setState(userVm.getState().toString());
}
- Account acct = getManagementServer().findAccountById(Long.valueOf(vmInstance.getAccountId()));
+ Account acct = getManagementServer().findAccountById(Long.valueOf(userVm.getAccountId()));
if (acct != null) {
- vmData.add(new Pair(BaseCmd.Properties.ACCOUNT.getName(), acct.getAccountName()));
- vmData.add(new Pair(BaseCmd.Properties.DOMAIN_ID.getName(), acct.getDomainId().toString()));
- vmData.add(new Pair(BaseCmd.Properties.DOMAIN.getName(), getManagementServer().findDomainIdById(acct.getDomainId()).getName()));
- }
- vmData.add(new Pair(BaseCmd.Properties.HA_ENABLE.getName(), Boolean.valueOf(vmInstance.isHaEnabled()).toString()));
-
- if (vmInstance.getDisplayName() != null) {
- vmData.add(new Pair(BaseCmd.Properties.DISPLAY_NAME.getName(), vmInstance.getDisplayName()));
- }
- else {
- vmData.add(new Pair(BaseCmd.Properties.DISPLAY_NAME.getName(), vmInstance.getName()));
+ userVmResponse.setAccountName(acct.getAccountName());
+ userVmResponse.setDomainId(acct.getDomainId());
+ userVmResponse.setDomainName(getManagementServer().findDomainIdById(acct.getDomainId()).getName());
}
- if (vmInstance.getGroup() != null) {
- vmData.add(new Pair(BaseCmd.Properties.GROUP.getName(), vmInstance.getGroup()));
- }
+ userVmResponse.setHaEnable(userVm.isHaEnabled());
+
+ if (userVm.getDisplayName() != null) {
+ userVmResponse.setDisplayName(userVm.getDisplayName());
+ } else {
+ userVmResponse.setDisplayName(userVm.getName());
+ }
+
+ userVmResponse.setGroup(userVm.getGroup());
// Data Center Info
- vmData.add(new Pair(BaseCmd.Properties.ZONE_ID.getName(), Long.valueOf(vmInstance.getDataCenterId()).toString()));
- vmData.add(new Pair(BaseCmd.Properties.ZONE_NAME.getName(), getManagementServer().findDataCenterById(vmInstance.getDataCenterId()).getName()));
+ userVmResponse.setZoneId(userVm.getDataCenterId());
+ userVmResponse.setZoneName(getManagementServer().findDataCenterById(userVm.getDataCenterId()).getName());
+
+ Account account = (Account)UserContext.current().getAccountObject();
//if user is an admin, display host id
- if ( (isAdmin == true) && (vmInstance.getHostId() != null)) {
- vmData.add(new Pair(BaseCmd.Properties.HOST_ID.getName(), vmInstance.getHostId().toString()));
- vmData.add(new Pair(BaseCmd.Properties.HOST_NAME.getName(), getManagementServer().getHostBy(vmInstance.getHostId()).getName()));
+ if (((account == null) || isAdmin(account.getType())) && (userVm.getHostId() != null)) {
+ userVmResponse.setHostId(userVm.getHostId());
+ userVmResponse.setHostName(getManagementServer().getHostBy(userVm.getHostId()).getName());
}
// Template Info
- VMTemplateVO template = getManagementServer().findTemplateById(vmInstance.getTemplateId());
+ VMTemplateVO template = getManagementServer().findTemplateById(userVm.getTemplateId());
if (template != null) {
- vmData.add(new Pair(BaseCmd.Properties.TEMPLATE_ID.getName(), Long.valueOf(vmInstance.getTemplateId()).toString()));
- vmData.add(new Pair(BaseCmd.Properties.TEMPLATE_NAME.getName(), template.getName()));
- vmData.add(new Pair(BaseCmd.Properties.TEMPLATE_DISPLAY_TEXT.getName(), template.getDisplayText()));
- vmData.add(new Pair(BaseCmd.Properties.PASSWORD_ENABLED.getName(), template.getEnablePassword()));
+ userVmResponse.setTemplateId(userVm.getTemplateId());
+ userVmResponse.setTemplateName(template.getName());
+ userVmResponse.setTemplateDisplayText(template.getDisplayText());
+ userVmResponse.setPasswordEnabled(template.getEnablePassword());
} else {
- vmData.add(new Pair(BaseCmd.Properties.TEMPLATE_ID.getName(), "-1"));
- vmData.add(new Pair(BaseCmd.Properties.TEMPLATE_NAME.getName(), "ISO Boot"));
- vmData.add(new Pair(BaseCmd.Properties.TEMPLATE_DISPLAY_TEXT.getName(), "ISO Boot"));
- vmData.add(new Pair(BaseCmd.Properties.PASSWORD_ENABLED.getName(), false));
+ userVmResponse.setTemplateId(-1L);
+ userVmResponse.setTemplateName("ISO Boot");
+ userVmResponse.setTemplateDisplayText("ISO Boot");
+ userVmResponse.setPasswordEnabled(false);
}
// ISO Info
- if (vmInstance.getIsoId() != null) {
- VMTemplateVO iso = getManagementServer().findTemplateById(vmInstance.getIsoId().longValue());
+ if (userVm.getIsoId() != null) {
+ VMTemplateVO iso = getManagementServer().findTemplateById(userVm.getIsoId().longValue());
if (iso != null) {
- vmData.add(new Pair(BaseCmd.Properties.ISO_ID.getName(), Long.valueOf(vmInstance.getIsoId()).toString()));
- vmData.add(new Pair(BaseCmd.Properties.ISO_NAME.getName(), iso.getName()));
+ userVmResponse.setIsoId(userVm.getIsoId());
+ userVmResponse.setIsoName(iso.getName());
}
}
// Service Offering Info
ServiceOfferingVO offering = getManagementServer().findServiceOfferingById(vmInstance.getServiceOfferingId());
- 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.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()));
+ userVmResponse.setServiceOfferingId(userVm.getServiceOfferingId());
+ userVmResponse.setServiceOfferingName(offering.getName());
+ userVmResponse.setCpuNumber(offering.getCpu());
+ userVmResponse.setCpuSpeed(offering.getSpeed());
+ userVmResponse.setMemory(offering.getRamSize());
//stats calculation
DecimalFormat decimalFormat = new DecimalFormat("#.##");
String cpuUsed = null;
- VmStats vmStats = getManagementServer().getVmStatistics(vmInstance.getId());
- if (vmStats != null)
- {
+ VmStats vmStats = getManagementServer().getVmStatistics(userVm.getId());
+ if (vmStats != null) {
float cpuUtil = (float) vmStats.getCPUUtilization();
cpuUsed = decimalFormat.format(cpuUtil) + "%";
- vmData.add(new Pair(BaseCmd.Properties.CPU_USED.getName(), cpuUsed));
-
+ userVmResponse.setCpuUsed(cpuUsed);
+
long networkKbRead = (long)vmStats.getNetworkReadKBs();
- vmData.add(new Pair(BaseCmd.Properties.NETWORK_KB_READ.getName(), networkKbRead));
+ userVmResponse.setNetworkKbsRead(networkKbRead);
long networkKbWrite = (long)vmStats.getNetworkWriteKBs();
- vmData.add(new Pair(BaseCmd.Properties.NETWORK_KB_WRITE.getName(), networkKbWrite));
+ userVmResponse.setNetworkKbsWrite(networkKbWrite);
}
- vmData.add(new Pair(BaseCmd.Properties.OS_TYPE_ID.getName(),vmInstance.getGuestOSId()));
+ userVmResponse.setOsTypeId(userVm.getGuestOSId());
//network groups
- vmData.add(new Pair(BaseCmd.Properties.NETWORK_GROUP_LIST.getName(), getManagementServer().getNetworkGroupsNamesForVm(vmInstance.getId())));
-
- vmTag[i++] = vmData;
+ userVmResponse.setNetworkGroupList(getManagementServer().getNetworkGroupsNamesForVm(userVm.getId()));
+
+ response.add(userVmResponse);
}
- List> returnTags = new ArrayList>();
- Pair vmTags = new Pair("virtualmachine", vmTag);
- returnTags.add(vmTags);
- return returnTags;
+
+ return SerializerHelper.toSerializedString(response);
}
}
diff --git a/server/src/com/cloud/api/commands/ListVlanIpRangesCmd.java b/server/src/com/cloud/api/commands/ListVlanIpRangesCmd.java
index 7a43118b74d..b7ff70da96d 100644
--- a/server/src/com/cloud/api/commands/ListVlanIpRangesCmd.java
+++ b/server/src/com/cloud/api/commands/ListVlanIpRangesCmd.java
@@ -15,43 +15,28 @@
* along with this program. If not, see .
*
*/
-
package com.cloud.api.commands;
import java.util.ArrayList;
import java.util.List;
-import java.util.Map;
import org.apache.log4j.Logger;
-import com.cloud.api.BaseCmd;
+import com.cloud.api.BaseListCmd;
+import com.cloud.api.Implementation;
import com.cloud.api.Parameter;
-import com.cloud.api.ServerApiException;
+import com.cloud.api.response.VlanIpRangeResponse;
import com.cloud.dc.HostPodVO;
import com.cloud.dc.Vlan.VlanType;
import com.cloud.dc.VlanVO;
-import com.cloud.server.Criteria;
+import com.cloud.serializer.SerializerHelper;
import com.cloud.user.Account;
-import com.cloud.utils.Pair;
-
-public class ListVlanIpRangesCmd extends BaseCmd {
+
+@Implementation(method="searchForVlans")
+public class ListVlanIpRangesCmd extends BaseListCmd {
public static final Logger s_logger = Logger.getLogger(ListVlanIpRangesCmd.class.getName());
private static final String s_name = "listvlaniprangesresponse";
- private static final List> s_properties = new ArrayList>();
-
- static {
- s_properties.add(new Pair(BaseCmd.Properties.ACCOUNT, Boolean.FALSE));
- s_properties.add(new Pair(BaseCmd.Properties.DOMAIN_ID, Boolean.FALSE));
- s_properties.add(new Pair(BaseCmd.Properties.ID, Boolean.FALSE));
- s_properties.add(new Pair(BaseCmd.Properties.POD_ID, Boolean.FALSE));
- s_properties.add(new Pair(BaseCmd.Properties.VLAN, Boolean.FALSE));
- s_properties.add(new Pair(BaseCmd.Properties.ZONE_ID, Boolean.FALSE));
-
- s_properties.add(new Pair(BaseCmd.Properties.KEYWORD, Boolean.FALSE));
- s_properties.add(new Pair(BaseCmd.Properties.PAGE, Boolean.FALSE));
- s_properties.add(new Pair(BaseCmd.Properties.PAGESIZE, Boolean.FALSE));
- }
/////////////////////////////////////////////////////
//////////////// API parameters /////////////////////
@@ -107,104 +92,46 @@ public class ListVlanIpRangesCmd extends BaseCmd {
/////////////// API Implementation///////////////////
/////////////////////////////////////////////////////
+ @Override
public String getName() {
return s_name;
- }
- public List> getProperties() {
- return s_properties;
- }
-
- @Override
- public List> execute(Map params) {
- Long id = (Long) params.get(BaseCmd.Properties.ID.getName());
- String vlanId = (String) params.get(BaseCmd.Properties.VLAN.getName());
- Long zoneId = (Long) params.get(BaseCmd.Properties.ZONE_ID.getName());
- String accountName = (String) params.get(BaseCmd.Properties.ACCOUNT.getName());
- Long domainId = (Long) params.get(BaseCmd.Properties.DOMAIN_ID.getName());
- Long podId = (Long) params.get(BaseCmd.Properties.POD_ID.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());
-
-
- Long startIndex = Long.valueOf(0);
- int pageSizeNum = 50;
- if (pageSize != null) {
- pageSizeNum = pageSize.intValue();
- }
-
- if (page != null) {
- int pageNum = page.intValue();
- if (pageNum > 0) {
- startIndex = Long.valueOf(pageSizeNum * (pageNum-1));
- }
- }
-
- // If an account name and domain ID are specified, look up the account
- Long accountId = null;
- if (accountName != null && domainId != null) {
- Account account = getManagementServer().findAccountByName(accountName, domainId);
- if (account == null) {
- throw new ServerApiException(BaseCmd.PARAM_ERROR, "Please specify a valid account.");
- } else {
- accountId = account.getId();
- }
- }
-
- Criteria c = new Criteria("id", Boolean.TRUE, startIndex, Long.valueOf(pageSizeNum));
-
- if (keyword != null) {
- c.addCriteria(Criteria.KEYWORD, keyword);
- } else {
- c.addCriteria(Criteria.ID, id);
- c.addCriteria(Criteria.VLAN, vlanId);
- c.addCriteria(Criteria.DATACENTERID, zoneId);
- c.addCriteria(Criteria.ACCOUNTID, accountId);
- c.addCriteria(Criteria.PODID, podId);
- }
-
- List extends VlanVO> vlans = getManagementServer().searchForVlans(c);
-
- if (vlans == null) {
- throw new ServerApiException(BaseCmd.INTERNAL_ERROR, "unable to find vlans");
- }
-
- Object[] vlanTag = new Object[vlans.size()];
- int i = 0;
-
- for (VlanVO vlan : vlans) {
- accountId = getManagementServer().getAccountIdForVlan(vlan.getId());
- podId = getManagementServer().getPodIdForVlan(vlan.getId());
-
- List> vlanData = new ArrayList>();
- vlanData.add(new Pair