Exemplo n.º 1
0
 public function statusAction()
 {
     $moduleParams['rabbitmq']['status'] = '';
     $moduleParams['rabbitmq']['showSetup'] = false;
     $moduleParams['rabbitmq']['showStatusLabel'] = true;
     $dbFarmRole = $this->getFarmRole();
     $cpUrl = $dbFarmRole->GetSetting(Scalr_Role_Behavior_RabbitMQ::ROLE_CP_URL);
     if ($cpUrl) {
         $serverId = $dbFarmRole->GetSetting(Scalr_Role_Behavior_RabbitMQ::ROLE_CP_SERVER_ID);
         try {
             $dbServer = DBServer::LoadByID($serverId);
             if ($dbServer->status == SERVER_STATUS::RUNNING) {
                 $moduleParams['rabbitmq']['username'] = '******';
                 $moduleParams['rabbitmq']['password'] = $dbFarmRole->GetSetting(Scalr_Role_Behavior_RabbitMQ::ROLE_PASSWORD);
                 $moduleParams['rabbitmq']['url'] = $cpUrl;
                 $url = str_replace('/mgmt/', '/api/overview', $moduleParams['rabbitmq']['url']);
                 $httpRequest = new Request();
                 $httpRequest->setRequestUrl($url);
                 $httpRequest->setOptions(array('redirect' => 5, 'timeout' => 30, 'connecttimeout' => 10));
                 $httpRequest->setHeaders(array('Authorization' => 'Basic ' . base64_encode($moduleParams['rabbitmq']['username'] . ':' . $moduleParams['rabbitmq']['password'])));
                 $response = \Scalr::getContainer()->http->sendRequest($httpRequest);
                 $data = $response->getBody()->toString();
                 $result = json_decode($data, true);
                 if ($result) {
                     $moduleParams['rabbitmq']['overview'] = $result;
                 }
             } else {
                 throw new \Scalr\Exception\ServerNotFoundException();
             }
         } catch (\Scalr\Exception\ServerNotFoundException $e) {
             $moduleParams['rabbitmq']['status'] = 'Control panel was installed, but server not found';
             $moduleParams['rabbitmq']['showSetup'] = true;
             $dbFarmRole->ClearSettings('rabbitmq.cp');
         } catch (Exception $e) {
             if (isset($e->innerException)) {
                 $msg = $e->innerException->getMessage();
             } else {
                 $msg = $e->getMessage();
             }
             $moduleParams['rabbitmq']['status'] = "Error retrieving information about control panel: \"{$msg}\"";
         }
     } else {
         if ($dbFarmRole->GetSetting(Scalr_Role_Behavior_RabbitMQ::ROLE_CP_REQUESTED) == '1') {
             if ($dbFarmRole->GetSetting(Scalr_Role_Behavior_RabbitMQ::ROLE_CP_ERROR_MSG)) {
                 $moduleParams['rabbitmq']['showSetup'] = true;
                 $moduleParams['rabbitmq']['status'] = "Server return error: \"{$dbFarmRole->GetSetting(Scalr_Role_Behavior_RabbitMQ::ROLE_CP_ERROR_MSG)}\"";
             } else {
                 if ($dbFarmRole->GetSetting(Scalr_Role_Behavior_RabbitMQ::ROLE_CP_REQUEST_TIME) > time() - self::REQUEST_TIMEOUT) {
                     $moduleParams['rabbitmq']['status'] = "Request was sent at " . Scalr_Util_DateTime::convertTz((int) $dbFarmRole->GetSetting(Scalr_Role_Behavior_RabbitMQ::ROLE_CP_REQUEST_TIME)) . ". Please wait...";
                 } else {
                     $moduleParams['rabbitmq']['showSetup'] = true;
                     $moduleParams['rabbitmq']['status'] = "Request timeout exceeded. Request was sent at " . Scalr_Util_DateTime::convertTz((int) $dbFarmRole->GetSetting(Scalr_Role_Behavior_RabbitMQ::ROLE_CP_REQUEST_TIME));
                 }
             }
         } else {
             if ($dbFarmRole->GetSetting(Scalr_Role_Behavior_RabbitMQ::ROLE_PASSWORD)) {
                 $moduleParams['rabbitmq']['showSetup'] = true;
             } else {
                 $moduleParams['rabbitmq']['status'] = 'Rabbitmq cluster not initialized yet. Please wait ...';
                 $moduleParams['rabbitmq']['showStatusLabel'] = false;
             }
         }
     }
     $moduleParams['farmId'] = $dbFarmRole->FarmID;
     $moduleParams['rabbitmq']['password'] = $dbFarmRole->GetSetting(Scalr_Role_Behavior_RabbitMQ::ROLE_PASSWORD);
     $this->response->page('ui/services/rabbitmq/status.js', $moduleParams);
 }
Exemplo n.º 2
0
 /**
  * Returns page with RabbitMQ role status
  *
  * @param  int $farmId     Identifier of the Farm
  * @param  int $farmRoleId optional Identifier of the FarmRole
  */
 public function statusAction($farmId, $farmRoleId = null)
 {
     $dbFarm = DBFarm::LoadByID($farmId);
     $this->user->getPermissions()->validate($dbFarm);
     $list = [];
     foreach ($dbFarm->GetFarmRoles() as $dbFarmRole) {
         if (!$dbFarmRole->GetRoleObject()->hasBehavior(ROLE_BEHAVIORS::RABBITMQ)) {
             continue;
         }
         $farmRole = ['id' => $dbFarmRole->ID, 'alias' => $dbFarmRole->Alias];
         if (empty($farmRoleId) && empty($list) || $dbFarmRole->ID == $farmRoleId) {
             $rabbitmq = [];
             $rabbitmq['status'] = '';
             $rabbitmq['showSetup'] = false;
             $rabbitmq['showStatusLabel'] = true;
             $cpUrl = $dbFarmRole->GetSetting(Scalr_Role_Behavior_RabbitMQ::ROLE_CP_URL);
             if ($cpUrl) {
                 $serverId = $dbFarmRole->GetSetting(Scalr_Role_Behavior_RabbitMQ::ROLE_CP_SERVER_ID);
                 try {
                     $dbServer = DBServer::LoadByID($serverId);
                     if ($dbServer->status == SERVER_STATUS::RUNNING) {
                         $rabbitmq['username'] = '******';
                         $rabbitmq['password'] = $dbFarmRole->GetSetting(Scalr_Role_Behavior_RabbitMQ::ROLE_PASSWORD);
                         $rabbitmq['url'] = $cpUrl;
                         $url = str_replace('/mgmt/', '/api/overview', $rabbitmq['url']);
                         $httpRequest = new Request();
                         $httpRequest->setRequestMethod('GET');
                         $httpRequest->setRequestUrl($url);
                         $httpRequest->setOptions(['redirect' => 5, 'timeout' => 30, 'connecttimeout' => 10]);
                         $httpRequest->setHeaders(array('Authorization' => 'Basic ' . base64_encode($rabbitmq['username'] . ':' . $rabbitmq['password'])));
                         $response = \Scalr::getContainer()->http->sendRequest($httpRequest);
                         $data = $response->getBody()->toString();
                         $result = json_decode($data, true);
                         if ($result) {
                             $rabbitmq['overview'] = $result;
                         }
                     } else {
                         throw new \Scalr\Exception\ServerNotFoundException();
                     }
                 } catch (\Scalr\Exception\ServerNotFoundException $e) {
                     $rabbitmq['status'] = "Control panel was installed, however server wasn't found";
                     $rabbitmq['showSetup'] = true;
                     $dbFarmRole->ClearSettings('rabbitmq.cp');
                 } catch (Exception $e) {
                     if (isset($e->innerException)) {
                         $msg = $e->innerException->getMessage();
                     } else {
                         $msg = $e->getMessage();
                     }
                     $rabbitmq['status'] = "Error retrieving information about control panel: \"{$msg}\"";
                 }
             } else {
                 if ($dbFarmRole->GetSetting(Scalr_Role_Behavior_RabbitMQ::ROLE_CP_REQUESTED) == '1') {
                     if ($dbFarmRole->GetSetting(Scalr_Role_Behavior_RabbitMQ::ROLE_CP_ERROR_MSG)) {
                         $rabbitmq['showSetup'] = true;
                         $rabbitmq['status'] = 'Server returned error: "' . $dbFarmRole->GetSetting(Scalr_Role_Behavior_RabbitMQ::ROLE_CP_ERROR_MSG) . '"';
                     } else {
                         if ($dbFarmRole->GetSetting(Scalr_Role_Behavior_RabbitMQ::ROLE_CP_REQUEST_TIME) > time() - self::REQUEST_TIMEOUT) {
                             $rabbitmq['status'] = "Request was sent at " . Scalr_Util_DateTime::convertTz((int) $dbFarmRole->GetSetting(Scalr_Role_Behavior_RabbitMQ::ROLE_CP_REQUEST_TIME)) . ". Please wait...";
                         } else {
                             $rabbitmq['showSetup'] = true;
                             $rabbitmq['status'] = "Request timeout exceeded. Request was sent at " . Scalr_Util_DateTime::convertTz((int) $dbFarmRole->GetSetting(Scalr_Role_Behavior_RabbitMQ::ROLE_CP_REQUEST_TIME));
                         }
                     }
                 } else {
                     if ($dbFarmRole->GetSetting(Scalr_Role_Behavior_RabbitMQ::ROLE_PASSWORD)) {
                         $rabbitmq['showSetup'] = true;
                     } else {
                         $rabbitmq['status'] = 'Rabbitmq cluster not initialized yet. Please wait ...';
                         $rabbitmq['showStatusLabel'] = false;
                     }
                 }
             }
             $rabbitmq['password'] = $dbFarmRole->GetSetting(Scalr_Role_Behavior_RabbitMQ::ROLE_PASSWORD);
             $farmRole['data'] = $rabbitmq;
         }
         $list[] = $farmRole;
     }
     $this->response->page('ui/services/rabbitmq/status.js', ['list' => $list]);
 }