diff --git a/core/src/com/cloud/storage/StorageManager.java b/core/src/com/cloud/storage/StorageManager.java index 7b7ed9c1aef..4bc6851a181 100644 --- a/core/src/com/cloud/storage/StorageManager.java +++ b/core/src/com/cloud/storage/StorageManager.java @@ -24,6 +24,7 @@ import java.util.Map; import com.cloud.agent.api.Answer; import com.cloud.agent.api.Command; +import com.cloud.api.commands.UpdateStoragePoolCmd; import com.cloud.dc.DataCenterVO; import com.cloud.dc.HostPodVO; import com.cloud.exception.InternalErrorException; @@ -260,7 +261,7 @@ public interface StorageManager extends Manager { * @param poolId ID of the storage pool to be updated * @param tags Tags that will be added to the storage pool */ - StoragePoolVO updateStoragePool(long poolId, String tags) throws IllegalArgumentException; +// StoragePoolVO updateStoragePool(long poolId, String tags) throws IllegalArgumentException; /** * Find all of the storage pools needed for this vm. @@ -288,4 +289,6 @@ public interface StorageManager extends Manager { * @return */ public boolean cancelPrimaryStorageForMaintenance(long primaryStorageId, long userId); + + public StoragePoolVO updateStoragePool(UpdateStoragePoolCmd cmd) throws IllegalArgumentException; } diff --git a/server/src/com/cloud/api/commands/UpdateStoragePoolCmd.java b/server/src/com/cloud/api/commands/UpdateStoragePoolCmd.java index 9a5f49fcf98..11d5fad4853 100644 --- a/server/src/com/cloud/api/commands/UpdateStoragePoolCmd.java +++ b/server/src/com/cloud/api/commands/UpdateStoragePoolCmd.java @@ -18,30 +18,18 @@ 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.Implementation; import com.cloud.api.Parameter; -import com.cloud.api.ServerApiException; -import com.cloud.dc.ClusterVO; -import com.cloud.storage.StoragePoolVO; -import com.cloud.storage.StorageStats; -import com.cloud.utils.Pair; +import com.cloud.api.BaseCmd.Manager; +@Implementation(method="updateTemplatePermissions", manager=Manager.StorageManager) public class UpdateStoragePoolCmd extends BaseCmd { public static final Logger s_logger = Logger.getLogger(UpdateStoragePoolCmd.class.getName()); private static final String s_name = "updatestoragepoolresponse"; - private static final List> s_properties = new ArrayList>(); - - static { - s_properties.add(new Pair(BaseCmd.Properties.ID, Boolean.TRUE)); - s_properties.add(new Pair(BaseCmd.Properties.TAGS, Boolean.FALSE)); - } ///////////////////////////////////////////////////// //////////////// API parameters ///////////////////// @@ -73,68 +61,70 @@ public class UpdateStoragePoolCmd extends BaseCmd { public String getName() { return s_name; } - @Override - public List> getProperties() { - return s_properties; - } - @Override - public List> execute(Map params) { - if (s_logger.isDebugEnabled()) { - s_logger.debug("UpdateStoragePoolCmd Params @ " + params.toString()); - } - - Long poolId = (Long) params.get(BaseCmd.Properties.ID.getName()); - String tags = (String) params.get(BaseCmd.Properties.TAGS.getName()); - - StoragePoolVO storagePool = null; - try { - storagePool = getManagementServer().updateStoragePool(poolId, tags); - } catch (IllegalArgumentException e) { - throw new ServerApiException(BaseCmd.PARAM_ERROR, e.getMessage()); - } - - s_logger.debug("Successfully updated storagePool " + storagePool.toString() ); - - List> returnValues = new ArrayList>(); - returnValues.add(new Pair(BaseCmd.Properties.ID.getName(), Long.toString(storagePool.getId()))); - returnValues.add(new Pair(BaseCmd.Properties.ZONE_ID.getName(), storagePool.getDataCenterId())); - returnValues.add(new Pair(BaseCmd.Properties.ZONE_NAME.getName(), getManagementServer().getDataCenterBy(storagePool.getDataCenterId()).getName())); - if (storagePool.getPodId() != null) { - returnValues.add(new Pair(BaseCmd.Properties.POD_ID.getName(), storagePool.getPodId())); - returnValues.add(new Pair(BaseCmd.Properties.POD_NAME.getName(), getManagementServer().getPodBy(storagePool.getPodId()).getName())); - } - returnValues.add(new Pair(BaseCmd.Properties.NAME.getName(), storagePool.getName())); - returnValues.add(new Pair(BaseCmd.Properties.IP_ADDRESS.getName(), storagePool.getHostAddress())); - returnValues.add(new Pair(BaseCmd.Properties.PATH.getName(), storagePool.getPath())); - returnValues.add(new Pair(BaseCmd.Properties.CREATED.getName(), getDateString(storagePool.getCreated()))); - - if (storagePool.getPoolType() != null) { - returnValues.add(new Pair(BaseCmd.Properties.TYPE.getName(), storagePool.getPoolType().toString())); - } - - if (storagePool.getClusterId() != null) { - ClusterVO cluster = getManagementServer().findClusterById(storagePool.getClusterId()); - returnValues.add(new Pair(BaseCmd.Properties.CLUSTER_ID.getName(), cluster.getId())); - returnValues.add(new Pair(BaseCmd.Properties.CLUSTER_NAME.getName(), cluster.getName())); - } - - StorageStats stats = getManagementServer().getStoragePoolStatistics(storagePool.getId()); - long capacity = storagePool.getCapacityBytes(); - long available = storagePool.getAvailableBytes() ; - long used = capacity - available; +// @Override +// public List> execute(Map params) { +// if (s_logger.isDebugEnabled()) { +// s_logger.debug("UpdateStoragePoolCmd Params @ " + params.toString()); +// } +// +// Long poolId = (Long) params.get(BaseCmd.Properties.ID.getName()); +// String tags = (String) params.get(BaseCmd.Properties.TAGS.getName()); +// +// StoragePoolVO storagePool = null; +// try { +// storagePool = getManagementServer().updateStoragePool(poolId, tags); +// } catch (IllegalArgumentException e) { +// throw new ServerApiException(BaseCmd.PARAM_ERROR, e.getMessage()); +// } +// +// s_logger.debug("Successfully updated storagePool " + storagePool.toString() ); +// +// List> returnValues = new ArrayList>(); +// returnValues.add(new Pair(BaseCmd.Properties.ID.getName(), Long.toString(storagePool.getId()))); +// returnValues.add(new Pair(BaseCmd.Properties.ZONE_ID.getName(), storagePool.getDataCenterId())); +// returnValues.add(new Pair(BaseCmd.Properties.ZONE_NAME.getName(), getManagementServer().getDataCenterBy(storagePool.getDataCenterId()).getName())); +// if (storagePool.getPodId() != null) { +// returnValues.add(new Pair(BaseCmd.Properties.POD_ID.getName(), storagePool.getPodId())); +// returnValues.add(new Pair(BaseCmd.Properties.POD_NAME.getName(), getManagementServer().getPodBy(storagePool.getPodId()).getName())); +// } +// returnValues.add(new Pair(BaseCmd.Properties.NAME.getName(), storagePool.getName())); +// returnValues.add(new Pair(BaseCmd.Properties.IP_ADDRESS.getName(), storagePool.getHostAddress())); +// returnValues.add(new Pair(BaseCmd.Properties.PATH.getName(), storagePool.getPath())); +// returnValues.add(new Pair(BaseCmd.Properties.CREATED.getName(), getDateString(storagePool.getCreated()))); +// +// if (storagePool.getPoolType() != null) { +// returnValues.add(new Pair(BaseCmd.Properties.TYPE.getName(), storagePool.getPoolType().toString())); +// } +// +// if (storagePool.getClusterId() != null) { +// ClusterVO cluster = getManagementServer().findClusterById(storagePool.getClusterId()); +// returnValues.add(new Pair(BaseCmd.Properties.CLUSTER_ID.getName(), cluster.getId())); +// returnValues.add(new Pair(BaseCmd.Properties.CLUSTER_NAME.getName(), cluster.getName())); +// } +// +// StorageStats stats = getManagementServer().getStoragePoolStatistics(storagePool.getId()); +// long capacity = storagePool.getCapacityBytes(); +// long available = storagePool.getAvailableBytes() ; +// long used = capacity - available; +// +// if (stats != null) { +// used = stats.getByteUsed(); +// available = capacity - used; +// } +// s_logger.debug("Successfully recieved the storagePool statistics. TotalDiskSize - " +capacity+ " AllocatedDiskSize - " +used ); +// returnValues.add(new Pair(BaseCmd.Properties.DISK_SIZE_TOTAL.getName(), Long.valueOf(storagePool.getCapacityBytes()).toString())); +// returnValues.add(new Pair(BaseCmd.Properties.DISK_SIZE_ALLOCATED.getName(), Long.valueOf(used).toString())); +// returnValues.add(new Pair(BaseCmd.Properties.TAGS.getName(), getManagementServer().getStoragePoolTags(storagePool.getId()))); +// +// List> embeddedObject = new ArrayList>(); +// embeddedObject.add(new Pair("storagepool", new Object[] { returnValues } )); +// return embeddedObject; +// } - if (stats != null) { - used = stats.getByteUsed(); - available = capacity - used; - } - s_logger.debug("Successfully recieved the storagePool statistics. TotalDiskSize - " +capacity+ " AllocatedDiskSize - " +used ); - returnValues.add(new Pair(BaseCmd.Properties.DISK_SIZE_TOTAL.getName(), Long.valueOf(storagePool.getCapacityBytes()).toString())); - returnValues.add(new Pair(BaseCmd.Properties.DISK_SIZE_ALLOCATED.getName(), Long.valueOf(used).toString())); - returnValues.add(new Pair(BaseCmd.Properties.TAGS.getName(), getManagementServer().getStoragePoolTags(storagePool.getId()))); - - List> embeddedObject = new ArrayList>(); - embeddedObject.add(new Pair("storagepool", new Object[] { returnValues } )); - return embeddedObject; - } + @Override + public String getResponse() { + // TODO Auto-generated method stub + return null; + } } diff --git a/server/src/com/cloud/server/ManagementServer.java b/server/src/com/cloud/server/ManagementServer.java index 270411a74a5..a0a8997c081 100644 --- a/server/src/com/cloud/server/ManagementServer.java +++ b/server/src/com/cloud/server/ManagementServer.java @@ -753,7 +753,7 @@ public interface ManagementServer { * @param poolId ID of the storage pool to be updated * @param tags Tags that will be added to the storage pool */ - StoragePoolVO updateStoragePool(long poolId, String tags); +// StoragePoolVO updateStoragePool(long poolId, String tags); /** * Starts a Domain Router diff --git a/server/src/com/cloud/server/ManagementServerImpl.java b/server/src/com/cloud/server/ManagementServerImpl.java index 3df1df70803..fe7219b5a5f 100755 --- a/server/src/com/cloud/server/ManagementServerImpl.java +++ b/server/src/com/cloud/server/ManagementServerImpl.java @@ -2770,10 +2770,10 @@ public class ManagementServerImpl implements ManagementServer { } */ - @Override - public StoragePoolVO updateStoragePool(long poolId, String tags) throws IllegalArgumentException { - return _storageMgr.updateStoragePool(poolId, tags); - } +// @Override +// public StoragePoolVO updateStoragePool(long poolId, String tags) throws IllegalArgumentException { +// return _storageMgr.updateStoragePool(poolId, tags); +// } @Override public DomainRouter startRouter(long routerId, long startEventId) throws InternalErrorException { diff --git a/server/src/com/cloud/storage/StorageManagerImpl.java b/server/src/com/cloud/storage/StorageManagerImpl.java index a25e42c3f0c..678fc93a250 100644 --- a/server/src/com/cloud/storage/StorageManagerImpl.java +++ b/server/src/com/cloud/storage/StorageManagerImpl.java @@ -59,6 +59,7 @@ import com.cloud.agent.api.to.DiskCharacteristicsTO; import com.cloud.agent.api.to.VolumeTO; import com.cloud.alert.AlertManager; import com.cloud.api.BaseCmd; +import com.cloud.api.commands.UpdateStoragePoolCmd; import com.cloud.async.AsyncInstanceCreateStatus; import com.cloud.async.AsyncJobExecutor; import com.cloud.async.AsyncJobManager; @@ -1306,14 +1307,19 @@ public class StorageManagerImpl implements StorageManager { } @Override - public StoragePoolVO updateStoragePool(long poolId, String tags) throws IllegalArgumentException { - StoragePoolVO pool = _storagePoolDao.findById(poolId); + public StoragePoolVO updateStoragePool(UpdateStoragePoolCmd cmd) throws IllegalArgumentException + { + //Input validation + Long id = cmd.getId(); + String tags = cmd.getTags(); + + StoragePoolVO pool = _storagePoolDao.findById(id); if (pool == null) { - throw new IllegalArgumentException("Unable to find storage pool with ID: " + poolId); + throw new IllegalArgumentException("Unable to find storage pool with ID: " + id); } if (tags != null) { - Map details = _storagePoolDao.getDetails(poolId); + Map details = _storagePoolDao.getDetails(id); String[] tagsList = tags.split(","); for (String tag : tagsList) { tag = tag.trim(); @@ -1322,7 +1328,7 @@ public class StorageManagerImpl implements StorageManager { } } - _storagePoolDao.updateDetails(poolId, details); + _storagePoolDao.updateDetails(id, details); } return pool;