D7net
Home
Console
Upload
information
Create File
Create Folder
About
Tools
:
/
opt
/
cloudlinux
/
venv
/
lib64
/
python3.11
/
site-packages
/
cl_website_collector
/
Filename :
feature_manager.py
back
Copy
# -*- coding: utf-8 -*- # # Copyright © Cloud Linux GmbH & Cloud Linux Software, Inc 2010-2024 All Rights Reserved # # Licensed under CLOUD LINUX LICENSE AGREEMENT # http://cloudlinux.com/docs/LICENSE.TXT import os from copy import deepcopy import requests class FeatureManagerApiException(Exception): pass class FeatureManager: """ Communicates with FeatureManager API to get feature settings based on server metadata """ def __init__(self, app_logger): self.api_url = self.base_url() + "/feature_manager/feature_settings" self.app_logger = app_logger @staticmethod def base_url() -> str: base_url = "https://x-ray-advice.cloudlinux.com" if os.path.exists("/opt/cloudlinux/staging_mode"): base_url = "https://x-ray-staging.cloudlinux.com" return base_url def request(self, payload): response = requests.get(self.api_url, json=payload, timeout=20) self.app_logger.info(f"FeatureManager request to {self.api_url} " f"with payload {payload} " f"returned {response.status_code}") if response.status_code != 200: raise FeatureManagerApiException(f"FeatureManager API returned {response.status_code}") return response.json() def get_decision(self, server_metadata, reason): payload = deepcopy(server_metadata) payload["reason"] = reason return self.request(payload)