package com.bocloud.ims.interfaces.resource;

import com.bocloud.cmp.model.AutoScalingModel;
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.AutoScaling;
import com.bocloud.ims.entity.resource.AutoScalingAlarmTask;
import com.bocloud.ims.entity.resource.AutoScalingConfig;
import com.bocloud.ims.entity.resource.AutoScalingTimedTask;

public interface AutoScalingService {

    BocloudResult createAutoScaling(AutoScalingModel autoScalingModel, RequestContext requestContext);

    BocloudResult removeAutoScaling(Long id, RequestContext requestContext);

    BocloudResult createAlarmTask(AutoScalingModel autoScalingModel, RequestContext requestContext);

    BocloudResult removeAlarmTask(Long id, RequestContext requestContext);

    BocloudResult<AutoScalingTimedTask> createTimedTask(AutoScalingModel autoScalingModel, RequestContext requestContext);

    BocloudResult removeTimedTask(Long id, RequestContext requestContext);

    BocloudResult<AutoScalingConfig> createAutoScalingConfig(AutoScalingModel autoScalingModel, RequestContext requestContext);

    BocloudResult removeAutoScalingConfig(Long id, RequestContext requestContext);

    BocloudResult<AutoScaling> detail(Long id);

    BocloudResult<GridBean<AutoScaling>> listAutoScalingGroup(Pager pager);

    BocloudResult<GridBean<AutoScalingAlarmTask>> listAlarmTask(Pager pager);

    BocloudResult<GridBean<AutoScalingTimedTask>> listTimedTask(Pager pager);

    BocloudResult<GridBean<AutoScalingConfig>> listAutoScalingConfig(Pager pager);

    BocloudResult modifyAutoScaling(AutoScaling autoScaling, RequestContext requestContext);

    BocloudResult syncStackInfo(Long id, RequestContext requestContext);

}
