package com.bocloud.ims.interfaces.resource;

import com.bocloud.cmp.model.VolumeModel;
import com.bocloud.common.model.*;
import com.bocloud.ims.entity.resource.Storage;

import java.util.List;
import java.util.Map;

/**
 * 存储器服务接口
 *
 * @author lkx007
 */
public interface StorageService {

    /**
     * 存储查询接口
     *
     * @param page
     * @param rows
     * @param params
     * @param sorter
     * @param simple
     * @return
     */
    public BocloudResult<GridBean<Storage>> list(Pager pager)
            throws Exception;

    /**
     * 添加存储池
     *
     * @param storage
     * @param context
     * @return
     */
    public BocloudResult<String> create(Storage storage, RequestContext context);

    /**
     * 修改存储池
     *
     * @param storage
     * @param context
     * @return
     */
    public BocloudResult<String> modify(Storage storage, RequestContext context);

    /**
     * 连接存储池
     *
     * @param storage
     * @param context
     */
    public BocloudResult connect(Storage storage, RequestContext context);

    /**
     * 删除存储器
     *
     * @param id
     * @param context
     * @return
     */
    public BocloudResult<String> remove(Long id, RequestContext context);

    /**
     * 查询存储器上的所有可管理的卷
     *
     * @param page
     * @param rows
     * @param params
     * @param sorter
     * @param simple
     * @return
     */
    public BocloudResult<GridBean<VolumeModel>> availableVolume(int page, int rows, List<Param> params, Map<String, String> sorter, boolean simple);

    /**
     * 按平台查询存储器
     * @param vendorId 平台id
     * @return
     */
    public BocloudResult<List<Storage>> listByVendor(long vendorId);

    /**
     * 详情
     * @param id
     * @return
     */
    public BocloudResult<Storage> detail(Long id);


}
