package com.bocloud.cmp.provider.loadbalance;

import java.util.List;

import com.bocloud.cmp.model.HealthMonitorModel;
import com.bocloud.cmp.model.LbListenerModel;
import com.bocloud.cmp.model.LbListenerPolicyModel;
import com.bocloud.cmp.model.LbListenerRuleModel;
import com.bocloud.cmp.model.LbMemberModel;
import com.bocloud.cmp.model.LbModel;
import com.bocloud.cmp.model.LbPoolModel;
import com.bocloud.cmp.model.VipModel;
import com.bocloud.cmp.provider.SuperProvider;
import com.bocloud.common.model.BocloudResult;

public interface LoadBalanceProvider extends SuperProvider {
	default BocloudResult list() {
		return new BocloudResult(false, "暂未开发！");
	}

	default BocloudResult create(LbModel lb) {
		return new BocloudResult(false, "暂未开发！");
	}

	default BocloudResult update(LbModel lb) {
		return new BocloudResult(false, "暂未开发！");
	}

	default BocloudResult update(LbModel lb, String action) {
		return null;
	}

	default BocloudResult modifyLbSpec(LbModel lbModel) {
		return null;
	}

	default BocloudResult setLbDeleteProtection(LbModel lbModel) {
		return null;
	}

	default BocloudResult detailListener(String loadBalancerId, Integer listenerPort, String type) {
		return null;
	}

	default BocloudResult listBackendServer(String vServerGroupId) {
		return null;
	}

	default BocloudResult listVServerGroup(String loadBalancerId) {
		return null;
	}

	default BocloudResult updateListener(LbListenerModel listenerModel, Integer listenerPort, String type) {
		return null;
	}

	default BocloudResult addMembers(String vServerGroupId, List<LbMemberModel> memberModels) {
		return null;
	}

	default BocloudResult removeMembers(String vServerGroupId, List<LbMemberModel> memberModels) {
		return null;
	}

	default BocloudResult remove(String lbId) {
		return new BocloudResult(false, "暂未开发！");
	}

	default BocloudResult detail(String lbId) {
		return new BocloudResult(false, "暂未开发！");
	}

	default BocloudResult listVip() {
		return new BocloudResult(false, "暂未开发！");
	}

	default BocloudResult createVip(VipModel vModel) {
		return new BocloudResult(false, "暂未开发！");
	}

	default BocloudResult updateVip(VipModel vModel) {
		return null;
	}

	default BocloudResult removeVip(String vipId) {
		return new BocloudResult(false, "暂未开发！");
	}

	default BocloudResult detailVip(String vipId) {
		return new BocloudResult(false, "暂未开发！");
	}

	default BocloudResult listListener() {
		return new BocloudResult(false, "暂未开发！");
	}

	default BocloudResult listListener(String lbId) {
		return new BocloudResult(false, "暂未开发！");
	}

	default BocloudResult createListener(LbListenerModel lbListenerModel) {
		return new BocloudResult(false, "暂未开发！");
	}

	default BocloudResult createPool(LbPoolModel poolModel, List<LbMemberModel> memberModels) {
		return null;
	}

	default BocloudResult updateListener(LbListenerModel lbListenerModel) {
		return new BocloudResult(false, "暂未开发！");
	}

	default BocloudResult removeListener(String listenerId) {
		return new BocloudResult(false, "暂未开发！");
	}

	default BocloudResult detailListener(String listenerId) {
		return new BocloudResult(false, "暂未开发！");
	}

	default BocloudResult listHealMonitor() {
		return new BocloudResult(false, "暂未开发！");
	}

	default BocloudResult createHealMonitor(HealthMonitorModel hmModel) {
		return new BocloudResult(false, "暂未开发！");
	}

	default BocloudResult updateHealMonitor(HealthMonitorModel hmModel) {
		return new BocloudResult(false, "暂未开发！");
	}

	default BocloudResult removeHealMonitor(String hmId) {
		return new BocloudResult(false, "暂未开发！");
	}

	default BocloudResult detailHealMonitor(String hmId) {
		return new BocloudResult(false, "暂未开发！");
	}

	default BocloudResult listMember(String poolId) {
		return new BocloudResult(false, "暂未开发！");
	}

	default BocloudResult createMember(LbMemberModel mbModel) {
		return new BocloudResult(false, "暂未开发！");
	}

	default BocloudResult updateMember(LbMemberModel mbModel) {
		return new BocloudResult(false, "暂未开发！");
	}

	default BocloudResult removeMember(String poolId, String mbId) {
		return new BocloudResult(false, "暂未开发！");
	}

	default BocloudResult detailMember(String poolId, String mbId) {
		return new BocloudResult(false, "暂未开发！");
	}

	default BocloudResult listPool() {
		return new BocloudResult(false, "暂未开发！");
	}

	default BocloudResult createPool(LbPoolModel poolModel) {
		return new BocloudResult(false, "暂未开发！");
	}

	default BocloudResult removePool(String poolId) {
		return new BocloudResult(false, "暂未开发！");
	}

	default BocloudResult updatePool(LbPoolModel poolModel) {
		return new BocloudResult(false, "暂未开发！");
	}

	default BocloudResult updatePool(LbPoolModel poolModel, List<LbMemberModel> memberModels) {
		return null;
	}

	default BocloudResult detailPool(String poolId) {
		return new BocloudResult(false, "暂未开发！");
	}

	// 转发策略
	default BocloudResult listListenerPolicy() {
		return null;
	}

	default BocloudResult createListenerPolicy(LbListenerPolicyModel lb) {
		return null;
	}

	default BocloudResult updateListenerPolicy(LbListenerPolicyModel lb) {
		return null;
	}

	default BocloudResult removeListenerPolicy(String policyId) {
		return null;
	}

	default BocloudResult detailListenerPolicy(String policyId) {
		return null;
	}

	// 转发规则
	default BocloudResult listListenerRule(String policyId) {
		return null;
	}

	default BocloudResult createListenerRule(LbListenerRuleModel lb) {
		return null;
	}

	default BocloudResult updateListenerRule(LbListenerRuleModel lb) {
		return null;
	}

	default BocloudResult removeListenerRule(String policyId, String ruleId) {
		return null;
	}

	default BocloudResult detailListenerRule(String policyId, String ruleId) {
		return null;
	}

	default BocloudResult startLoadBalancerListener(Integer listenerPort, String lbId, String listenerProtocol) {
		return null;
	}

	default BocloudResult stopLoadBalancerListener(Integer listenerPort, String lbId, String listenerProtocol) {
		return null;
	}

	default BocloudResult removeListener(Integer port, String loadBalancerId, String protocol) {
		return null;
	}
}
