package com.bocloud.cmp.provider.veeam.br;

import com.bocloud.cmp.provider.SuperProvider;
import com.bocloud.common.model.BocloudResult;
import com.bocloud.nms.model.veeam.SessionModel;
import com.bocloud.nms.model.veeam.job.JobCreateModel;
import com.bocloud.nms.model.veeam.job.JobModel;
import com.bocloud.nms.model.veeam.job.JobStateModel;

import java.util.List;

public interface JobProvider extends SuperProvider {

    public BocloudResult<List<JobModel>> list();

    public BocloudResult<JobModel> listById(String id);

    public BocloudResult<List<JobStateModel>> listStates();

    public BocloudResult<JobStateModel> getJobStateById(String id);

    public BocloudResult<JobModel> create(JobCreateModel model);

    public BocloudResult<JobModel> modify(JobModel model);

    public BocloudResult<SessionModel> startJob(String id, boolean performActiveFull, Boolean startChainedJobs);

    public BocloudResult<SessionModel> stopJob(String id, boolean gracefullStop);

    public BocloudResult<Void> remove(String id);
}
