package com.bocloud.ims.interfaces.resource.azure;

import com.bocloud.cmp.model.NetworkInterfaceModel;
import com.bocloud.cmp.params.azure.NetworkInterfaceOperationParams;
import com.bocloud.cmp.params.azure.UserAssignParams;
import com.bocloud.common.model.BocloudResult;
import com.bocloud.common.model.GridBean;
import com.bocloud.common.model.Pager;
import com.bocloud.common.model.RequestContext;
import com.bocloud.ims.entity.resource.NetworkInterface;
import com.bocloud.ims.entity.resource.azure.bean.NetworkInterfaceCbsBean;

import java.util.List;

/**
 * @Company: 博云 www.bocloud.com
 * @ClassName: NetworkInterfaceService
 * @Description:
 * @author: zhenpingLi/李振平
 * @date: 2019/9/29 15:07
 */
public interface NetworkInterfaceService {

    BocloudResult<GridBean<NetworkInterface>> list(Pager pager, RequestContext context);

    BocloudResult<NetworkInterface> detail(Long id, RequestContext context);

    BocloudResult<Void> create(NetworkInterface entityParams, RequestContext context);

    BocloudResult<Void> createAndBindServer(NetworkInterfaceCbsBean params, RequestContext context);

    BocloudResult<Void> remove(Long id, RequestContext context);

    BocloudResult<Void> batchRemove(List<Long> ids, RequestContext context);

    BocloudResult<Void> modify(NetworkInterface entityParams, RequestContext context);

    BocloudResult<Void> operations(NetworkInterfaceOperationParams params, RequestContext context);

    BocloudResult<NetworkInterface> assign(UserAssignParams params, RequestContext context);

    BocloudResult<Void> assignBatch(UserAssignParams params, RequestContext context);

    BocloudResult distributionSecurityGroup(Long id, NetworkInterfaceModel model, RequestContext context);

    BocloudResult privateIpAddresses(Long id, NetworkInterfaceModel networkInterfaceModel, RequestContext context);

    BocloudResult list(Long vendorId, String regionId, Long vpcId, String interfaceType);

    BocloudResult listAvailableNics(Long vendorId, String regionId);


}
