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.NicChangeSubnetParams;
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;

/**
 * @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> remove(Long id, RequestContext context);

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

    BocloudResult operations(NetworkInterfaceOperationParams params, RequestContext context);

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

    BocloudResult vmChangeInterface(String params, RequestContext context);

    BocloudResult changeSubnet(NicChangeSubnetParams params, RequestContext context);

    BocloudResult batchRemove(String params, 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);

}
