| // Copyright 2012 Citrix Systems, Inc. Licensed under the |
| // Apache License, Version 2.0 (the "License"); you may not use this |
| // file except in compliance with the License. Citrix Systems, Inc. |
| // reserves all rights not expressly granted by the License. |
| // You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 |
| // Unless required by applicable law or agreed to in writing, software |
| // distributed under the License is distributed on an "AS IS" BASIS, |
| // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| // See the License for the specific language governing permissions and |
| // limitations under the License. |
| // |
| // Automatically generated by addcopyright.py at 04/03/2012 |
| package com.cloud.storage; |
| |
| import java.net.UnknownHostException; |
| import java.util.List; |
| |
| import com.cloud.api.commands.CancelPrimaryStorageMaintenanceCmd; |
| import com.cloud.api.commands.CreateStoragePoolCmd; |
| import com.cloud.api.commands.CreateVolumeCmd; |
| import com.cloud.api.commands.DeletePoolCmd; |
| import com.cloud.api.commands.ListVolumesCmd; |
| import com.cloud.api.commands.UpdateStoragePoolCmd; |
| import com.cloud.api.commands.UploadVolumeCmd; |
| import com.cloud.exception.ConcurrentOperationException; |
| import com.cloud.exception.InsufficientCapacityException; |
| import com.cloud.exception.PermissionDeniedException; |
| import com.cloud.exception.ResourceAllocationException; |
| import com.cloud.exception.ResourceInUseException; |
| import com.cloud.exception.ResourceUnavailableException; |
| |
| public interface StorageService{ |
| /** |
| * Create StoragePool based on uri |
| * |
| * @param cmd |
| * the command object that specifies the zone, cluster/pod, URI, details, etc. to use to create the |
| * storage pool. |
| * @return |
| * @throws ResourceInUseException |
| * @throws IllegalArgumentException |
| * @throws UnknownHostException |
| * @throws ResourceUnavailableException |
| * TODO |
| */ |
| StoragePool createPool(CreateStoragePoolCmd cmd) throws ResourceInUseException, IllegalArgumentException, UnknownHostException, ResourceUnavailableException; |
| |
| /** |
| * Creates the database object for a volume based on the given criteria |
| * |
| * @param cmd |
| * the API command wrapping the criteria (account/domainId [admin only], zone, diskOffering, snapshot, |
| * name) |
| * @return the volume object |
| * @throws PermissionDeniedException |
| */ |
| Volume allocVolume(CreateVolumeCmd cmd) throws ResourceAllocationException; |
| |
| /** |
| * Creates the volume based on the given criteria |
| * |
| * @param cmd |
| * the API command wrapping the criteria (account/domainId [admin only], zone, diskOffering, snapshot, |
| * name) |
| * @return the volume object |
| */ |
| Volume createVolume(CreateVolumeCmd cmd); |
| |
| boolean deleteVolume(long volumeId) throws ConcurrentOperationException; |
| |
| /** |
| * Delete the storage pool |
| * |
| * @param cmd |
| * - the command specifying poolId |
| * @return success or failure |
| */ |
| boolean deletePool(DeletePoolCmd cmd); |
| |
| /** |
| * Enable maintenance for primary storage |
| * |
| * @param cmd |
| * - the command specifying primaryStorageId |
| * @return the primary storage pool |
| * @throws ResourceUnavailableException |
| * TODO |
| * @throws InsufficientCapacityException |
| * TODO |
| */ |
| public StoragePool preparePrimaryStorageForMaintenance(Long primaryStorageId) throws ResourceUnavailableException, InsufficientCapacityException; |
| |
| /** |
| * Complete maintenance for primary storage |
| * |
| * @param cmd |
| * - the command specifying primaryStorageId |
| * @return the primary storage pool |
| * @throws ResourceUnavailableException |
| * TODO |
| */ |
| public StoragePool cancelPrimaryStorageForMaintenance(CancelPrimaryStorageMaintenanceCmd cmd) throws ResourceUnavailableException; |
| |
| public StoragePool updateStoragePool(UpdateStoragePoolCmd cmd) throws IllegalArgumentException; |
| |
| public StoragePool getStoragePool(long id); |
| |
| Volume migrateVolume(Long volumeId, Long storagePoolId) throws ConcurrentOperationException; |
| |
| List<? extends Volume> searchForVolumes(ListVolumesCmd cmd); |
| |
| /** |
| * Uploads the volume to secondary storage |
| * |
| * @param UploadVolumeCmd cmd |
| * |
| * @return Volume object |
| */ |
| Volume uploadVolume(UploadVolumeCmd cmd) throws ResourceAllocationException; |
| |
| } |