Commit d4071e275c5fc8d4c58454556ef4fd31f461541d

Authored by Elena.Budnik
1 parent 0ec21281

makeProxy with env set

src/REMOTEDATA/CDAWEB.php
@@ -24,9 +24,8 @@ class CDAWEB extends RemoteDataCenterClass @@ -24,9 +24,8 @@ class CDAWEB extends RemoteDataCenterClass
24 // FOR INFO : Excluded automatically 24 // FOR INFO : Excluded automatically
25 private $excludeDatasets = ["DMSP_R0_SSJ4", "DMSP_R0_SSIES", "I7_R0_LEPEDEA", "I8_R0_LEPEDEA" ]; 25 private $excludeDatasets = ["DMSP_R0_SSJ4", "DMSP_R0_SSIES", "I7_R0_LEPEDEA", "I8_R0_LEPEDEA" ];
26 26
27 - private $DDserverXml, $DDserverXmlName, $DDserverDir; 27 + protected $DDserverXml, $DDserverXmlName;
28 28
29 - public $dir;  
30 29
31 public function html_encode($param) 30 public function html_encode($param)
32 { 31 {
@@ -44,7 +43,7 @@ class CDAWEB extends RemoteDataCenterClass @@ -44,7 +43,7 @@ class CDAWEB extends RemoteDataCenterClass
44 { 43 {
45 $this->ch = curl_init(); 44 $this->ch = curl_init();
46 curl_setopt($this->ch, CURLOPT_RETURNTRANSFER, 1); 45 curl_setopt($this->ch, CURLOPT_RETURNTRANSFER, 1);
47 - curl_setopt($this->ch, CURLOPT_TIMEOUT, 60); 46 + curl_setopt($this->ch, CURLOPT_TIMEOUT, 60);
48 } 47 }
49 48
50 private function closeConnection() 49 private function closeConnection()
@@ -52,33 +51,16 @@ class CDAWEB extends RemoteDataCenterClass @@ -52,33 +51,16 @@ class CDAWEB extends RemoteDataCenterClass
52 curl_close($this->ch); 51 curl_close($this->ch);
53 } 52 }
54 53
55 - public function initProxy()  
56 - {  
57 - $this->dir = getenv("DDBASE")."/../INFO";  
58 - define('RemoteData', $this->dir."/bases/");  
59 -  
60 - // if (!is_dir(RemoteData)) mkdir(RemoteData, 0755, true);  
61 - if (!is_dir($this->dir."/bases/".$this->baseID))  
62 - mkdir($this->dir."/bases/".$this->baseID, 0755, true);  
63 -  
64 - $this->DDserverDir = $this->dir."/DDServer/".$this->baseID;  
65 -  
66 - if (!is_dir($this->DDserverDir))  
67 - mkdir($this->DDserverDir, 0755, true);  
68 -  
69 - $this->init();  
70 -  
71 - $this->getRemoteTree();  
72 - }  
73 -  
74 protected function setDataViewURL() 54 protected function setDataViewURL()
75 { 55 {
76 curl_setopt($this->ch, CURLOPT_URL, CDAWebConfigClass::$restUrl."/dataviews"); 56 curl_setopt($this->ch, CURLOPT_URL, CDAWebConfigClass::$restUrl."/dataviews");
  57 +
77 $this->res = new DomDocument(); 58 $this->res = new DomDocument();
78 $this->res->loadXML(curl_exec($this->ch)); 59 $this->res->loadXML(curl_exec($this->ch));
79 $this->dataViewURL = $this->res->getElementsByTagName('EndpointAddress')->item(0)->nodeValue; 60 $this->dataViewURL = $this->res->getElementsByTagName('EndpointAddress')->item(0)->nodeValue;
80 } 61 }
81 - 62 +
  63 + // Using CDAS REST APIs get all CDAWEB dataset descriptions
82 protected function getRemoteTree() 64 protected function getRemoteTree()
83 { 65 {
84 $this->openConnection(); 66 $this->openConnection();
@@ -380,7 +362,7 @@ class CDAWEB extends RemoteDataCenterClass @@ -380,7 +362,7 @@ class CDAWEB extends RemoteDataCenterClass
380 362
381 $obj = json_decode(curl_exec($this->ch)); 363 $obj = json_decode(curl_exec($this->ch));
382 $parameters = $obj->VariableDescription; 364 $parameters = $obj->VariableDescription;
383 - 365 +
384 $paramNodes = array(); 366 $paramNodes = array();
385 367
386 foreach ($parameters as $param) 368 foreach ($parameters as $param)
@@ -442,15 +424,18 @@ class CDAWEB extends RemoteDataCenterClass @@ -442,15 +424,18 @@ class CDAWEB extends RemoteDataCenterClass
442 return $sampling; 424 return $sampling;
443 } 425 }
444 426
  427 + // Get IDs and SPASE URLs of all CDAWEB SPASE-defined datasets
445 protected function getAllSpaseDatasets() 428 protected function getAllSpaseDatasets()
446 { 429 {
447 require_once "simple_html_dom.php"; 430 require_once "simple_html_dom.php";
448 431
449 - if (file_exists("NumericalData.html")) rename("NumericalData.html","NumericalData.html.bak");  
450 - // exec("wget -O NumericalData.html ".CDAWebConfigClass::$spaseRegistry);  
451 - //TODO errors  
452 - copy(CDAWebConfigClass::$spaseRegistry, "NumericalData.html"); 432 + if (file_exists("NumericalData.html"))
  433 + rename("NumericalData.html","NumericalData.html.bak");
453 434
  435 + // if cannot reach CDAWEB Spase Registry use an old file
  436 + if (!copy(CDAWebConfigClass::$spaseRegistry, "NumericalData.html"))
  437 + copy("NumericalData.html.bak", "NumericalData.html");
  438 +
454 $html = file_get_html('NumericalData.html'); 439 $html = file_get_html('NumericalData.html');
455 $ids = $html->find('td[class="Spase.URL.ProductID"]'); 440 $ids = $html->find('td[class="Spase.URL.ProductID"]');
456 441
@@ -461,7 +446,7 @@ class CDAWEB extends RemoteDataCenterClass @@ -461,7 +446,7 @@ class CDAWEB extends RemoteDataCenterClass
461 $this->CDAWEB[$key[0]->innertext] = $ref[0]->innertext; 446 $this->CDAWEB[$key[0]->innertext] = $ref[0]->innertext;
462 } 447 }
463 448
464 - echo count($this->CDAWEB).PHP_EOL; 449 + echo "SPASE-defined CDAWEB datasets : ".count($this->CDAWEB).PHP_EOL;
465 } 450 }
466 451
467 protected function initDDServerXml($ds, $ins, $obs) 452 protected function initDDServerXml($ds, $ins, $obs)
src/REMOTEDATA/RemoteDataCenterClass.php
@@ -14,10 +14,10 @@ abstract class RemoteDataCenterClass @@ -14,10 +14,10 @@ abstract class RemoteDataCenterClass
14 public $domAmda = null, $dataCenter = null; 14 public $domAmda = null, $dataCenter = null;
15 public $domAmdaName = "base.xml"; 15 public $domAmdaName = "base.xml";
16 public $additionalArgs = null; 16 public $additionalArgs = null;
17 - public $templateFile, $plotSettings;  
18 public $baseID = null; 17 public $baseID = null;
19 18
20 public $tree = null; 19 public $tree = null;
  20 + protected $DDserverDir;
21 21
22 public static $MAX_NAME_LENGTH = 31; 22 public static $MAX_NAME_LENGTH = 31;
23 public static $MAX_VI_NAME_LENGTH = 16; 23 public static $MAX_VI_NAME_LENGTH = 16;
@@ -27,20 +27,20 @@ abstract class RemoteDataCenterClass @@ -27,20 +27,20 @@ abstract class RemoteDataCenterClass
27 */ 27 */
28 function __construct() 28 function __construct()
29 { 29 {
30 - $this->baseID = get_class($this);  
31 - $this->templateFile = $this->baseID."_Templates.xml";  
32 - $this->plotSettings = $this->baseID."_PlotSettings.xml"; 30 + $this->baseID = get_class($this);
33 } 31 }
34 32
35 public function param2dd($paramID) 33 public function param2dd($paramID)
36 { 34 {
37 - $pairs = array(" " => "_","-" => "_","/" => "_","%" => "_","\\" => "_","$" => "_",":" => "_","+" =>"_","#" => "_","@" => "_","." => "_", ">" => "_", "<" => "_", "," => "_", ")" => "", "(" => "_"); 35 + $pairs = array(" " => "_","-" => "_","/" => "_","%" => "_","\\" => "_","$" => "_",":" => "_","+" =>"_","#" => "_",
  36 + "@" => "_","." => "_", ">" => "_", "<" => "_", "," => "_", ")" => "", "(" => "_");
  37 +
38 return strtr($paramID,$pairs); 38 return strtr($paramID,$pairs);
39 } 39 }
40 40
41 public function saveProxy() 41 public function saveProxy()
42 { 42 {
43 - $this->domAmda->save(RemoteData.$this->baseID."/".$this->domAmdaName); 43 + $this->domAmda->save(RemoteData."/bases/".$this->baseID."/".$this->domAmdaName);
44 } 44 }
45 45
46 abstract public function init(); 46 abstract public function init();
@@ -51,18 +51,23 @@ abstract class RemoteDataCenterClass @@ -51,18 +51,23 @@ abstract class RemoteDataCenterClass
51 // abstract public function getDatasetInfo($ds); 51 // abstract public function getDatasetInfo($ds);
52 // abstract public function getData($ds, $start, $stop); 52 // abstract public function getData($ds, $start, $stop);
53 // abstract protected function convert2nc(); 53 // abstract protected function convert2nc();
54 -// abstract protected function createDatasetNodes();  
55 -// abstract protected function createParameterNodes();  
56 -// abstract protected function createDatasetGroupNodes($data); 54 +// abstract protected function createDatasetNodes();
  55 +// abstract protected function createParameterNodes();
  56 +// abstract protected function createDatasetGroupNodes($data);
57 57
58 public function initProxy() 58 public function initProxy()
59 { 59 {
60 - if (!is_dir(RemoteData.$this->baseID))  
61 - mkdir(RemoteData.$this->baseID);  
62 -  
63 - chmod(RemoteData.$this->baseID,0775); 60 + if (!is_dir(RemoteData."/bases/".$this->baseID))
  61 + mkdir(RemoteData."/bases/".$this->baseID, 0755, true);
  62 +
  63 + $this->DDserverDir = RemoteData."/DDServer/".$this->baseID;
  64 +
  65 + if (!is_dir($this->DDserverDir))
  66 + mkdir($this->DDserverDir, 0755, true);
  67 +
  68 + $this->init();
64 69
65 - $this->getRemoteTree(); 70 + $this->getRemoteTree();
66 } 71 }
67 72
68 public function makeProxy() 73 public function makeProxy()
src/REMOTEDATA/makeProxy.php
@@ -12,24 +12,41 @@ @@ -12,24 +12,41 @@
12 putenv("LD_LIBRARY_PATH=".getenv("LD_LIBRARY_PATH")); 12 putenv("LD_LIBRARY_PATH=".getenv("LD_LIBRARY_PATH"));
13 putenv("PATH=./:".getenv("DDBASEBIN").":/bin:/usr/bin"); 13 putenv("PATH=./:".getenv("DDBASEBIN").":/bin:/usr/bin");
14 set_include_path("./:".getenv("DATAMANAGER").":".getenv("REMOTEDATA").":".getenv("CALLEXT")); 14 set_include_path("./:".getenv("DATAMANAGER").":".getenv("REMOTEDATA").":".getenv("CALLEXT"));
  15 +
  16 + $LOGDIR = getenv("DDBASE")."/../LOG";
  17 + if (!is_dir($LOGDIR))
  18 + mkdir($LOGDIR, 0755, true);
  19 +
  20 + define("log",$LOGDIR."/ProxyCreate.log");
  21 + define("err",$LOGDIR."/ProxyCreate.err");
  22 +
  23 + if (file_exists(log)) unlink(log);
  24 + if (file_exists(err)) unlink(err);
15 25
16 -// if (! file_exists(DATAPATH."/RemoteData/Bases.xml"))  
17 -// exit('No Bases.xml file'.PHP_EOL);  
18 -//  
19 -// $basesDom->load(DATAPATH."/RemoteData/Bases.xml");  
20 -//  
21 -// $bases = $basesDom->getElementsByTagName("dataCenter"); 26 + define('RemoteData', getenv("DDBASE")."/../INFO");
22 27
  28 + if (!file_exists(RemoteData."/Bases.xml"))
  29 + exit('No Bases.xml'.PHP_EOL);
  30 +
  31 + $basesDom = new DomDocument("1.0");
  32 + if (!$basesDom->load(RemoteData."/Bases.xml"))
  33 + exit('Cannot load Bases.xml'.PHP_EOL);
  34 +
  35 + $bases = $basesDom->getElementsByTagName("dataCenter");
  36 + if ($bases->length == 0)
  37 + exit('No Bases'.PHP_EOL);
23 38
24 - $bases = array("CDAWEB"); 39 +// $bases = array("CDAWEB");
25 $useSpase = true; 40 $useSpase = true;
26 41
27 foreach ($bases as $base) 42 foreach ($bases as $base)
28 - {  
29 -  
30 - // $class = $base->getAttribute('xml:id');  
31 - echo PHP_EOL.$base.PHP_EOL;  
32 - $center = new $base(); 43 + {
  44 + // isSimulation -> proxy is being made at AMDA
  45 + if ($base->hasAttribute("isSimulation"))
  46 + continue;
  47 + $class = $base->getAttribute('xml:id');
  48 + echo PHP_EOL.$class.PHP_EOL;
  49 + $center = new $class();
33 // if ($center->monitor()) 50 // if ($center->monitor())
34 // { 51 // {
35 $center->initProxy(); 52 $center->initProxy();