package com.bocloud.cmp.provider.compute;

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

public interface ImageProvider extends SuperProvider {
	/**
	 * 查询所有
	 *
	 * @return
	 */
	public BocloudResult list();

	/**
	 * 详情
	 *
	 * @param imageId
	 * @return
	 */
	public BocloudResult detail(String imageId);

	/**
	 * 删除
	 *
	 * @param imageId
	 * @return
	 */
	public BocloudResult remove(String imageId);

	/**
	 * 修改
	 *
	 * @param image
	 * @return
	 */
	public BocloudResult modify(ImageModel image);

	/**
	 * 创建镜像
	 *
	 * @param imageModel
	 * @return
	 */
	BocloudResult create(ImageModel imageModel);

	/**
	 * 更新image的文件信息
	 *
	 * @param imageId
	 * @return
	 */
	default BocloudResult file(String imageId) {
		return new BocloudResult(false, "need implement");
	}

	/**
	 * 镜像共享
	 *
	 * @param imageModel
	 * @return
	 */
	default BocloudResult shareImage(ImageModel imageModel) {
		return new BocloudResult(false, "need implement");
	};

	/**
	 * 复制
	 *
	 * @param image
	 * @return
	 */
	default BocloudResult copy(ImageModel image) {
		return new BocloudResult(false, "need implement");
	}

	/**
	 * 跨地域复制
	 *
	 * @param imageModel
	 * @return
	 */
	default BocloudResult syncImages(ImageModel imageModel) {
		return new BocloudResult(false, "need implement");
	}

	default BocloudResult list(String zone) {
		return null;
	}

	default BocloudResult download(String imageId, String path) {
		return null;
	}

	default BocloudResult upload(String imageId, String path) {
		return null;
	}

	default BocloudResult cancelCopy(String imageId) {
		return null;
	}
}
