package com.taobao.zeus.store; import java.util.Collection; import java.util.List; import java.util.Map; import com.taobao.zeus.client.ZeusException; import com.taobao.zeus.model.GroupDescriptor; import com.taobao.zeus.model.JobDescriptorOld; import com.taobao.zeus.model.JobDescriptor; import com.taobao.zeus.model.JobDescriptorOld.JobRunTypeOld; import com.taobao.zeus.model.JobStatus; import com.taobao.zeus.store.mysql.persistence.JobPersistenceOld; import com.taobao.zeus.store.mysql.persistence.Worker; import com.taobao.zeus.util.Tuple; public interface GroupManagerOld { /** * 获取根节点的组ID * @return */ String getRootGroupId(); /** * 获取根节点Group * 包含完整的树结构信息 * @return */ GroupBeanOld getGlobeGroupBean(); /** * 根据组ID查询组信息 * 向上查询该组上的所有组信息 * @param groupName * @return */ GroupBeanOld getUpstreamGroupBean(String groupId); /** * 根据组ID查询组信息 * 向下查询该组下的所有组信息以及Job信息 * @param groupId * @return */ GroupBeanOld getDownstreamGroupBean(String groupId); GroupBeanOld getDownstreamGroupBean(GroupBeanOld parent); /** * 根据groupId查询该组的记录 * @param groupId * @return */ GroupDescriptor getGroupDescriptor(String groupId); /** * 获取组下的组 * @param groupId * @return */ List<GroupDescriptor> getChildrenGroup(String groupId); /** * 根据JobId查询Job信息 * 向上查询所有的组信息 * @param jobId * @return */ JobBeanOld getUpstreamJobBean(String jobId); /** * 根据jobid查询job的记录信息 * @param jobId * @return */ Tuple<JobDescriptorOld,JobStatus> getJobDescriptor(String jobId); /** * 根据actionid查询action的记录信息 * @param jobId==actionid * @return */ /* Tuple<JobDescriptor,JobStatus> getActionDescriptor(String jobId);*/ /** * 获取组下的job * @param groupId * @return */ List<Tuple<JobDescriptorOld,JobStatus>> getChildrenJob(String groupId); /** * 查询Job状态 * @param jobId * @return */ JobStatus getJobStatus(String jobId); /** * 批量查询Job信息 * @param jobIds * @return */ Map<String, Tuple<JobDescriptorOld, JobStatus>> getJobDescriptor(Collection<String> jobIds); /** * 创建一个group * @param user * @return */ GroupDescriptor createGroup(String user,String groupName,String parentGroup,boolean isDirectory) throws ZeusException; /** * 创建一个Job * @param user * @param group * @return */ JobDescriptorOld createJob(String user,String jobName,String parentGroup,JobRunTypeOld jobType) throws ZeusException; /** * 删除组,成功删除需要的条件: * 1.操作人是该组的创建者 * 2.该组下的任务没有被其他组依赖 * @param user * @param groupId * @return */ void deleteGroup(String user,String groupId) throws ZeusException; /** * 删除一个Job * 1.该job没有被其他job依赖 * 删除操作完成后,全量重新加载配置 * @param user * @param jobId * @return * @throws ZeusException */ void deleteJob(String user,String jobId) throws ZeusException; /** * 更新Job * @param job * @return */ void updateJob(String user,JobDescriptorOld job) throws ZeusException; /** * 更新Group * @param group * @return */ void updateGroup(String user,GroupDescriptor group) throws ZeusException; /** * 更新Job状态 * @param jobStatus * @throws ZeusException */ void updateJobStatus(JobStatus jobStatus); void grantJobOwner(String granter,String uid,String jobId)throws ZeusException; void grantGroupOwner(String granter,String uid,String groupId)throws ZeusException; void moveJob(String uid,String jobId,String groupId) throws ZeusException; void moveGroup(String uid,String groupId,String newParentGroupId) throws ZeusException; /** * 获取worker列表 * @throws ZeusException */ List<String> getHosts() throws ZeusException; /** * 保存或者更新worker,如果存在则更新 * @throws ZeusException */ void replaceWorker(Worker worker) throws ZeusException; /** * 删除过期worker * @throws ZeusException */ void removeWorker(String host) throws ZeusException; List<JobPersistenceOld> getAllJobs(); /** * 得到所有下游依赖于jobID的JobID列表 * @param jobID * @return */ List<String> getAllDependencied(String jobID); /** * 得到所有上游需要依赖的jobID列表 * @param jobID * @return */ List<String> getAllDependencies(String jobID); /** * 根据界面job信息批量更新anction列表 * @param job */ void updateActionList(JobDescriptorOld job); }