package com.bocloud.cmp.provider.compute;

import com.bocloud.cmp.model.HostModel;
import com.bocloud.cmp.model.HostOperateModel;
import com.bocloud.cmp.provider.SuperProvider;
import com.bocloud.common.model.BocloudResult;

/**
 * 宿主机操作服务接口
 *
 * @author weiwei
 */
public interface HostProvider extends SuperProvider {
    /**
     * 创建宿主机
     *
     * @param model
     * @return
     */
    default BocloudResult create(HostOperateModel model) {
        return null;
    }

    /**
     * 修改宿主机
     *
     * @param model
     * @return
     */
    public default BocloudResult modify(HostOperateModel model) {
        return null;
    }

    /**
     * 删除宿主机
     *
     * @param model
     * @return
     */
    default BocloudResult remove(HostOperateModel model) {
        return new BocloudResult(false, "need implement");
    }

    /**
     * 进入维护模式
     *
     * @param model
     * @return
     */
    default BocloudResult enterMode(HostOperateModel model) {
        return new BocloudResult(false, "need implement");
    }

    /**
     * 退出维护模式
     *
     * @param model
     * @return
     */
    default BocloudResult exitMode(HostOperateModel model) {
        return new BocloudResult(false, "need implement");
    }



    /**
     * 断开连接
     *
     * @param model
     * @return
     */
    default BocloudResult disconn(HostOperateModel model) {
        return new BocloudResult(false, "need implement");
    }

    /**
     * 重连
     *
     * @param model
     * @return
     */
    default BocloudResult reconn(HostOperateModel model) {
        return new BocloudResult(false, "need implement");
    }

    /**
     * 移动
     *
     * @param model
     * @return
     */
    default BocloudResult moveTo(HostOperateModel model) {
        return new BocloudResult(false, "need implement");
    }

    /**
     * 关机
     *
     * @param model
     * @return
     */
    default BocloudResult shutdown(HostOperateModel model) {
        return new BocloudResult(false, "need implement");
    }

    default BocloudResult reboot(HostOperateModel model) {
        return new BocloudResult(false, "need implement");
    }

    default BocloudResult detail(HostOperateModel model) {
        return new BocloudResult(false, "need implement");
    }

    default BocloudResult list() {
        return new BocloudResult(false, "need implement");
    }

    default BocloudResult listLocation() {
        return new BocloudResult(false, "need implement");
    }

    default BocloudResult listProject() {
        return new BocloudResult(false, "need implement");
    }


    default BocloudResult monitor() {
        return new BocloudResult(false, "need implement");
    }

    default BocloudResult listPerf() {
        return new BocloudResult(false, "need implement");
    }

    default BocloudResult summary(Long id) {
        return new BocloudResult(false, "need implement");
    }

    default BocloudResult detail(Long hostId) {
        return new BocloudResult(false, "need implement");
    }

    default BocloudResult list(String clusterId) {
        return new BocloudResult(false, "need implement");
    }

    default  BocloudResult listUnmanagedPowervm(String hostname) {
        return new BocloudResult(false, "need implement");
    }

    default BocloudResult listHosts() {
        return null;
    }

    default BocloudResult listByCluster(String clusterName) {
        return null;
    }

    default BocloudResult listByVdc(String siteUri) {
        return new BocloudResult(false, "need implement");
    }

    default BocloudResult create(HostModel model) {
        return new BocloudResult(false, "need implement");
    }

    default BocloudResult modify(HostModel model) {
        return new BocloudResult(false, "need implement");
    }

    default BocloudResult remove(HostModel model) {
        return new BocloudResult(false, "need implement");
    }

    default  BocloudResult detail(String uri) {
        return new BocloudResult(false, "need implement");
    }

    default  BocloudResult maintain(HostModel model) {
        return new BocloudResult(false, "need implement");
    }

    default BocloudResult moveTo(HostModel model, String clusterUrn) {
        return new BocloudResult(false, "need implement");
    }

    default  BocloudResult ifaces() {
        return new BocloudResult(false, "need implement");
    }
    default  BocloudResult ifacesMgmt() {
        return new BocloudResult(false, "need implement");
    }
    default  BocloudResult ifacesBusiness() {
        return new BocloudResult(false, "need implement");
    }
    default  BocloudResult ifacesVs() {
        return new BocloudResult(false, "need implement");
    }
    default  BocloudResult ifacesQos() {
        return new BocloudResult(false, "need implement");
    }
    default  BocloudResult ifacesVxlan() {
        return new BocloudResult(false, "need implement");
    }

}
