package com.bocloud.cmp.provider.network;

import com.bocloud.cmp.model.VpnModel;
import com.bocloud.cmp.model.VpnPolicyModel;
import com.bocloud.cmp.provider.SuperProvider;
import com.bocloud.common.model.BocloudResult;

/**
 * vpn and policy
 *
 * @author Administrator
 */
public interface VpnProvider extends SuperProvider {
    @Override
    public boolean accessable();

    /**
     * 查询列表
     *
     * @return
     */
    public BocloudResult list();

    /**
     * 查询详情
     *
     * @param keypairName
     * @return
     */
    public BocloudResult detail(String vpnId);

    /**
     * 创建
     *
     * @param keypairName
     * @param publicKey
     * @return
     */
    public BocloudResult create(VpnModel model);

    /**
     * 删除
     *
     * @param keypairName
     * @return
     */
    public BocloudResult delete(String vpnUuid);

    /**
     * 修改
     *
     * @param model
     * @return
     */
    public BocloudResult modify(VpnModel model);

    /**
     * 新建vpn ike policy
     *
     * @param vpnPolicyModel
     * @return
     */
    public BocloudResult createIkePolicy(VpnPolicyModel vpnPolicyModel);

    /**
     * ike policy modify
     *
     * @param vpnPolicyModel
     * @return
     */
    public BocloudResult modfiyIkePolicy(VpnPolicyModel vpnPolicyModel);

    /**
     * ike policy delete
     *
     * @param policyUuid
     * @return
     */
    public BocloudResult removeIkePolicy(String policyUuid);

    /**
     * ipsec policy create
     *
     * @param model
     * @return
     */
    public BocloudResult createIPsecPolicy(VpnPolicyModel model);

    /**
     * ipsec policy modiry
     *
     * @param vpnPolicyModel
     * @return
     */
    public BocloudResult modfiyIPsecPolicy(VpnPolicyModel vpnPolicyModel);

    /**
     * ipsec police remove
     *
     * @param policyUuid
     * @return
     */
    public BocloudResult removeIPsecPolicy(String policyUuid);

    /**
     * vpn ike policy list
     *
     * @return
     */
    public BocloudResult vpnIkePolicylist();

    /**
     * vpn ipsec policy list
     *
     * @return
     */
    public BocloudResult vpnIPsecPolicylist();
}
