class RedisPools(object): JOB_CONTAINERS = redis.ConnectionPool.from_url( config.get_string('POLYAXON_REDIS_JOB_CONTAINERS_URL')) TO_STREAM = redis.ConnectionPool.from_url( config.get_string('POLYAXON_REDIS_TO_STREAM_URL')) SESSIONS = redis.ConnectionPool.from_url( config.get_string('POLYAXON_REDIS_SESSIONS_URL'))
class RoutingKeys(object): LOGS_SIDECARS_EXPERIMENTS = config.get_string( 'POLYAXON_ROUTING_KEYS_LOGS_SIDECARS_EXPERIMENTS') LOGS_SIDECARS_JOBS = config.get_string( 'POLYAXON_ROUTING_KEYS_LOGS_SIDECARS_JOBS') LOGS_SIDECARS_BUILDS = config.get_string( 'POLYAXON_ROUTING_KEYS_LOGS_SIDECARS_BUILDS')
def get_allowed_hosts(): allowed_hosts = config.get_string('POLYAXON_ALLOWED_HOSTS', is_optional=True, is_list=True, default=['*']) allowed_hosts.append('.polyaxon.com') k8s_api_host = config.get_string('POLYAXON_K8S_API_HOST', is_optional=True) if k8s_api_host: allowed_hosts.append(k8s_api_host) return allowed_hosts
class GITHUB(object): VERIFICATION_SCHEDULE = 0 CLIENT_ID = config.get_string('POLYAXON_AUTH_GITHUB_CLIENT_ID', is_optional=True, is_secret=True) CLIENT_SECRET = config.get_string('POLYAXON_AUTH_GITHUB_CLIENT_SECRET', is_optional=True, is_secret=True) ENABLED = config.get_boolean('POLYAXON_AUTH_GITHUB', is_optional=True, default=False)
class RoutingKeys(object): LOGS_SIDECARS_EXPERIMENTS = config.get_string( 'POLYAXON_ROUTING_KEYS_LOGS_SIDECARS_EXPERIMENTS', is_optional=True, default='logs.sidecars.experiments') LOGS_SIDECARS_JOBS = config.get_string( 'POLYAXON_ROUTING_KEYS_LOGS_SIDECARS_JOBS', is_optional=True, default='logs.sidecars.jobs') LOGS_SIDECARS_BUILDS = config.get_string( 'POLYAXON_ROUTING_KEYS_LOGS_SIDECARS_BUILDS', is_optional=True, default='logs.sidecars.builds')
def get_external_registries(): registries = [] for key in config.params_startswith(PRIVATE_REGISTRIES_PREFIX): registry_spec = config.get_string(key, is_secret=True) registry_spec = config.parse_uri_spec(registry_spec) if registry_spec: registries.append(registry_spec) return registries
class RedisPools(object): JOB_CONTAINERS = redis.ConnectionPool.from_url( config.get_string('POLYAXON_REDIS_JOB_CONTAINERS_URL')) TO_STREAM = redis.ConnectionPool.from_url( config.get_string('POLYAXON_REDIS_TO_STREAM_URL')) SESSIONS = redis.ConnectionPool.from_url( config.get_string('POLYAXON_REDIS_SESSIONS_URL')) EPHEMERAL_TOKENS = redis.ConnectionPool.from_url( config.get_string('POLYAXON_REDIS_EPHEMERAL_TOKENS_URL')) TTL = redis.ConnectionPool.from_url( config.get_string('POLYAXON_REDIS_TTL_URL')) HEARTBEAT = redis.ConnectionPool.from_url( config.get_string('POLYAXON_HEARTBEAT_URL')) GROUP_CHECKS = redis.ConnectionPool.from_url( config.get_string('POLYAXON_GROUP_CHECKS_URL'))
def get_external_registries(): registries = [] for key in config.params_startswith(PRIVATE_REGISTRIES_PREFIX): try: registry_dict = config.get_dict(key, is_secret=True) registry_spec = UriSpec(**registry_dict) except RheaError: registry_spec = config.get_string(key, is_secret=True) try: # We might get this value from a chart with `toJson` applied. registry_spec = json.loads(registry_spec) except json.decoder.JSONDecodeError: pass registry_spec = config.parse_uri_spec(registry_spec) if registry_spec: registries.append(registry_spec) return registries
from polyaxon.config_manager import config OAUTH_GITHUB_VERIFICATION_SCHEDULE = config.get_int( 'POLYAXON_AUTH_GITHUB_VERIFICATION_SCHEDULE', is_optional=True, default=0) OAUTH_GITHUB_CLIENT_ID = config.get_string('POLYAXON_AUTH_GITHUB_CLIENT_ID', is_optional=True, is_secret=True) OAUTH_GITHUB_CLIENT_SECRET = config.get_string( 'POLYAXON_AUTH_GITHUB_CLIENT_SECRET', is_optional=True, is_secret=True) OAUTH_GITHUB_ENABLED = config.get_boolean('POLYAXON_AUTH_GITHUB', is_optional=True, default=False) OAUTH_BITBUCKET_VERIFICATION_SCHEDULE = config.get_int( 'POLYAXON_AUTH_BITBUCKET_VERIFICATION_SCHEDULE', is_optional=True, default=0) OAUTH_BITBUCKET_CLIENT_ID = config.get_string( 'POLYAXON_AUTH_BITBUCKET_CLIENT_ID', is_optional=True, is_secret=True) OAUTH_BITBUCKET_CLIENT_SECRET = config.get_string( 'POLYAXON_AUTH_BITBUCKET_CLIENT_SECRET', is_optional=True, is_secret=True) OAUTH_BITBUCKET_ENABLED = config.get_boolean('POLYAXON_AUTH_BITBUCKET', is_optional=True, default=False) OAUTH_GITLAB_VERIFICATION_SCHEDULE = config.get_int( 'POLYAXON_AUTH_GITLAB_VERIFICATION_SCHEDULE', is_optional=True, default=0) OAUTH_GITLAB_URL = config.get_string('POLYAXON_AUTH_GITLAB_URL', is_optional=True, is_secret=True) OAUTH_GITLAB_CLIENT_ID = config.get_string('POLYAXON_AUTH_GITLAB_CLIENT_ID',
class CeleryQueues(object): """Celery Queues. N.B. make sure that the queue name is not < 128. """ REPOS = config.get_string('POLYAXON_QUEUES_REPOS') SCHEDULER_EXPERIMENTS = config.get_string('POLYAXON_QUEUES_SCHEDULER_EXPERIMENTS') SCHEDULER_EXPERIMENT_GROUPS = config.get_string('POLYAXON_QUEUES_SCHEDULER_EXPERIMENT_GROUPS') SCHEDULER_PROJECTS = config.get_string('POLYAXON_QUEUES_SCHEDULER_PROJECTS') SCHEDULER_BUILD_JOBS = config.get_string('POLYAXON_QUEUES_SCHEDULER_BUILD_JOBS') PIPELINES = config.get_string('POLYAXON_QUEUES_PIPELINES') CRONS_EXPERIMENTS = config.get_string('POLYAXON_QUEUES_CRONS_EXPERIMENTS') CRONS_PIPELINES = config.get_string('POLYAXON_QUEUES_CRONS_PIPELINES') CRONS_CLUSTERS = config.get_string('POLYAXON_QUEUES_CRONS_CLUSTERS') HP = config.get_string('POLYAXON_QUEUES_HP') EVENTS_NAMESPACE = config.get_string('POLYAXON_QUEUES_EVENTS_NAMESPACE') EVENTS_RESOURCES = config.get_string('POLYAXON_QUEUES_EVENTS_RESOURCES') EVENTS_JOB_STATUSES = config.get_string('POLYAXON_QUEUES_EVENTS_JOB_STATUSES') LOGS_SIDECARS = config.get_string('POLYAXON_QUEUES_LOGS_SIDECARS') STREAM_LOGS_SIDECARS = config.get_string('POLYAXON_QUEUES_STREAM_LOGS_SIDECARS')
class CeleryQueues(object): """Celery Queues. N.B. make sure that the queue name is not < 128. """ REPOS = config.get_string('POLYAXON_QUEUES_REPOS') SCHEDULER_HEALTH = config.get_string('POLYAXON_QUEUES_SCHEDULER_HEALTH') SCHEDULER_EXPERIMENTS = config.get_string( 'POLYAXON_QUEUES_SCHEDULER_EXPERIMENTS') SCHEDULER_EXPERIMENT_GROUPS = config.get_string( 'POLYAXON_QUEUES_SCHEDULER_EXPERIMENT_GROUPS') SCHEDULER_PROJECTS = config.get_string( 'POLYAXON_QUEUES_SCHEDULER_PROJECTS') SCHEDULER_STORES = config.get_string('POLYAXON_QUEUES_SCHEDULER_STORES') SCHEDULER_BUILD_JOBS = config.get_string( 'POLYAXON_QUEUES_SCHEDULER_BUILD_JOBS') SCHEDULER_JOBS = config.get_string('POLYAXON_QUEUES_SCHEDULER_JOBS') PIPELINES_HEALTH = config.get_string('POLYAXON_QUEUES_PIPELINES_HEALTH') PIPELINES = config.get_string('POLYAXON_QUEUES_PIPELINES') CRONS_HEALTH = config.get_string('POLYAXON_QUEUES_CRONS_HEALTH') CRONS_HEARTBEAT = config.get_string('POLYAXON_QUEUES_CRONS_HEARTBEAT') CRONS_EXPERIMENTS = config.get_string('POLYAXON_QUEUES_CRONS_EXPERIMENTS') CRONS_PIPELINES = config.get_string('POLYAXON_QUEUES_CRONS_PIPELINES') CRONS_CLUSTERS = config.get_string('POLYAXON_QUEUES_CRONS_CLUSTERS') CRONS_CLEAN = config.get_string('POLYAXON_QUEUES_CRONS_CLEAN') HP_HEALTH = config.get_string('POLYAXON_QUEUES_HP_HEALTH') HP = config.get_string('POLYAXON_QUEUES_HP') EVENTS_HEALTH = config.get_string('POLYAXON_QUEUES_EVENTS_HEALTH') EVENTS_NOTIFY = config.get_string('POLYAXON_QUEUES_EVENTS_NOTIFY') EVENTS_LOG = config.get_string('POLYAXON_QUEUES_EVENTS_LOG') EVENTS_TRACK = config.get_string('POLYAXON_QUEUES_EVENTS_TRACK') K8S_EVENTS_HEALTH = config.get_string('POLYAXON_QUEUES_K8S_EVENTS_HEALTH') K8S_EVENTS_NAMESPACE = config.get_string( 'POLYAXON_QUEUES_K8S_EVENTS_NAMESPACE') K8S_EVENTS_RESOURCES = config.get_string( 'POLYAXON_QUEUES_K8S_EVENTS_RESOURCES') K8S_EVENTS_JOB_STATUSES = config.get_string( 'POLYAXON_QUEUES_K8S_EVENTS_JOB_STATUSES') LOGS_HEALTH = config.get_string('POLYAXON_QUEUES_LOGS_HEALTH') LOGS_SIDECARS = config.get_string('POLYAXON_QUEUES_LOGS_SIDECARS') LOGS_HANDLERS = config.get_string('POLYAXON_QUEUES_LOGS_HANDLERS') STREAM_LOGS_SIDECARS = config.get_string( 'POLYAXON_QUEUES_STREAM_LOGS_SIDECARS')
from polyaxon.config_manager import config PUBLIC_PLUGIN_JOBS = config.get_boolean('POLYAXON_PUBLIC_PLUGIN_JOBS', is_optional=True) # k8s K8S_SERVICE_ACCOUNT_NAME = config.get_string('POLYAXON_K8S_SERVICE_ACCOUNT_NAME') K8S_SERVICE_ACCOUNT_EXPERIMENTS = config.get_string('POLYAXON_K8S_SERVICE_ACCOUNT_EXPERIMENTS', is_optional=True) K8S_SERVICE_ACCOUNT_JOBS = config.get_string('POLYAXON_K8S_SERVICE_ACCOUNT_JOBS', is_optional=True) K8S_SERVICE_ACCOUNT_BUILDS = config.get_string('POLYAXON_K8S_SERVICE_ACCOUNT_BUILDS', is_optional=True) K8S_RBAC_ENABLED = config.get_boolean('POLYAXON_K8S_RBAC_ENABLED') K8S_PROVISIONER_ENABLED = config.get_boolean('POLYAXON_K8S_PROVISIONER_ENABLED') K8S_INGRESS_ENABLED = config.get_boolean('POLYAXON_K8S_INGRESS_ENABLED') K8S_INGRESS_ANNOTATIONS = config.get_string('POLYAXON_K8S_INGRESS_ANNOTATIONS', is_optional=True) # Builds BUILD_ALWAYS_PULL_LATEST = config.get_boolean('POLYAXON_BUILD_ALWAYS_PULL_LATEST', is_optional=True, default=False) # Refs REFS_SECRETS = config.get_string('POLYAXON_REFS_SECRETS', is_optional=True, is_list=True, default=()) REFS_CONFIG_MAPS = config.get_string('POLYAXON_REFS_CONFIG_MAPS', is_optional=True, is_list=True, default=())
from polyaxon.config_manager import config ADMIN_BACKEND = config.get_string('POLYAXON_ADMIN_BACKEND', is_optional=True) admin_name = config.get_string('POLYAXON_ADMIN_NAME', is_optional=True) admin_mail = config.get_string('POLYAXON_ADMIN_MAIL', is_optional=True) if admin_mail and admin_mail: ADMINS = ((admin_name, admin_mail), ) MANAGERS = ADMINS
from polyaxon.config_manager import config POLYAXON_K8S_APP_NAME = config.get_string('POLYAXON_K8S_APP_NAME') POLYAXON_K8S_API_HOST = config.get_string('POLYAXON_K8S_API_HOST') POLYAXON_K8S_API_INTERNAL_PORT = config.get_int( 'POLYAXON_K8S_API_INTERNAL_PORT', is_optional=True, default=80) POLYAXON_K8S_STREAM_INTERNAL_PORT = config.get_int( 'POLYAXON_K8S_STREAM_INTERNAL_PORT', is_optional=True, default=1337) POLYAXON_K8S_API_HTTP_PORT = config.get_int('POLYAXON_K8S_API_HTTP_PORT') POLYAXON_K8S_APP_CONFIG_NAME = config.get_string( 'POLYAXON_K8S_APP_CONFIG_NAME') POLYAXON_K8S_APP_SECRET_NAME = config.get_string( 'POLYAXON_K8S_APP_SECRET_NAME') POLYAXON_K8S_RABBITMQ_SECRET_NAME = config.get_string( 'POLYAXON_K8S_RABBITMQ_SECRET_NAME') POLYAXON_K8S_DB_SECRET_NAME = config.get_string('POLYAXON_K8S_DB_SECRET_NAME') POLYAXON_K8S_REGISTRY_SECRET_NAME = config.get_string( 'POLYAXON_K8S_REGISTRY_SECRET_NAME', is_optional=True) K8S_AUTHORISATION = config.get_string('POLYAXON_K8S_AUTHORISATION', is_optional=True, is_secret=True) K8S_HOST = config.get_string('POLYAXON_K8S_HOST', is_optional=True) SSL_CA_CERT = config.get_string('POLYAXON_K8S_SSL_CA_CERT', is_optional=True) K8S_CONFIG = None if K8S_AUTHORISATION and K8S_HOST: import urllib3 from kubernetes import client
from polyaxon.config_manager import config REPOS_ACCESS_TOKEN_KEY = 'POLYAXON_REPOS_ACCESS_TOKEN' REPOS_ACCESS_TOKEN = config.get_string(REPOS_ACCESS_TOKEN_KEY, is_optional=True, is_secret=True)
import json from rhea import RheaError from rhea.manager import UriSpec from polyaxon.config_manager import config REGISTRY_USER = config.get_string('POLYAXON_REGISTRY_USER', is_optional=True) REGISTRY_PASSWORD = config.get_string('POLYAXON_REGISTRY_PASSWORD', is_optional=True) REGISTRY_HOST_NAME = config.get_string('POLYAXON_REGISTRY_HOST', is_optional=True) REGISTRY_PORT = config.get_string('POLYAXON_REGISTRY_PORT', is_optional=True) REGISTRY_NODE_PORT = config.get_string('POLYAXON_REGISTRY_NODE_PORT', is_optional=True) REGISTRY_HOST = '{}:{}'.format('127.0.0.1', REGISTRY_NODE_PORT) PRIVATE_REGISTRIES_PREFIX = 'POLYAXON_PRIVATE_REGISTRY_' def get_external_registries(): registries = [] for key in config.params_startswith(PRIVATE_REGISTRIES_PREFIX): try: registry_dict = config.get_dict(key, is_secret=True) registry_spec = UriSpec(**registry_dict) except RheaError: registry_spec = config.get_string(key, is_secret=True) try: # We might get this value from a chart with `toJson` applied. registry_spec = json.loads(registry_spec)
from corsheaders.defaults import default_headers from polyaxon.config_manager import config # session settings CORS_ORIGIN_ALLOW_ALL = True CORS_ALLOW_CREDENTIALS = True SSL_ENABLED = config.get_boolean('POLYAXON_SSL_ENABLED', is_optional=True, default=False) CORS_ORIGIN_WHITELIST = config.get_string('POLYAXON_CORS_ORIGIN_WHITELIST', is_optional=True) if CORS_ORIGIN_WHITELIST: CORS_ORIGIN_WHITELIST = [ i.strip() for i in CORS_ORIGIN_WHITELIST.split(',') ] else: CORS_ORIGIN_WHITELIST = [] HEADERS_CLI_VERSION = 'X_POLYAXON_CLI_VERSION' HEADERS_CLIENT_VERSION = 'X_POLYAXON_CLIENT-VERSION' HEADERS_INTERNAL = 'X_POLYAXON_INTERNAL' CORS_ALLOW_HEADERS = default_headers + ( HEADERS_CLI_VERSION, HEADERS_CLIENT_VERSION, HEADERS_INTERNAL, ) PROTOCOL = 'http'
from polyaxon.config_manager import config DEBUG = config.is_debug_mode POLYAXON_SERVICE = config.service POLYAXON_ENVIRONMENT = config.env K8S_NAMESPACE = config.namespace K8S_NODE_NAME = config.node_name K8S_GPU_RESOURCE_KEY = config.get_string('POLYAXON_K8S_GPU_RESOURCE_KEY') K8S_TPU_RESOURCE_KEY = config.get_string('POLYAXON_K8S_TPU_RESOURCE_KEY', is_optional=True, default='cloud-tpus.google.com/v2') CONF_BACKEND = config.get_string('POLYAXON_CONF_BACKEND', is_optional=True) CLUSTER_ID = config.cluster_id REPOS_ARCHIVE_ROOT = '/tmp/archived_repos' OUTPUTS_ARCHIVE_ROOT = '/tmp/archived_outputs' OUTPUTS_DOWNLOAD_ROOT = '/tmp/download_outputs' LOGS_DOWNLOAD_ROOT = '/tmp/download_logs' LOGS_ARCHIVE_ROOT = '/tmp/archived_logs' FILE_UPLOAD_PERMISSIONS = 0o644 ADMIN_VIEW_ENABLED = config.get_boolean('POLYAXON_ADMIN_VIEW_ENABLED', is_optional=True, default=False) # Global Async Countdown GLOBAL_COUNTDOWN = config.get_int('POLYAXON_GLOBAL_COUNTDOWN', is_optional=True, default=1) # Heartbeat timeout (status -> failed as zombie) TTL_HEARTBEAT = config.get_int('POLYAXON_TTL_HEARTBEAT', is_optional=True, default=60 * 30) # Token time in days
from polyaxon.config_manager import config DEFAULT_APPS = ( 'polyaxon', 'encryptor.apps.EncryptorConfig', 'db.apps.DBConfig', 'conf.apps.ConfConfig', 'features.apps.FeaturesConfig', ) EXTRA_APPS = config.get_string('POLYAXON_EXTRA_APPS', is_list=True, is_optional=True) EXTRA_APPS = tuple(EXTRA_APPS) if EXTRA_APPS else () THIRD_PARTY_APPS = ( 'rest_framework', 'corsheaders', ) INSTALLED_APPS = ( 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'raven.contrib.django.raven_compat', ) INSTALLED_APPS += THIRD_PARTY_APPS + DEFAULT_APPS + EXTRA_APPS
from polyaxon.config_manager import config API_HOST = config.get_string('POLYAXON_API_HOST', is_optional=True)
from polyaxon.config_manager import config PUBLIC_PLUGIN_JOBS = config.get_boolean('POLYAXON_PUBLIC_PLUGIN_JOBS', is_optional=True) # Roles ROLE_LABELS_WORKER = config.get_string('POLYAXON_ROLE_LABELS_WORKER') ROLE_LABELS_DASHBOARD = config.get_string('POLYAXON_ROLE_LABELS_DASHBOARD') ROLE_LABELS_LOG = config.get_string('POLYAXON_ROLE_LABELS_LOG') ROLE_LABELS_API = config.get_string('POLYAXON_ROLE_LABELS_API') K8S_SERVICE_ACCOUNT_NAME = config.get_string( 'POLYAXON_K8S_SERVICE_ACCOUNT_NAME') K8S_RBAC_ENABLED = config.get_boolean('POLYAXON_K8S_RBAC_ENABLED') K8S_PROVISIONER_ENABLED = config.get_boolean( 'POLYAXON_K8S_PROVISIONER_ENABLED') K8S_INGRESS_ENABLED = config.get_boolean('POLYAXON_K8S_INGRESS_ENABLED') K8S_INGRESS_ANNOTATIONS = config.get_string('POLYAXON_K8S_INGRESS_ANNOTATIONS', is_optional=True) TENSORBOARD_PORT_RANGE = [5700, 6700] NOTEBOOK_PORT_RANGE = [6700, 7700] # Types TYPE_LABELS_CORE = config.get_string('POLYAXON_TYPE_LABELS_CORE') TYPE_LABELS_RUNNER = config.get_string('POLYAXON_TYPE_LABELS_RUNNER') # Labels APP_LABELS_TENSORBOARD = config.get_string('POLYAXON_APP_LABELS_TENSORBOARD', is_optional=True, default='polyaxon-tensorboard') APP_LABELS_NOTEBOOK = config.get_string('POLYAXON_APP_LABELS_NOTEBOOK', is_optional=True, default='polyaxon-notebook')
from polyaxon.config_manager import config # Labels APP_LABELS_TENSORBOARD = config.get_string('POLYAXON_APP_LABELS_TENSORBOARD', is_optional=True, default='polyaxon-tensorboard') APP_LABELS_NOTEBOOK = config.get_string('POLYAXON_APP_LABELS_NOTEBOOK', is_optional=True, default='polyaxon-notebook') APP_LABELS_DOCKERIZER = config.get_string('POLYAXON_APP_LABELS_DOCKERIZER', is_optional=True, default='polyaxon-dockerizer') APP_LABELS_EXPERIMENT = config.get_string('POLYAXON_APP_LABELS_EXPERIMENT', is_optional=True, default='polyaxon-experiment') APP_LABELS_JOB = config.get_string('POLYAXON_APP_LABELS_JOB', is_optional=True, default='polyaxon-job')
from polyaxon.config_manager import config ALLOW_USER_PROJECTS = config.get_boolean('POLYAXON_ALLOW_USER_PROJECTS', is_optional=True, default=True) OWNER_TYPES = config.get_string('POLYAXON_OWNER_TYPES', is_optional=True, is_list=True, default=['user']) ROLES = config.get_dict('POLYAXON_ROLES', is_optional=True, is_list=True, default=[]) DEFAULT_ROLE = config.get_string('POLYAXON_DEFAULT_ROLE', is_optional=True, default='dummy') SCOPE_ROLES = config.get_dict_of_dicts('POLYAXON_SCOPE_ROLES', is_optional=True, default={})
def get_http_api_url() -> Optional[str]: return config.get_string(API_HTTP_URL, is_optional=True)
from datetime import timedelta from kombu import Exchange, Queue from polyaxon.config_manager import config CELERY_TRACK_STARTED = True AMQP_URL = config.get_string('POLYAXON_AMQP_URL') RABBITMQ_USER = config.get_string('POLYAXON_RABBITMQ_USER', is_optional=True) RABBITMQ_PASSWORD = config.get_string('POLYAXON_RABBITMQ_PASSWORD', is_secret=True, is_optional=True) BROKER_POOL_LIMIT = None if RABBITMQ_USER and RABBITMQ_PASSWORD: CELERY_BROKER_URL = 'amqp://{user}:{password}@{url}'.format( user=RABBITMQ_USER, password=RABBITMQ_PASSWORD, url=AMQP_URL) # todo: fix me at some point CELERY_BROKER_URL = 'amqp://{url}'.format(url=AMQP_URL) INTERNAL_EXCHANGE = config.get_string('POLYAXON_INTERNAL_EXCHANGE', is_optional=True, default='internal') CELERY_RESULT_BACKEND = config.get_string( 'POLYAXON_REDIS_CELERY_RESULT_BACKEND_URL') CELERYD_PREFETCH_MULTIPLIER = config.get_int( 'POLYAXON_CELERYD_PREFETCH_MULTIPLIER')
def get_ws_api_url() -> Optional[str]: return config.get_string(API_WS_HOST, is_optional=True)
from datetime import timedelta from kombu import Exchange, Queue from polyaxon.config_manager import config CELERY_TRACK_STARTED = True AMQP_URL = config.get_string('POLYAXON_AMQP_URL') RABBITMQ_USER = config.get_string( 'POLYAXON_RABBITMQ_USER', is_optional=True) RABBITMQ_PASSWORD = config.get_string( 'POLYAXON_RABBITMQ_PASSWORD', is_secret=True, is_optional=True) if RABBITMQ_USER and RABBITMQ_PASSWORD: CELERY_BROKER_URL = 'amqp://{user}:{password}@{url}'.format( user=RABBITMQ_USER, password=RABBITMQ_PASSWORD, url=AMQP_URL ) CELERY_BROKER_URL = 'amqp://{url}'.format(url=AMQP_URL) INTERNAL_EXCHANGE = config.get_string('POLYAXON_INTERNAL_EXCHANGE') # CELERY_RESULT_BACKEND = config.get_string('POLYAXON_REDIS_CELERY_RESULT_BACKEND_URL') CELERYD_PREFETCH_MULTIPLIER = config.get_int('POLYAXON_CELERYD_PREFETCH_MULTIPLIER') CELERY_TASK_ALWAYS_EAGER = config.get_boolean('POLYAXON_CELERY_ALWAYS_EAGER') if CELERY_TASK_ALWAYS_EAGER: BROKER_TRANSPORT = 'memory'
from polyaxon.config_manager import config DEBUG = config.is_debug_mode POLYAXON_SERVICE = config.service POLYAXON_ENVIRONMENT = config.env K8S_NAMESPACE = config.namespace K8S_NODE_NAME = config.node_name K8S_GPU_RESOURCE_KEY = config.get_string('POLYAXON_K8S_GPU_RESOURCE_KEY') CLUSTER_ID = config.cluster_id REPOS_ARCHIVE_ROOT = '/tmp/archived_repos' OUTPUTS_ARCHIVE_ROOT = '/tmp/archived_outputs' OUTPUTS_DOWNLOAD_ROOT = '/tmp/download_outputs' LOGS_ARCHIVE_ROOT = '/tmp/archived_logs' FILE_UPLOAD_PERMISSIONS = 0o644 ADMIN_VIEW_ENABLED = config.get_boolean('POLYAXON_ADMIN_VIEW_ENABLED', is_optional=True, default=False) # Heartbeat timeout (status -> failed as zombie) HEARTBEAT_TIMEOUT = config.get_int('POLYAXON_HEARTBEAT_TIMEOUT', is_optional=True, default=60 * 30) # Token time in days TOKEN_TTL = config.get_int('POLYAXON_TOKEN_TTL', is_optional=True, default=30) # Ephemeral token ttl EPHEMERAL_TOKEN_TTL = config.get_int('POLYAXON_EPHEMERAL_TOKEN_TTL', is_optional=True, default=60 * 60 * 3) # Group checks interval
class RoutingKeys(object): LOGS_SIDECARS = config.get_string('POLYAXON_ROUTING_KEYS_LOGS_SIDECARS')
import json from polyaxon.config_manager import config INTEGRATIONS_SLACK_WEBHOOKS = config.get_string( 'POLYAXON_INTEGRATIONS_SLACK_WEBHOOKS', is_optional=True, is_local=True) if INTEGRATIONS_SLACK_WEBHOOKS: # Parse the web hooks INTEGRATIONS_SLACK_WEBHOOKS = json.loads(INTEGRATIONS_SLACK_WEBHOOKS) if not isinstance(INTEGRATIONS_SLACK_WEBHOOKS, list): INTEGRATIONS_SLACK_WEBHOOKS = None