package com.bocloud.cmp.provider.compute;

import com.bocloud.cmp.model.SnapshotModel;
import com.bocloud.cmp.provider.SuperProvider;
import com.bocloud.common.model.BocloudResult;

/**
 * 快照操作接口
 *
 * @author weiwei
 */
public interface SnapshotProvider extends SuperProvider {
	/**
	 * 查询所有快照
	 *
	 * @return
	 */
	default public BocloudResult list() {
		return new BocloudResult(false, "暂未开发！");
	}

	/**
	 * 删除快照
	 *
	 * @param model
	 * @return
	 */
	default public BocloudResult remove(SnapshotModel model) {
		return new BocloudResult(false, "暂未开发！");
	}

	/**
	 * 删除整机快照
	 *
	 * @param snapshotModel
	 * @return
	 */
	default BocloudResult removeServerSnapshot(SnapshotModel snapshotModel) {
		return new BocloudResult(false, "暂未开发！");
	}

	/**
	 * 创建快照
	 *
	 * @param model
	 * @return
	 */
	default BocloudResult create(SnapshotModel model) {
		return new BocloudResult(false, "暂未开发！");
	}

	/**
	 * 快照详细
	 *
	 * @param model
	 * @return
	 */
	default public BocloudResult detail(SnapshotModel model) {
		return new BocloudResult(false, "暂未开发！");
	}

	/**
	 * 更新快照
	 *
	 * @param model
	 * @return
	 */
	default public BocloudResult modify(SnapshotModel model) {
		return new BocloudResult(false, "暂未开发！");
	}

	/**
	 * 恢复快照
	 *
	 * @param model
	 * @return
	 */
	default public BocloudResult revert(SnapshotModel model) {
		return new BocloudResult(false, "暂未开发！");
	}

	/**
	 * 重建快照
	 *
	 * @param model
	 * @return
	 */
	default public BocloudResult rebuild(SnapshotModel model) {
		return new BocloudResult(false, "暂未开发！");
	}

	/**
	 * 删除指定云硬盘下的所有快照
	 *
	 * @param volumeId
	 * @return
	 */
	default public BocloudResult removeByVolumeId(String volumeId) {
		return new BocloudResult(false, "暂未开发！");
	}

	/**
	 * 创建快照，不返回对象
	 * 
	 * @param model
	 * @return
	 */
	default BocloudResult createNoData(SnapshotModel model) {
		return new BocloudResult(false, "暂未开发！");
	}

	/**
	 * 获取快照
	 *
	 * @param snapshotId
	 * @return
	 */
	default public BocloudResult getSnapshot(String snapshotId) {
		return new BocloudResult(false, "暂未开发！");
	}

	/**
	 * 获取可用的快照
	 *
	 * @param snapshotId
	 * @return
	 */
	default public BocloudResult getAvaliableSnap(String snapshotId) {
		return new BocloudResult(false, "暂未开发！");
	}

	/**
	 * 查询云主机下的快照
	 *
	 * @param cloudServerId
	 * @return
	 */
	default public BocloudResult list(Long cloudServerId) {
		return new BocloudResult(false, "暂未开发！");
	}

	default BocloudResult list(String zone) {
		return new BocloudResult(false, "暂未开发！");
	}

	default BocloudResult detail(String value, String serverName) {
		return new BocloudResult(false, "暂未开发！");
	}
}
