Commit 1346266d4aa750fefbd1e44d4191a6265ee08c81

Authored by Elena.Budnik
1 parent 8b8f98e3

interin commit

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();