Commit 1346266d4aa750fefbd1e44d4191a6265ee08c81
1 parent
8b8f98e3
Exists in
master
and in
64 other branches
interin commit
Showing
7 changed files
with
159 additions
and
38 deletions
Show diff stats
src/InputOutput/IHMImpl/Process/IHMInputOutputDeleteProcessClass.php
@@ -7,7 +7,7 @@ | @@ -7,7 +7,7 @@ | ||
7 | */ | 7 | */ |
8 | class IHMInputOutputDeleteProcessClass implements InputOutputInterface | 8 | class IHMInputOutputDeleteProcessClass implements InputOutputInterface |
9 | { | 9 | { |
10 | - private $jobsManager = null; | 10 | + protected $jobsManager = null; |
11 | private $paramsData = null; | 11 | private $paramsData = null; |
12 | 12 | ||
13 | /* | 13 | /* |
src/InputOutput/WSImpl/Config/WSConfigClass.php
@@ -18,6 +18,13 @@ class WSConfigClass | @@ -18,6 +18,13 @@ class WSConfigClass | ||
18 | private static $wsResultDir = "WSRESULT"; | 18 | private static $wsResultDir = "WSRESULT"; |
19 | private static $jobsFile = "WSresults.xml"; | 19 | private static $jobsFile = "WSresults.xml"; |
20 | 20 | ||
21 | + private static $WebUrl = "http://apus.irap.omp.eu/NEWAMDA/data/"; | ||
22 | + | ||
23 | + public static function getUrl() | ||
24 | + { | ||
25 | + return self::$WebUrl.self::$wsResultDir.'/'; | ||
26 | + } | ||
27 | + | ||
21 | public static function getWsResultDir() | 28 | public static function getWsResultDir() |
22 | { | 29 | { |
23 | return IHMConfigClass::getDataDir().self::$wsResultDir.'/'; | 30 | return IHMConfigClass::getDataDir().self::$wsResultDir.'/'; |
src/InputOutput/WSImpl/Params/DownloadImpl/WSInputOutputParamsDownloadClass.php
@@ -66,8 +66,12 @@ class WSInputOutputParamsDownloadClass extends IHMInputOutputParamsAbstractClass | @@ -66,8 +66,12 @@ class WSInputOutputParamsDownloadClass extends IHMInputOutputParamsAbstractClass | ||
66 | } | 66 | } |
67 | 67 | ||
68 | //add params to output | 68 | //add params to output |
69 | + $resultFile = "download"; | ||
70 | + | ||
69 | foreach ($input->list as $param) | 71 | foreach ($input->list as $param) |
70 | { | 72 | { |
73 | + $resultFile .= "_".$param->paramid; | ||
74 | + | ||
71 | $paramInfo = $this->paramManager->addExistingParam($param->paramid, $this->paramsData, $param->template_args); | 75 | $paramInfo = $this->paramManager->addExistingParam($param->paramid, $this->paramsData, $param->template_args); |
72 | switch ($param->type) { | 76 | switch ($param->type) { |
73 | case 0: | 77 | case 0: |
@@ -127,29 +131,30 @@ class WSInputOutputParamsDownloadClass extends IHMInputOutputParamsAbstractClass | @@ -127,29 +131,30 @@ class WSInputOutputParamsDownloadClass extends IHMInputOutputParamsAbstractClass | ||
127 | else { | 131 | else { |
128 | $downloadNode->setStructure(RequestOutputDownloadStructureEnum::ONE_FILE_PER_PARAMETER_PER_INTERVAL); | 132 | $downloadNode->setStructure(RequestOutputDownloadStructureEnum::ONE_FILE_PER_PARAMETER_PER_INTERVAL); |
129 | } | 133 | } |
130 | - | ||
131 | - $extension = ""; | ||
132 | - $resultFilePrefix = "output-"; | 134 | + |
133 | switch ($input->compression) | 135 | switch ($input->compression) |
134 | { | 136 | { |
135 | case "1" : | 137 | case "1" : |
136 | $extension = $formatExtension.".gz"; | 138 | $extension = $formatExtension.".gz"; |
137 | $downloadNode->addPostProcessing(RequestOutputPostProcessingEnumClass::GZIP); | 139 | $downloadNode->addPostProcessing(RequestOutputPostProcessingEnumClass::GZIP); |
140 | + $resultFilePrefix = "download_"; | ||
138 | break; | 141 | break; |
139 | case "0" : | 142 | case "0" : |
140 | default : | 143 | default : |
141 | $extension = $formatExtension; | 144 | $extension = $formatExtension; |
145 | + $resultFilePrefix = "output-"; | ||
142 | } | 146 | } |
143 | - | ||
144 | - | ||
145 | - $resultFile = "result_".$this->requestID; | ||
146 | 147 | ||
147 | - $this->paramsData->addWaitingResult(WSInputOutputClass::getService(), $resultFile); | 148 | + $resultFile .= "_".strtotime($input->startDate)."_".strtotime($input->stopDate); |
149 | + | ||
150 | + $this->paramsData->addWaitingResult(WSInputOutputClass::getService(), $resultFile.$extension); | ||
148 | 151 | ||
152 | + // internal kernel output | ||
149 | $postProcessCmd = "mv ".$resultFilePrefix."*"; | 153 | $postProcessCmd = "mv ".$resultFilePrefix."*"; |
150 | 154 | ||
151 | $postProcessCmd .= $extension; | 155 | $postProcessCmd .= $extension; |
152 | - $postProcessCmd .= " ".$resultFile.$extension; | 156 | + $postProcessCmd .= " ".WSConfigClass::getWsResultDir().$resultFile.$extension; |
157 | + | ||
153 | $this->paramsData->setPostCmd($postProcessCmd); | 158 | $this->paramsData->setPostCmd($postProcessCmd); |
154 | 159 | ||
155 | 160 | ||
@@ -180,7 +185,7 @@ class WSInputOutputParamsDownloadClass extends IHMInputOutputParamsAbstractClass | @@ -180,7 +185,7 @@ class WSInputOutputParamsDownloadClass extends IHMInputOutputParamsAbstractClass | ||
180 | protected function addToJobsFile($data,$resultKey) | 185 | protected function addToJobsFile($data,$resultKey) |
181 | { | 186 | { |
182 | $waitingResult = $data->getWaitingResult($resultKey); | 187 | $waitingResult = $data->getWaitingResult($resultKey); |
183 | - | 188 | + |
184 | return $this->jobsManager->addJob( | 189 | return $this->jobsManager->addJob( |
185 | $this->input, | 190 | $this->input, |
186 | $data->getId(), | 191 | $data->getId(), |
@@ -188,7 +193,7 @@ class WSInputOutputParamsDownloadClass extends IHMInputOutputParamsAbstractClass | @@ -188,7 +193,7 @@ class WSInputOutputParamsDownloadClass extends IHMInputOutputParamsAbstractClass | ||
188 | $data->getStatus() == ProcessStatusEnumClass::RUNNING, | 193 | $data->getStatus() == ProcessStatusEnumClass::RUNNING, |
189 | $data->getStart(), | 194 | $data->getStart(), |
190 | $waitingResult, | 195 | $waitingResult, |
191 | - $data->getErrorCode()); | 196 | + $data->getErrorCode()); |
192 | } | 197 | } |
193 | 198 | ||
194 | /* | 199 | /* |
@@ -207,11 +212,6 @@ class WSInputOutputParamsDownloadClass extends IHMInputOutputParamsAbstractClass | @@ -207,11 +212,6 @@ class WSInputOutputParamsDownloadClass extends IHMInputOutputParamsAbstractClass | ||
207 | case ProcessStatusEnumClass::RUNNING : | 212 | case ProcessStatusEnumClass::RUNNING : |
208 | case ProcessStatusEnumClass::DONE : | 213 | case ProcessStatusEnumClass::DONE : |
209 | return $this->addToJobsFile($data, WSInputOutputClass::getService()); | 214 | return $this->addToJobsFile($data, WSInputOutputClass::getService()); |
210 | -// return array( | ||
211 | -// 'success' => true, | ||
212 | -// 'status' => $data->getStatus(), | ||
213 | -// 'result' => 'result_'.$this->requestID, | ||
214 | -// 'folder' => $this->getWorkingDirName()); | ||
215 | default : | 215 | default : |
216 | return array( | 216 | return array( |
217 | 'success' => false, | 217 | 'success' => false, |
src/InputOutput/WSImpl/Process/WSInputOutputDeleteProcessClass.php
0 โ 100644
@@ -0,0 +1,66 @@ | @@ -0,0 +1,66 @@ | ||
1 | +<?php | ||
2 | + | ||
3 | +/** | ||
4 | + * @class WSInputOutputDeleteProcessClass | ||
5 | + * @brief Class that's implement an InputOutputInterface used to treat a delete process request | ||
6 | + * @details | ||
7 | + */ | ||
8 | +class WSInputOutputDeleteProcessClass extends IHMInputOutputDeleteProcessClass implements InputOutputInterface | ||
9 | +{ | ||
10 | + protected $jobsManager = null; | ||
11 | + // private $paramsData = null; | ||
12 | + | ||
13 | + /* | ||
14 | + * @brief Constructor | ||
15 | + */ | ||
16 | + function __construct() | ||
17 | + { | ||
18 | + $this->jobsManager = new WSJobsManagerClass(); | ||
19 | + } | ||
20 | + | ||
21 | + /* | ||
22 | + * @brief translate input data from WS client to AMDA_Integration module for a delete process request | ||
23 | + */ | ||
24 | +// public function getInputData($input,$function,$requestId="") | ||
25 | +// { | ||
26 | +// if (isset($this->paramsData)) | ||
27 | +// unset($this->paramsData); | ||
28 | +// | ||
29 | +// $this->paramsData = new ProcessRequestDataClass(); | ||
30 | +// | ||
31 | +// $this->paramsData->setManagerFilePath(IHMConfigClass::getProcessManagerFilePath()); | ||
32 | +// $this->paramsData->setType(ProcessTypeEnumClass::DELETE); | ||
33 | +// | ||
34 | +// $this->paramsData->setId($input->id); | ||
35 | +// | ||
36 | +// return $this->paramsData; | ||
37 | +// } | ||
38 | + | ||
39 | + /* | ||
40 | + * @brief translate output data from AMDA_Integration module to IHM client for a delete process request | ||
41 | + */ | ||
42 | +// public function getOutput($data) | ||
43 | +// { | ||
44 | +// if (!$data->getSuccess()) | ||
45 | +// { | ||
46 | +// return array( | ||
47 | +// 'success' => false, | ||
48 | +// 'message' => $data->getLastErrorMessage()); | ||
49 | +// } | ||
50 | +// | ||
51 | +// $res = $this->jobsManager->deleteJob($this->paramsData->getId()); | ||
52 | +// | ||
53 | +// /*if (!$res['success']) | ||
54 | +// { | ||
55 | +// return array( | ||
56 | +// 'success' => false, | ||
57 | +// 'message' => $res['message']); | ||
58 | +// }*/ | ||
59 | +// | ||
60 | +// return array( | ||
61 | +// 'success' => true, | ||
62 | +// 'id' => $this->paramsData->getId()); | ||
63 | +// } | ||
64 | +} | ||
65 | + | ||
66 | +?> | ||
0 | \ No newline at end of file | 67 | \ No newline at end of file |
src/InputOutput/WSImpl/Process/WSInputOutputGetInfoProcessClass.php
@@ -63,9 +63,6 @@ class WSInputOutputGetInfoProcessClass extends IHMInputOutputGetInfoProcessClass | @@ -63,9 +63,6 @@ class WSInputOutputGetInfoProcessClass extends IHMInputOutputGetInfoProcessClass | ||
63 | 'success' => false, | 63 | 'success' => false, |
64 | 'message' => $data->getLastErrorMessage()); | 64 | 'message' => $data->getLastErrorMessage()); |
65 | } | 65 | } |
66 | - | ||
67 | - $r = print_r($jobInfo,true); | ||
68 | - error_log($r,1,email); | ||
69 | return $jobInfo; | 66 | return $jobInfo; |
70 | } | 67 | } |
71 | } | 68 | } |
src/InputOutput/WSImpl/Tools/WSJobsManagerClass.php
@@ -72,12 +72,14 @@ class WSJobsManagerClass extends IHMJobsManagerClass { | @@ -72,12 +72,14 @@ class WSJobsManagerClass extends IHMJobsManagerClass { | ||
72 | $request_obj = $this->getRequestObjectFile($id); | 72 | $request_obj = $this->getRequestObjectFile($id); |
73 | if (isset($request_obj)) | 73 | if (isset($request_obj)) |
74 | { | 74 | { |
75 | - if (isset($request_obj->format)) | 75 | + if (isset($request_obj->fileformat)) |
76 | { | 76 | { |
77 | $format = strtolower($request_obj->format); | 77 | $format = strtolower($request_obj->format); |
78 | if (($format == "pdf") || ($format == "ps")) | 78 | if (($format == "pdf") || ($format == "ps")) |
79 | //auto compression for plot request | 79 | //auto compression for plot request |
80 | $compression = ".tar.gz"; | 80 | $compression = ".tar.gz"; |
81 | + | ||
82 | + // if ($format == "ascii") $format = 'txt'; | ||
81 | } | 83 | } |
82 | if (isset($request_obj->compression)) | 84 | if (isset($request_obj->compression)) |
83 | $compression = strtolower($request_obj->compression); | 85 | $compression = strtolower($request_obj->compression); |
@@ -106,8 +108,10 @@ class WSJobsManagerClass extends IHMJobsManagerClass { | @@ -106,8 +108,10 @@ class WSJobsManagerClass extends IHMJobsManagerClass { | ||
106 | $running, $start, $result, $exitcode) | 108 | $running, $start, $result, $exitcode) |
107 | { | 109 | { |
108 | $res = $this->init(); | 110 | $res = $this->init(); |
111 | + | ||
109 | if (!$res['success']) | 112 | if (!$res['success']) |
110 | return $res; | 113 | return $res; |
114 | + | ||
111 | $key = WSInputOutputClass::getService(); | 115 | $key = WSInputOutputClass::getService(); |
112 | 116 | ||
113 | $newJob = $this->jobXml->createElement('job'); | 117 | $newJob = $this->jobXml->createElement('job'); |
@@ -118,13 +122,13 @@ class WSJobsManagerClass extends IHMJobsManagerClass { | @@ -118,13 +122,13 @@ class WSJobsManagerClass extends IHMJobsManagerClass { | ||
118 | switch ($key) | 122 | switch ($key) |
119 | { | 123 | { |
120 | case 'download' : | 124 | case 'download' : |
121 | - $name = "download_".time(); | ||
122 | - $info = ''; | ||
123 | - foreach ($obj->list as $param) | ||
124 | - { | ||
125 | - $info = $info.' '.$param->paramid; //data | ||
126 | - } | ||
127 | - break; | 125 | + $name = "download_".time(); |
126 | + $info = ''; | ||
127 | + foreach ($obj->list as $param) | ||
128 | + { | ||
129 | + $info .= ' '.$param->paramid; //data | ||
130 | + } | ||
131 | + break; | ||
128 | case 'plot' : | 132 | case 'plot' : |
129 | $name = "request_".time(); | 133 | $name = "request_".time(); |
130 | $info = ''; | 134 | $info = ''; |
@@ -140,16 +144,11 @@ class WSJobsManagerClass extends IHMJobsManagerClass { | @@ -140,16 +144,11 @@ class WSJobsManagerClass extends IHMJobsManagerClass { | ||
140 | } | 144 | } |
141 | 145 | ||
142 | $newJob->setAttribute('name', $name); | 146 | $newJob->setAttribute('name', $name); |
143 | - $newJob->setAttribute('info', $info); | ||
144 | - | ||
145 | - $newJob->setAttribute('folder', $folder); | ||
146 | - | 147 | + $newJob->setAttribute('info', $info); |
147 | $newJob->setAttribute('result', $result); | 148 | $newJob->setAttribute('result', $result); |
148 | - | 149 | + $newJob->setAttribute('folder', $folder); |
149 | $newJob->setAttribute('start', date('d-m-Y H:i:s', $start)); | 150 | $newJob->setAttribute('start', date('d-m-Y H:i:s', $start)); |
150 | 151 | ||
151 | - $newJob->setAttribute('result', $result); | ||
152 | - | ||
153 | //to know if know if it's an immediate job or not | 152 | //to know if know if it's an immediate job or not |
154 | $newJob->setAttribute('immediate', !$running); | 153 | $newJob->setAttribute('immediate', !$running); |
155 | 154 | ||
@@ -183,9 +182,7 @@ class WSJobsManagerClass extends IHMJobsManagerClass { | @@ -183,9 +182,7 @@ class WSJobsManagerClass extends IHMJobsManagerClass { | ||
183 | 182 | ||
184 | $this->saveRequestObjectFile($obj, $id); | 183 | $this->saveRequestObjectFile($obj, $id); |
185 | 184 | ||
186 | - $this->updateJobStatus($id, $running, $exitcode); | ||
187 | - | ||
188 | - return $this->getJobInfo($id); | 185 | + return $this->updateJobStatus($id, $running, $exitcode); |
189 | } | 186 | } |
190 | 187 | ||
191 | /* | 188 | /* |
@@ -222,7 +219,61 @@ class WSJobsManagerClass extends IHMJobsManagerClass { | @@ -222,7 +219,61 @@ class WSJobsManagerClass extends IHMJobsManagerClass { | ||
222 | 219 | ||
223 | return $this->getJobInfo($id); | 220 | return $this->getJobInfo($id); |
224 | } | 221 | } |
222 | + | ||
223 | + /* | ||
224 | + * @brief delete a job | ||
225 | + */ | ||
226 | + public function deleteJob($id) | ||
227 | + { | ||
228 | + $res = $this->init(); | ||
229 | + if (!$res['success']) | ||
230 | + return $res; | ||
231 | + | ||
232 | + $job = $this->jobXml->getElementById($id); | ||
233 | + | ||
234 | + //delete job | ||
235 | + if (!$job) | ||
236 | + return array('success' => false, 'message' => "Job not reachable"); | ||
237 | + | ||
238 | + $folder = $job->getAttribute('folder'); | ||
239 | + | ||
240 | + //be sure that it's an AMDA working dir before deletion... | ||
241 | + $fullFolderPath = IHMConfigClass::getRequestPath().$folder.'/'; | ||
242 | + | ||
243 | + if ((isset($folder)) && | ||
244 | + ($folder != "") && | ||
245 | + is_dir($fullFolderPath) && | ||
246 | + (preg_match("/DD[0-9A-Za-z]*_/",$folder) || | ||
247 | + preg_match("/Plot[0-9]*_/",$folder))) | ||
248 | + { | ||
249 | + foreach (glob($fullFolderPath.'*') as $filename) | ||
250 | + { | ||
251 | + if (is_dir($filename) && (basename($filename) == 'params')) | ||
252 | + { | ||
253 | + //recursive deletion only for "params" dir (a full recursive deletion is probably too dangerous...) | ||
254 | + foreach (glob($filename.'/*') as $paramname) | ||
255 | + unlink($paramname); | ||
256 | + rmdir($filename); | ||
257 | + } | ||
258 | + else | ||
259 | + unlink($filename); | ||
260 | + } | ||
261 | + rmdir($fullFolderPath); | ||
262 | + } | ||
263 | + | ||
264 | + $this->deleteRequestObjectFile($id); | ||
265 | + | ||
266 | +// $job->parentNode->removeChild($job); | ||
267 | +// $res = $this->jobXml->save($this->jobXmlName); | ||
225 | 268 | ||
269 | + if (!$res) | ||
270 | + return array( | ||
271 | + 'success' => false, | ||
272 | + 'message' => "Cannot save jobs file"); | ||
273 | + | ||
274 | + return array('success' => true, 'id' => $id); | ||
275 | + } | ||
276 | + | ||
226 | /* | 277 | /* |
227 | * @brief Get all jobs to clean (immediate result jobs) | 278 | * @brief Get all jobs to clean (immediate result jobs) |
228 | */ | 279 | */ |
src/InputOutput/WSImpl/WSInputOutputClass.php
@@ -40,7 +40,7 @@ class WSInputOutputClass extends IHMInputOutputClass | @@ -40,7 +40,7 @@ class WSInputOutputClass extends IHMInputOutputClass | ||
40 | } | 40 | } |
41 | break; | 41 | break; |
42 | case FunctionTypeEnumClass::PROCESSDELETE : | 42 | case FunctionTypeEnumClass::PROCESSDELETE : |
43 | - $this->inputOutput = new IHMInputOutputDeleteProcessClass(); | 43 | + $this->inputOutput = new WSInputOutputDeleteProcessClass(); |
44 | break; | 44 | break; |
45 | case FunctionTypeEnumClass::PROCESSRUNNINGINFO : | 45 | case FunctionTypeEnumClass::PROCESSRUNNINGINFO : |
46 | $this->inputOutput = new IHMInputOutputRunningInfoProcessClass(); | 46 | $this->inputOutput = new IHMInputOutputRunningInfoProcessClass(); |