package com.bocloud.ims.interfaces.resource;

import com.bocloud.cmp.model.FirewallModel;
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.Firewall;

import java.util.List;
import java.util.Map;

/**
 * 防火墙service接口
 *
 * @author wangyu
 * @version 1.0
 * @since 2017年8月29日
 */
public interface FirewallService {

    /**
     * 查询防火墙列表
     *
     * @param pager
     * @param context
     * @return
     */
    BocloudResult<GridBean<Firewall>> list(Pager pager, RequestContext context);

    /**
     * 创建防火墙
     *
     * @param firewall
     * @param context
     * @param callback
     * @return
     */
    BocloudResult<Firewall> create(Firewall firewall, RequestContext context, String callback);

    /**
     * 修改防火墙信息
     *
     * @param firewall
     * @param userId
     * @return
     */
    BocloudResult<Firewall> modify(Firewall firewall, Long userId);

    /**
     * 查询防火墙信息
     *
     * @param id
     * @return
     */
    BocloudResult<Firewall> detail(Long id);

    /**
     * 关联防火墙路由
     *
     * @param id
     * @param firewallModel
     * @param context
     * @return
     */
    BocloudResult relevanceRouter(Long id, FirewallModel firewallModel, RequestContext context);

    /**
     * 删除防火墙
     *
     * @param id
     * @param context
     * @return
     */
    BocloudResult remove(Long id, RequestContext context);

    /**
     * 查询路由列表
     *
     * @param id
     * @param vendorId
     * @param tenantUuid
     * @param tenantId
     * @return
     */
    BocloudResult<Map<String, Object>> listRouter(Long id, Long vendorId, String tenantUuid, Long tenantId);

    /**
     * 批量删除
     *
     * @param params
     * @param context
     * @return
     */
    BocloudResult batchRemove(List<Long> idArray, RequestContext context);

}
