Commit 1346266d4aa750fefbd1e44d4191a6265ee08c81

Authored by Elena.Budnik
1 parent 8b8f98e3

interin commit

src/InputOutput/IHMImpl/Process/IHMInputOutputDeleteProcessClass.php
... ... @@ -7,7 +7,7 @@
7 7 */
8 8 class IHMInputOutputDeleteProcessClass implements InputOutputInterface
9 9 {
10   - private $jobsManager = null;
  10 + protected $jobsManager = null;
11 11 private $paramsData = null;
12 12  
13 13 /*
... ...
src/InputOutput/WSImpl/Config/WSConfigClass.php
... ... @@ -18,6 +18,13 @@ class WSConfigClass
18 18 private static $wsResultDir = "WSRESULT";
19 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 28 public static function getWsResultDir()
22 29 {
23 30 return IHMConfigClass::getDataDir().self::$wsResultDir.'/';
... ...
src/InputOutput/WSImpl/Params/DownloadImpl/WSInputOutputParamsDownloadClass.php
... ... @@ -66,8 +66,12 @@ class WSInputOutputParamsDownloadClass extends IHMInputOutputParamsAbstractClass
66 66 }
67 67  
68 68 //add params to output
  69 + $resultFile = "download";
  70 +
69 71 foreach ($input->list as $param)
70 72 {
  73 + $resultFile .= "_".$param->paramid;
  74 +
71 75 $paramInfo = $this->paramManager->addExistingParam($param->paramid, $this->paramsData, $param->template_args);
72 76 switch ($param->type) {
73 77 case 0:
... ... @@ -127,29 +131,30 @@ class WSInputOutputParamsDownloadClass extends IHMInputOutputParamsAbstractClass
127 131 else {
128 132 $downloadNode->setStructure(RequestOutputDownloadStructureEnum::ONE_FILE_PER_PARAMETER_PER_INTERVAL);
129 133 }
130   -
131   - $extension = "";
132   - $resultFilePrefix = "output-";
  134 +
133 135 switch ($input->compression)
134 136 {
135 137 case "1" :
136 138 $extension = $formatExtension.".gz";
137 139 $downloadNode->addPostProcessing(RequestOutputPostProcessingEnumClass::GZIP);
  140 + $resultFilePrefix = "download_";
138 141 break;
139 142 case "0" :
140 143 default :
141 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 153 $postProcessCmd = "mv ".$resultFilePrefix."*";
150 154  
151 155 $postProcessCmd .= $extension;
152   - $postProcessCmd .= " ".$resultFile.$extension;
  156 + $postProcessCmd .= " ".WSConfigClass::getWsResultDir().$resultFile.$extension;
  157 +
153 158 $this->paramsData->setPostCmd($postProcessCmd);
154 159  
155 160  
... ... @@ -180,7 +185,7 @@ class WSInputOutputParamsDownloadClass extends IHMInputOutputParamsAbstractClass
180 185 protected function addToJobsFile($data,$resultKey)
181 186 {
182 187 $waitingResult = $data->getWaitingResult($resultKey);
183   -
  188 +
184 189 return $this->jobsManager->addJob(
185 190 $this->input,
186 191 $data->getId(),
... ... @@ -188,7 +193,7 @@ class WSInputOutputParamsDownloadClass extends IHMInputOutputParamsAbstractClass
188 193 $data->getStatus() == ProcessStatusEnumClass::RUNNING,
189 194 $data->getStart(),
190 195 $waitingResult,
191   - $data->getErrorCode());
  196 + $data->getErrorCode());
192 197 }
193 198  
194 199 /*
... ... @@ -207,11 +212,6 @@ class WSInputOutputParamsDownloadClass extends IHMInputOutputParamsAbstractClass
207 212 case ProcessStatusEnumClass::RUNNING :
208 213 case ProcessStatusEnumClass::DONE :
209 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 215 default :
216 216 return array(
217 217 'success' => false,
... ...
src/InputOutput/WSImpl/Process/WSInputOutputDeleteProcessClass.php 0 โ†’ 100644
... ... @@ -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 67 \ No newline at end of file
... ...
src/InputOutput/WSImpl/Process/WSInputOutputGetInfoProcessClass.php
... ... @@ -63,9 +63,6 @@ class WSInputOutputGetInfoProcessClass extends IHMInputOutputGetInfoProcessClass
63 63 'success' => false,
64 64 'message' => $data->getLastErrorMessage());
65 65 }
66   -
67   - $r = print_r($jobInfo,true);
68   - error_log($r,1,email);
69 66 return $jobInfo;
70 67 }
71 68 }
... ...
src/InputOutput/WSImpl/Tools/WSJobsManagerClass.php
... ... @@ -72,12 +72,14 @@ class WSJobsManagerClass extends IHMJobsManagerClass {
72 72 $request_obj = $this->getRequestObjectFile($id);
73 73 if (isset($request_obj))
74 74 {
75   - if (isset($request_obj->format))
  75 + if (isset($request_obj->fileformat))
76 76 {
77 77 $format = strtolower($request_obj->format);
78 78 if (($format == "pdf") || ($format == "ps"))
79 79 //auto compression for plot request
80 80 $compression = ".tar.gz";
  81 +
  82 + // if ($format == "ascii") $format = 'txt';
81 83 }
82 84 if (isset($request_obj->compression))
83 85 $compression = strtolower($request_obj->compression);
... ... @@ -106,8 +108,10 @@ class WSJobsManagerClass extends IHMJobsManagerClass {
106 108 $running, $start, $result, $exitcode)
107 109 {
108 110 $res = $this->init();
  111 +
109 112 if (!$res['success'])
110 113 return $res;
  114 +
111 115 $key = WSInputOutputClass::getService();
112 116  
113 117 $newJob = $this->jobXml->createElement('job');
... ... @@ -118,13 +122,13 @@ class WSJobsManagerClass extends IHMJobsManagerClass {
118 122 switch ($key)
119 123 {
120 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 132 case 'plot' :
129 133 $name = "request_".time();
130 134 $info = '';
... ... @@ -140,16 +144,11 @@ class WSJobsManagerClass extends IHMJobsManagerClass {
140 144 }
141 145  
142 146 $newJob->setAttribute('name', $name);
143   - $newJob->setAttribute('info', $info);
144   -
145   - $newJob->setAttribute('folder', $folder);
146   -
  147 + $newJob->setAttribute('info', $info);
147 148 $newJob->setAttribute('result', $result);
148   -
  149 + $newJob->setAttribute('folder', $folder);
149 150 $newJob->setAttribute('start', date('d-m-Y H:i:s', $start));
150 151  
151   - $newJob->setAttribute('result', $result);
152   -
153 152 //to know if know if it's an immediate job or not
154 153 $newJob->setAttribute('immediate', !$running);
155 154  
... ... @@ -183,9 +182,7 @@ class WSJobsManagerClass extends IHMJobsManagerClass {
183 182  
184 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 219  
223 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 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 40 }
41 41 break;
42 42 case FunctionTypeEnumClass::PROCESSDELETE :
43   - $this->inputOutput = new IHMInputOutputDeleteProcessClass();
  43 + $this->inputOutput = new WSInputOutputDeleteProcessClass();
44 44 break;
45 45 case FunctionTypeEnumClass::PROCESSRUNNINGINFO :
46 46 $this->inputOutput = new IHMInputOutputRunningInfoProcessClass();
... ...