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); }
/** * 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]); }