package com.bocloud.cmp.provider.storage;

import com.bocloud.cmp.model.storage.StorageGroupModel;
import com.bocloud.cmp.model.storage.StorageHostModel;
import com.bocloud.cmp.provider.SuperProvider;
import com.bocloud.common.model.BocloudResult;

import java.util.List;

/**
 * 存储主机
 */
public interface HostProvider extends SuperProvider {
    /**
     * 查询所有的存储主机
     *
     * @return
     */
    default public BocloudResult list() {
        return null;
    }

    ;

    /**
     * 查询存储服务器下所有主机列表
     *
     * @param storageUuid 存储服务器的uuid
     */
    default public BocloudResult list(String storageUuid) {
        return null;
    }

    ;

    /**
     * 创建主机
     *
     * @param model
     * @return
     */
    default public BocloudResult create(StorageHostModel model) {
        return null;
    }

    /**
     * 修改
     *
     * @param model
     * @return
     */
    default public BocloudResult modify(StorageHostModel model) {
        return null;
    }

    /**
     * 重命名
     *
     * @param model
     * @return
     */
    default public BocloudResult rename(StorageHostModel model) {
        return null;
    }

    /**
     * 删除主机
     *
     * @param model
     * @return
     */
    default public BocloudResult remove(StorageHostModel model) {
        return null;
    }

    /**
     * 主机添加端口
     *
     * @param model
     * @return
     */
    default public BocloudResult appendPort(StorageHostModel model) {
        return null;
    }

    /**
     * 主机删除端口
     *
     * @param model
     * @return
     */
    default public BocloudResult removePort(StorageHostModel model) {
        return null;
    }

    /**
     * 主机映射卷
     *
     * @param model
     * @return
     */
    default public BocloudResult attachVolume(StorageHostModel model) {
        return null;
    }

    /**
     * 主机拆离卷
     *
     * @param model
     * @return
     */
    default public BocloudResult detachVolume(StorageHostModel model) {
        return null;
    }

    /**
     * 详情
     *
     * @param hostUuid
     * @return
     */
    default public BocloudResult detail(String hostUuid) {
        return null;
    }

    default BocloudResult addGroups(List<StorageGroupModel> model) {
        return null;
    }

    default BocloudResult removeGroups(List<StorageGroupModel> model) {
        return null;
    }
}
