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.JobDescriptor; import com.taobao.zeus.model.JobDescriptor.JobRunType; import com.taobao.zeus.model.JobStatus; import com.taobao.zeus.store.mysql.persistence.JobPersistence; import com.taobao.zeus.store.mysql.persistence.Worker; import com.taobao.zeus.util.Tuple; public interface GroupManager { /** * 获取根节点的组ID * @return */ String getRootGroupId(); /** * 获取根节点Group * 包含完整的树结构信息 * @return */ GroupBean getGlobeGroupBean(); /** * 根据组ID查询组信息 * 向上查询该组上的所有组信息 * @param groupName * @return */ GroupBean getUpstreamGroupBean(String groupId); /** * 根据组ID查询组信息 * 向下查询该组下的所有组信息以及Job信息 * @param groupId * @return */ GroupBean getDownstreamGroupBean(String groupId); GroupBean getDownstreamGroupBean(GroupBean parent); /** * 根据groupId查询该组的记录 * @param groupId * @return */ GroupDescriptor getGroupDescriptor(String groupId); /** * 获取组下的组 * @param groupId * @return */ List<GroupDescriptor> getChildrenGroup(String groupId); /** * 根据JobId查询Job信息 * 向上查询所有的组信息 * @param jobId * @return */ JobBean getUpstreamJobBean(String jobId); /** * 根据jobid查询job的记录信息 * @param jobId * @return */ Tuple<JobDescriptor,JobStatus> getJobDescriptor(String jobId); /** * 获取组下的job * @param groupId * @return */ List<Tuple<JobDescriptor,JobStatus>> getChildrenJob(String groupId); /** * 查询Job状态 * @param jobId * @return */ JobStatus getJobStatus(String jobId); /** * 批量查询Job信息 * @param jobIds * @return */ Map<String, Tuple<JobDescriptor, 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 */ JobDescriptor createJob(String user,String jobName,String parentGroup,JobRunType 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,JobDescriptor 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; /** * 保存jobAction * @throws ZeusException */ void saveJob(JobPersistence actionPer) throws ZeusException; /** * 获取最近的jobAction * @throws ZeusException */ List<JobPersistence> getLastJobAction(String jobId); /** * 保存jobAction * @throws ZeusException */ void updateAction(JobDescriptor actionPer) throws ZeusException; /** * 获取jobAction列表 * @throws ZeusException */ List<Tuple<JobDescriptor, JobStatus>> getActionList(String jobId); /** * 移除jobAction * @throws ZeusException */ void removeJob(Long actionId) throws ZeusException; boolean IsExistedBelowRootGroup(String GroupName); }