package com.bocloud.ims.interfaces.resource;

import com.bocloud.common.model.BocloudResult;
import com.bocloud.common.model.RequestContext;
import com.bocloud.ims.entity.resource.VApp;

import java.util.List;

/**
 * vappservice
 *
 * @author wangyu
 * @version 1.0
 * @since 2017年11月24日
 */
public interface VAppService {

    /**
     * 查询vapp
     *
     * @param parentId
     * @param poolId
     * @param vendorId
     * @return
     */
    BocloudResult<List<VApp>> list(Long parentId, Long poolId, Long vendorId);

    /**
     * 创建vapp
     *
     * @param vapp
     * @param context
     * @return
     */
    BocloudResult<String> create(VApp vapp, RequestContext context);

    /**
     * 修改vapp
     *
     * @param vapp
     * @param context
     * @return
     */
    BocloudResult<String> modify(VApp vapp, RequestContext context);

    /**
     * 删除vapp
     *
     * @param id
     * @param userId
     * @return
     */
    BocloudResult<String> remove(Long id, Long userId);

    /**
     * 查询vapp详情
     *
     * @param id
     * @return
     */
    BocloudResult<VApp> detail(Long id);

    /**
     * vapp名称是否存在
     *
     * @param name
     * @param parentId
     * @return
     */
    BocloudResult<String> exists(String name, Long parentId);

    /**
     * 列表查询
     *
     * @param condition
     * @return
     */
    BocloudResult vrps(String condition);

    /**
     * 批量删除
     *
     * @param params
     * @param context
     * @return
     */
    BocloudResult batchRemove(List<Long> idArray, RequestContext context);
    
    /**
     * 打开电源
     *
     * @param id
     * @param context
     * @return
     */
    BocloudResult start(Long id, RequestContext context);

    /**
     * 关闭电源
     *
     * @param id
     * @param context
     * @return
     */
    BocloudResult stop(Long id, RequestContext context);

    /**
     * 挂起
     *
     * @param id
     * @param context
     * @return
     */
    BocloudResult suspend(Long id, RequestContext context);
}
