| 97 | |
| 98 | |
| 99 | class SourceManager(object): |
| 100 | def __init__(self, params, task_type, tool, have_next=False, have_last=False): |
| 101 | """ |
| 102 | 资源管理构造函数 |
| 103 | :param params: 传入的参数信息 |
| 104 | :param task_type: task类型 |
| 105 | """ |
| 106 | self.task_type = task_type |
| 107 | self.params = params |
| 108 | self.tool = tool |
| 109 | # 表明task所处的状态,用于控制数据传递 |
| 110 | self.have_next = have_next |
| 111 | self.have_last = have_last |
| 112 | self.inc_src = IncSourceMgr(self.params["scm_url"], self.tool.set_inc_source_type()) |
| 113 | self.src_loader = SourceDirLoader(params, task_type, tool, self.inc_src) |
| 114 | |
| 115 | def pre_task(self): |
| 116 | """ |
| 117 | task前置函数,用于数据拉取与数据传递接收 |
| 118 | :return: 传递给task的参数 |
| 119 | """ |
| 120 | if self.task_type is CompileTask: |
| 121 | return self._pre_compile() |
| 122 | elif self.task_type is AnalyzeTask: |
| 123 | return self._pre_analyze() |
| 124 | elif self.task_type is DataHandleTask: |
| 125 | return self._pre_result() |
| 126 | raise SourceMgrError("task类型错误:%s" % str(self.task_type)) |
| 127 | |
| 128 | def done_task(self, result): |
| 129 | """ |
| 130 | task结果处理函数,用于进行数据传递发送与中间数据上报 |
| 131 | :param result: |
| 132 | :return: |
| 133 | """ |
| 134 | if self.task_type is CompileTask: |
| 135 | return self._done_compile(result) |
| 136 | elif self.task_type is AnalyzeTask: |
| 137 | return self._done_analyze(result) |
| 138 | elif self.task_type is DataHandleTask: |
| 139 | return self._done_result(result) |
| 140 | raise SourceMgrError("task类型错误:%s" % str(self.task_type)) |
| 141 | |
| 142 | def _pre_compile(self): |
| 143 | """ |
| 144 | 编译前置资源操作: |
| 145 | 1. 确认是否有增量资源可以拉取 |
| 146 | 2. 确认是否存在远程增量资源可以拉取 |
| 147 | 3. 通过scm接口直接拉取代码 |
| 148 | :return: 加入source_dir,work_dir |
| 149 | """ |
| 150 | logger.info("pre_compile start.") |
| 151 | self.src_loader.load_source_dir() |
| 152 | logger.info("pre_compile done.") |
| 153 | return self.params |
| 154 | |
| 155 | def _pre_analyze(self): |
| 156 | """ |