Commit 22baa1be13d85dab5326861d9e2820ee0f9ffa6b

Authored by Benjamin Renard
1 parent e5e0bb74
Exists in mlplasmas and in 1 other branch cu2022

COnfig for orchestra

config/AMDAIntegrationConfig.php
... ... @@ -40,6 +40,10 @@ define('TOOLS_BASE_DIR', $config['TOOLS_BASE_DIR']);
40 40 define('KERNEL_BUILD_TYPE', $config['KERNEL_BUILD_TYPE']);
41 41 define('AMDA_KERNEL_DIR', $config['AMDA_KERNEL_DIR']);
42 42 define('IHM_SRC_DIR', $config['IHM_SRC_DIR']);
  43 +define('ORCHESTRA_HOST', $config['ORCHESTRA_HOST']);
  44 +define('ORCHESTRA_PORT', $config['ORCHESTRA_PORT']);
  45 +define('ORCHESTRA_ADMIN_IPS', $config['ORCHESTRA_ADMIN_IPS']);
  46 +
43 47  
44 48 define('GCC_BASE_DIR', TOOLS_BASE_DIR.'/gcc/4.7.2/rtf');
45 49 define('BOOST_BASE_DIR', TOOLS_BASE_DIR.'/gcc/4.7.2/boost');
... ...
config/current.env.template
... ... @@ -16,3 +16,7 @@ AMDA_KERNEL_DIR='{:AMDA_KERNEL_DIR:}'
16 16 ;Path to AMDA_IHM base dir
17 17 IHM_SRC_DIR='{:IHM_SRC_DIR:}'
18 18  
  19 +;Config for ORCHESTRA
  20 +ORCHESTRA_HOST='{:ORCHESTRA_HOST:}'
  21 +ORCHESTRA_PORT='{:ORCHESTRA_PORT:}'
  22 +ORCHESTRA_ADMIN_IPS='{:ORCHESTRA_ADMIN_IPS:}'
19 23 \ No newline at end of file
... ...
src/InputOutput/IHMImpl/MachineLearning/IHMMachineLearningClass.php
... ... @@ -31,11 +31,12 @@ class IHMMachineLearningClass implements InputOutputInterface
31 31  
32 32  
33 33 $processData = new OrchestraRequestDataClass();
34   - $processData->setHost('http://172.17.0.1');
35   - $processData->setPort('5000');
36 34 $processData->setBatchEnable(FALSE);
37 35  
38 36 switch ($input->mode) {
  37 + case 'configinfo':
  38 + $processData->setRequestType(OrchestraRequestTypeEnum::CONFIGINFO);
  39 + break;
39 40 case 'moduleslist':
40 41 $processData->setRequestType(OrchestraRequestTypeEnum::MODULESLIST);
41 42 break;
... ... @@ -144,7 +145,7 @@ class IHMMachineLearningClass implements InputOutputInterface
144 145 case ProcessStatusEnumClass::ERROR :
145 146 case ProcessStatusEnumClass::RUNNING :
146 147 case ProcessStatusEnumClass::DONE :
147   - return $this->jobsManager->addJob(
  148 + return $this->jobsManager->addJob(
148 149 $this->input,
149 150 $data->getId(),
150 151 $this->workingDirName,
... ... @@ -153,11 +154,11 @@ class IHMMachineLearningClass implements InputOutputInterface
153 154 $data->getOrchestraResult(),
154 155 $data->getErrorCode(),
155 156 $data->getExecTime());
156   - default :
157   - return array(
158   - 'success' => false,
159   - 'message' => 'Unknown Process Status');
160   - }
  157 + default :
  158 + return array(
  159 + 'success' => false,
  160 + 'message' => 'Unknown Process Status');
  161 + }
161 162 }
162 163 }
163 164  
... ...
src/InputOutput/IHMImpl/Process/IHMInputOutputGetInfoProcessClass.php
1   -<?php
2   -
3   -/**
4   - * @class IHMInputOutputGetInfoProcessClass
5   - * @brief Class that's implement an InputOutputInterface used to treat a get info process request
6   - * @details
7   - */
  1 +<?php
  2 +
  3 +/**
  4 + * @class IHMInputOutputGetInfoProcessClass
  5 + * @brief Class that's implement an InputOutputInterface used to treat a get info process request
  6 + * @details
  7 + */
8 8 class IHMInputOutputGetInfoProcessClass implements InputOutputInterface
9 9 {
10 10 protected $jobsManager = null;
11 11 protected $paramsData = null;
12   -
13   - /*
14   - * @brief Constructor
  12 +
  13 + /*
  14 + * @brief Constructor
15 15 */
16 16 function __construct()
17 17 {
18 18 $this->jobsManager = new IHMJobsManagerClass();
19 19 }
20   -
21   - /*
22   - * @brief translate input data from IHM client to AMDA_Integration module for a get info process request
  20 +
  21 + /*
  22 + * @brief translate input data from IHM client to AMDA_Integration module for a get info process request
23 23 */
24 24 public function getInputData($input,$function,$requestId="")
25 25 {
... ... @@ -36,9 +36,9 @@ class IHMInputOutputGetInfoProcessClass implements InputOutputInterface
36 36  
37 37 return $this->paramsData;
38 38 }
39   -
40   - /*
41   - * @brief translate output data from AMDA_Integration module to IHM client for a get info process request
  39 +
  40 + /*
  41 + * @brief translate output data from AMDA_Integration module to IHM client for a get info process request
42 42 */
43 43 public function getOutput($data)
44 44 {
... ...
src/Request/Config/OrchestraConfigClass.php 0 โ†’ 100644
... ... @@ -0,0 +1,32 @@
  1 +<?php
  2 +
  3 +/**
  4 + * @class OrchestraConfigClass
  5 + * @brief Class that's contain all specific configuration of the orchestra module
  6 + * @details
  7 + */
  8 +class OrchestraConfigClass
  9 +{
  10 + public static function getHost()
  11 + {
  12 + if (defined('ORCHESTRA_HOST'))
  13 + return ORCHESTRA_HOST;
  14 + return "";
  15 + }
  16 +
  17 + public static function getPort()
  18 + {
  19 + if (defined('ORCHESTRA_PORT'))
  20 + return ORCHESTRA_PORT;
  21 + return "";
  22 + }
  23 +
  24 + public static function getAdminIps()
  25 + {
  26 + if (defined('ORCHESTRA_ADMIN_IPS'))
  27 + return explode(',', ORCHESTRA_ADMIN_IPS);
  28 + return array();
  29 + }
  30 +}
  31 +
  32 +?>
... ...
src/Request/OrchestraRequestImpl/OrchestraRequestClass.php
... ... @@ -6,6 +6,9 @@
6 6 */
7 7 class OrchestraRequestClass extends ProcessRequestClass
8 8 {
  9 + private $host = "";
  10 + private $port = "";
  11 +
9 12 /*
10 13 * @brief Init a process request of type "run"
11 14 */
... ... @@ -14,10 +17,36 @@ class OrchestraRequestClass extends ProcessRequestClass
14 17 if (!isset($this->requestData))
15 18 return false;
16 19  
17   - $orchestraClient = new OrchestraClient($this->requestData->getHost().":".$this->requestData->getPort());
  20 + $this->host = OrchestraConfigClass::getHost();
  21 + $this->port = OrchestraConfigClass::getPort();
  22 + if (empty($this->host)) {
  23 + $this->requestData->setLastErrorMessage('Missing orchestra host definition');
  24 + return false;
  25 + }
  26 + $orchestraEntryPoint = $this->host;
  27 + if (!empty($this->port)) {
  28 + $orchestraEntryPoint .= ":".$this->port;
  29 + }
  30 +
  31 + $orchestraClient = new OrchestraClient($orchestraEntryPoint);
18 32  
19 33 $params = $this->requestData->getParams();
20 34 switch ($this->requestData->getRequestType()) {
  35 + case OrchestraRequestTypeEnum::CONFIGINFO:
  36 + if (in_array(getenv("REMOTE_ADDR"), OrchestraConfigClass::getAdminIps())) {
  37 + $result = array(
  38 + 'success' => TRUE,
  39 + 'entrypoint' => $orchestraEntryPoint
  40 + );
  41 + }
  42 + else {
  43 + $result = array(
  44 + 'success' => FALSE,
  45 + 'message' => 'Forbidden'
  46 + );
  47 + }
  48 + $this->requestData->setOrchestraResult($result);
  49 + break;
21 50 case OrchestraRequestTypeEnum::MODULESLIST:
22 51 $result = $orchestraClient->getModules();
23 52 $this->requestData->setOrchestraResult($result);
... ... @@ -77,7 +106,7 @@ class OrchestraRequestClass extends ProcessRequestClass
77 106 // Generate a PHP script to run request (to be able to "detach" process for the batch mode)
78 107 $php_script = '<?php'.PHP_EOL;
79 108 $php_script .= 'require_once("'.$clientPath.'");'.PHP_EOL;
80   - $php_script .= '$client = new OrchestraClient("'.$this->requestData->getHost().':'.$this->requestData->getPort().'");'.PHP_EOL;
  109 + $php_script .= '$client = new OrchestraClient("'.$this->host.':'.$this->port.'");'.PHP_EOL;
81 110 $php_script .= '$params = array(';
82 111 $first_param = TRUE;
83 112 foreach ($params as $key => $value) {
... ...
src/Request/OrchestraRequestImpl/OrchestraRequestDataClass.php
... ... @@ -3,10 +3,11 @@
3 3 abstract class OrchestraRequestTypeEnum
4 4 {
5 5 const UNKNOWN = "";
  6 + const CONFIGINFO = "CONFIGINFO";
6 7 const MODULESLIST = "MODULESLIST";
7   - const MODULEINFO = "MODULEINFO";
8   - const PREDICTION = "PREDICTION";
9   - const FITTING = "FITTING";
  8 + const MODULEINFO = "MODULEINFO";
  9 + const PREDICTION = "PREDICTION";
  10 + const FITTING = "FITTING";
10 11 const GETRESULT = "GETRESULT";
11 12 }
12 13  
... ... @@ -17,32 +18,10 @@ abstract class OrchestraRequestTypeEnum
17 18 */
18 19 class OrchestraRequestDataClass extends ProcessRequestDataClass
19 20 {
20   - private $host = "http://127.0.0.1";
21   - private $port = "5000";
22 21 private $type = OrchestraRequestTypeEnum::UNKNOWN;
23 22 private $params = array();
24 23 private $orchestraResult = NULL;
25 24  
26   - public function getHost()
27   - {
28   - return $this->host;
29   - }
30   -
31   - public function setHost($host)
32   - {
33   - $this->host = $host;
34   - }
35   -
36   - public function getPort()
37   - {
38   - return $this->port;
39   - }
40   -
41   - public function setPort($port)
42   - {
43   - $this->port = $port;
44   - }
45   -
46 25 public function getRequestType()
47 26 {
48 27 return $this->type;
... ...