package com.bocloud.cmp.provider.network;

import com.bocloud.cmp.model.NetworkModel;
import com.bocloud.cmp.model.PortGroupModel;
import com.bocloud.cmp.model.SwitchModel;
import com.bocloud.cmp.model.sangfor.SangforVlanGroupModel;
import com.bocloud.cmp.provider.SuperProvider;
import com.bocloud.common.model.BocloudResult;

import java.util.List;

/**
 * 网络操作接口
 *
 * @author weiwei
 */
public interface NetworkProvider extends SuperProvider {
    default BocloudResult list() {
        return new BocloudResult(false, "尚未实现");
    }

    default BocloudResult create(NetworkModel model) {
        return new BocloudResult(false, "尚未实现");
    }

    default BocloudResult remove(String networkId) {
        return new BocloudResult(false, "尚未实现");
    }

    default BocloudResult remove(String switcherUuid, String networkId) {
        return new BocloudResult(false, "尚未实现");
    }

    default BocloudResult detail(String networkId) {
        return new BocloudResult(false, "尚未实现");
    }

    default BocloudResult detail(String switcherUuid, String networkId) {
        return new BocloudResult(false, "尚未实现");
    }

    default BocloudResult modify(NetworkModel model) {
        return new BocloudResult(false, "尚未实现");
    }

    /**
     * 创建分布式交换机
     *
     * @param model
     * @return
     */
    default BocloudResult createDSwitch(SwitchModel model) {
        return new BocloudResult(false, "尚未实现");
    }

    /**
     * 创建标准交换机
     *
     * @param model
     * @return
     */
    default BocloudResult createVSwitch(SwitchModel model) {
        return new BocloudResult(false, "尚未实现");
    }

    /**
     * 移除分布式交换机
     *
     * @param name
     * @return
     */
    default BocloudResult removeDSwitch(String name) {
        return new BocloudResult(false, "尚未实现");
    }

    /**
     * 重命名分布式交换机
     *
     * @param oldName
     * @param newName
     * @return
     */
    default BocloudResult renameDSwitch(String oldName, String newName) {
        return new BocloudResult(false, "尚未实现");
    }

    /**
     * 更新分布式交换机
     *
     * @param model
     * @return
     */
    default BocloudResult updateDVSwitch(SwitchModel model) {
        return new BocloudResult(false, "尚未实现");
    }

    /**
     * 删除主机绑定的标准交换机
     *
     * @param hostName
     * @param vswitchName
     * @param pgNames
     * @return
     */
    default BocloudResult removeVSwitch(String hostName, String vswitchName, List<String> pgNames) {
        return new BocloudResult(false, "尚未实现");
    }

    /**
     * 更新标准交换机
     *
     * @param hostName
     * @param vswitchName
     * @param model
     * @return
     */
    default BocloudResult updateVSwitch(String hostName, String vswitchName, SwitchModel model) {
        return new BocloudResult(false, "尚未实现");
    }

    /**
     * 创建端口组
     *
     * @param hostName
     * @param vswitchName
     * @param pgModel
     * @return
     */
    default BocloudResult createPortGroup(String hostName, String vswitchName, PortGroupModel pgModel) {
        return new BocloudResult(false, "尚未实现");
    }

    /**
     * 删除端口组
     *
     * @param hostName
     * @param pgName
     * @param type
     * @return
     */
    default BocloudResult removePortGroup(String hostName, String pgName, String type) {
        return new BocloudResult(false, "尚未实现");
    }

    /**
     * 更新端口组
     *
     * @param hostName
     * @param pgModel
     * @return
     */
    default BocloudResult updatePortGroup(String hostName, PortGroupModel pgModel) {
        return new BocloudResult(false, "尚未实现");
    }

    /**
     * 分布式交换机添加主机
     *
     * @param model
     * @return
     */
    default BocloudResult addHost(SwitchModel model) {
        return new BocloudResult(false, "尚未实现");
    }

    /**
     * 查询交换机
     *
     * @param model
     * @return
     */
    default BocloudResult listVSwitch(SwitchModel model) {
        return new BocloudResult(false, "尚未实现");
    }

    default BocloudResult listProfile() {
        return new BocloudResult(false, "尚未实现");
    }

    default BocloudResult listByVdc(String vdcName) {
        return new BocloudResult(false, "尚未实现");
    }

    default BocloudResult listMac() {
        return new BocloudResult(false, "尚未实现");
    }


    default BocloudResult addVlanGroup(SangforVlanGroupModel model) {
        return new BocloudResult(false, "尚未实现");
    }

    default BocloudResult editVlanGroup(SangforVlanGroupModel model) {
        return new BocloudResult(false, "尚未实现");
    }
}
