package com.bocloud.cmp.provider.network;

import com.bocloud.cmp.model.NetworkInterfaceModel;
import com.bocloud.cmp.model.azure.network.NicIpConfigurationModel;
import com.bocloud.cmp.provider.SuperProvider;
import com.bocloud.common.model.BocloudResult;

import java.util.List;

/**
 * @Company: 博云 www.bocloud.com
 * @ClassName: NetworkInterfaceProvider
 * @Description:
 * @author: zhenpingLi/李振平
 * @date: 2019/9/27 14:26
 */
public interface NetworkInterfaceProvider extends SuperProvider {

    BocloudResult list();

    BocloudResult detail(String netFaceId);

    BocloudResult remove(String netFaceId);

    BocloudResult modify(NetworkInterfaceModel model);

    BocloudResult create(NetworkInterfaceModel model);

    // aws 网络接口绑定安全组
    default BocloudResult sgroups(NetworkInterfaceModel model) {
        return null;
    }

    // 虚拟机挂载网络接口
    default BocloudResult attach(NetworkInterfaceModel model) {
        return null;
    }

    // 虚拟机卸载网络接口
    default BocloudResult detach(NetworkInterfaceModel model) {
        return null;
    }

    // azure专用
    default BocloudResult changeSubnet(NetworkInterfaceModel model) {
        return null;
    }

    // azure专用 ，虚拟机更换网络接口
    default BocloudResult vmChangeInterface(String netFaceId, String instanceId) {
        return null;
    }

    // 网络接口只能绑定一个网络安全组
    default BocloudResult attachSecurityGroup(NetworkInterfaceModel model) {
        return null;
    }

    // 网络接口解绑网络安全组
    default BocloudResult detachSecurityGroup(NetworkInterfaceModel model) {
        return null;
    }

    default BocloudResult getStatus(String nwiId, String status) {
        return null;
    }

    // 分配辅助私网IP
    default BocloudResult assignPrivateIpAddresses(NetworkInterfaceModel model) {
        return null;
    }

    // 取消分配辅助私网IP
    default BocloudResult disassignPrivateIpAddresses(NetworkInterfaceModel model) {
        return null;
    }

    // 分配IPv6地址
    default BocloudResult assignIpv6Addresses(String networkInterfaceUuid, List<String> ipv6Addresss,
                                              Integer ipv6AddressCount) {
        return null;
    }
    // 回收IPv6地址
    default BocloudResult disassignIpv6Addresses(String networkInterfaceUuid, List<String> ipv6Addresss) {
        return null;
    }

    //--azure
    //网络接口增加IP配置
    default BocloudResult networkInterfaceAddNicIpConfiguration(NicIpConfigurationModel model) {
        return null;
    }

    //网络接口删除IP配置
    default BocloudResult networkInterfaceRemoveNicIpConfiguration(NicIpConfigurationModel model) {
        return null;
    }

    //网络接口IP配置绑定公共IP
    default BocloudResult nicIpConfigurationAttachPublicIpAddress(NicIpConfigurationModel model) {
        return null;
    }

    //网络接口IP配置解绑主公共IP
    default BocloudResult nicIpConfigurationdetachPublicIpAddress(NicIpConfigurationModel model) {
        return null;
    }

    //网络接口添加DNS
    default BocloudResult addDnsServer(NetworkInterfaceModel model) {
        return null;
    }

    //网络接口删除DNS
    default BocloudResult removeDnsServer(NetworkInterfaceModel model) {
        return null;
    }

    //网络接口绑定主公共ip
    default BocloudResult attachPublicIpAddress(NetworkInterfaceModel model) {
        return null;
    }

    //网络接口解绑主公共ip
    default BocloudResult detachPublicIpAddress(NetworkInterfaceModel model) {
        return null;
    }




}
