mirror of https://github.com/apache/cloudstack.git
137 lines
5.1 KiB
Java
Executable File
137 lines
5.1 KiB
Java
Executable File
// 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.snapshot;
|
|
|
|
import java.util.List;
|
|
|
|
import com.cloud.exception.ResourceAllocationException;
|
|
import com.cloud.host.HostVO;
|
|
import com.cloud.storage.SnapshotPolicyVO;
|
|
import com.cloud.storage.SnapshotVO;
|
|
import com.cloud.storage.VolumeVO;
|
|
import com.cloud.utils.db.Filter;
|
|
|
|
/**
|
|
*
|
|
*
|
|
*/
|
|
public interface SnapshotManager {
|
|
|
|
public static final int HOURLYMAX = 8;
|
|
public static final int DAILYMAX = 8;
|
|
public static final int WEEKLYMAX = 8;
|
|
public static final int MONTHLYMAX = 12;
|
|
public static final int DELTAMAX = 16;
|
|
|
|
/**
|
|
* After successfully creating a snapshot of a volume, copy the snapshot to the secondary storage for 1) reliability 2) So
|
|
* that storage space on Primary is conserved.
|
|
*
|
|
* @param snapshot
|
|
* Info about the created snapshot on primary storage.
|
|
* @param startEventId
|
|
* event id of the scheduled event for this snapshot
|
|
* @return True if the snapshot was successfully backed up.
|
|
*/
|
|
public boolean backupSnapshotToSecondaryStorage(SnapshotVO snapshot);
|
|
|
|
/**
|
|
* Once a snapshot has completed, 1) If success, update the database entries 2) If success and there are excess snapshots
|
|
* for any of the policies given, delete the oldest one. 3) Schedule the next recurring snapshot.
|
|
*
|
|
* @param volumeId
|
|
* The volume for which the snapshot is being taken
|
|
* @param snapshotId
|
|
* The snapshot which has just completed
|
|
* @param policyIds
|
|
* The list of policyIds to which this snapshot belongs to
|
|
* @param backedUp
|
|
* If true, the snapshot has been successfully created.
|
|
*/
|
|
void postCreateSnapshot(Long volumeId, Long snapshotId, Long policyId, boolean backedUp);
|
|
|
|
/**
|
|
* Destroys the specified snapshot from secondary storage
|
|
*/
|
|
boolean destroySnapshot(long userId, long snapshotId, long policyId);
|
|
|
|
/**
|
|
* Deletes snapshot scheduling policy. Delete will fail if this policy is assigned to one or more volumes
|
|
*/
|
|
boolean deletePolicy(long userId, Long policyId);
|
|
|
|
/**
|
|
* Lists all snapshots for the volume which are created using schedule of the specified policy
|
|
*/
|
|
/*
|
|
* List<SnapshotVO> listSnapsforPolicy(long policyId, Filter filter);
|
|
*/
|
|
/**
|
|
* List all policies which are assigned to the specified volume
|
|
*/
|
|
List<SnapshotPolicyVO> listPoliciesforVolume(long volumeId);
|
|
|
|
/**
|
|
* List all policies to which a specified snapshot belongs. For ex: A snapshot may belong to a hourly snapshot and a daily
|
|
* snapshot run at the same time
|
|
*/
|
|
/*
|
|
* List<SnapshotPolicyVO> listPoliciesforSnapshot(long snapshotId);
|
|
*/
|
|
/**
|
|
* List all snapshots for a specified volume irrespective of the policy which created the snapshot
|
|
*/
|
|
List<SnapshotVO> listSnapsforVolume(long volumeId);
|
|
|
|
void deletePoliciesForVolume(Long volumeId);
|
|
|
|
/**
|
|
* For each of the volumes in the account, (which can span across multiple zones and multiple secondary storages), delete
|
|
* the dir on the secondary storage which contains the backed up snapshots for that volume. This is called during
|
|
* deleteAccount.
|
|
*
|
|
* @param accountId
|
|
* The account which is to be deleted.
|
|
*/
|
|
boolean deleteSnapshotDirsForAccount(long accountId);
|
|
|
|
SnapshotPolicyVO getPolicyForVolume(long volumeId);
|
|
|
|
boolean destroySnapshotBackUp(long snapshotId);
|
|
|
|
/**
|
|
* Create a snapshot of a volume
|
|
*
|
|
* @param cmd
|
|
* the API command wrapping the parameters for creating the snapshot (mainly volumeId)
|
|
* @return the Snapshot that was created
|
|
*/
|
|
SnapshotVO createSnapshotOnPrimary(VolumeVO volume, Long polocyId, Long snapshotId) throws ResourceAllocationException;
|
|
|
|
List<SnapshotPolicyVO> listPoliciesforSnapshot(long snapshotId);
|
|
|
|
List<SnapshotVO> listSnapsforPolicy(long policyId, Filter filter);
|
|
|
|
void downloadSnapshotsFromSwift(SnapshotVO ss);
|
|
|
|
HostVO getSecondaryStorageHost(SnapshotVO snapshot);
|
|
|
|
String getSecondaryStorageURL(SnapshotVO snapshot);
|
|
|
|
void deleteSnapshotsForVolume (String secondaryStoragePoolUrl, Long dcId, Long accountId, Long volumeId );
|
|
|
|
void deleteSnapshotsDirForVolume(String secondaryStoragePoolUrl, Long dcId, Long accountId, Long volumeId);
|
|
|
|
boolean canOperateOnVolume(VolumeVO volume);
|
|
}
|