Viewing file: feature_manager.py (1.45 KB) -rw-r--r-- Select action/file-type: (+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
# -*- 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)
|