예제 #1
0
 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)
예제 #2
0
from polyaxon.utils import ROOT_DIR, config

DEBUG = config.get_boolean('POLYAXON_DEBUG')

ALLOWED_HOSTS = ['*']
SECURE_PROXY_SSL_HEADER = ('HTTP_X_FORWARDED_PROTO', 'https')
CORS_ORIGIN_ALLOW_ALL = True
CORS_ALLOW_CREDENTIALS = True

WSGI_APPLICATION = 'polyaxon.wsgi.application'
TIME_ZONE = config.get_string('POLYAXON_TIME_ZONE',
                              is_optional=True) or 'Europe/Berlin'
LANGUAGE_CODE = 'en'
LANGUAGES = (('en', u'English'), )

USE_I18N = True
USE_L10N = True
USE_TZ = True

INTERNAL_IPS = ('127.0.0.1', )
APPEND_SLASH = True

ROOT_URLCONF = 'polyaxon.urls'

# user management
LOGIN_URL = '/users/login/'
LOGIN_REDIRECT_URL = '/'
ACCOUNT_ACTIVATION_DAYS = 7
INVITATION_TIMEOUT_DAYS = 30

SESSION_COOKIE_AGE = 24 * 60 * 60  # 24 hours
예제 #3
0
from polyaxon.utils 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_INGRESS_ENABLED = config.get_boolean('POLYAXON_K8S_INGRESS_ENABLED')
K8S_INGRESS_ANNOTATIONS = config.get_string('POLYAXON_K8S_INGRESS_ANNOTATIONS',
                                            is_optional=True)
K8S_GPU_RESOURCE_KEY = config.get_string('POLYAXON_K8S_GPU_RESOURCE_KEY')
TENSORBOARD_PORT_RANGE = [5700, 6700]
NOTEBOOK_PORT_RANGE = [6700, 7700]

# Types
TYPE_LABELS_CORE = config.get_string('POLYAXON_TYPE_LABELS_CORE')
TYPE_LABELS_EXPERIMENT = config.get_string('POLYAXON_TYPE_LABELS_EXPERIMENT')

# Plugin jobs app
APP_LABELS_TENSORBOARD = config.get_string('POLYAXON_APP_LABELS_TENSORBOARD')
APP_LABELS_NOTEBOOK = config.get_string('POLYAXON_APP_LABELS_NOTEBOOK')

# Selectors
NODE_SELECTORS_EXPERIMENTS = config.get_string(
    'POLYAXON_NODE_SELECTORS_EXPERIMENTS', is_optional=True)
예제 #4
0
# -*- coding: utf-8 -*-
from __future__ import absolute_import, division, print_function

from polyaxon.utils import config

# 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_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 = [5500, 6500]

# Types
TYPE_LABELS_CORE = config.get_string('POLYAXON_TYPE_LABELS_CORE')
TYPE_LABELS_EXPERIMENT = config.get_string('POLYAXON_TYPE_LABELS_EXPERIMENT')

# Selectors
NODE_SELECTORS_EXPERIMENTS = config.get_string('POLYAXON_NODE_SELECTORS_EXPERIMENTS',
                                               is_optional=True)

JOB_CONTAINER_NAME = config.get_string('POLYAXON_JOB_CONTAINER_NAME')
JOB_SIDECAR_CONTAINER_NAME = config.get_string('POLYAXON_JOB_SIDECAR_CONTAINER_NAME')
JOB_DOCKER_NAME = config.get_string('POLYAXON_JOB_DOCKER_NAME',
                                    is_optional=True) or 'polyaxon/polyaxon-lib'
JOB_SIDECAR_DOCKER_IMAGE = config.get_string('POLYAXON_JOB_SIDECAR_DOCKER_IMAGE',
                                             is_optional=True) or 'polyaxon/polyaxon-sidecar'
JOB_SIDECAR_LOG_SLEEP_INTERVAL = config.get_int('POLYAXON_JOB_SIDECAR_LOG_SLEEP_INTERVAL',
예제 #5
0
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'

CELERY_ACCEPT_CONTENT = ['application/json']
CELERY_TASK_SERIALIZER = 'json'
CELERY_RESULT_SERIALIZER = 'json'

CELERY_IGNORE_RESULT = True
CELERY_HARD_TIME_LIMIT_DELAY = config.get_int(
    'POLYAXON_CELERY_HARD_TIME_LIMIT_DELAY', is_optional=True, default=180)


class Intervals(object):
    """All intervals are in seconds"""
    OPERATIONS_DEFAULT_RETRY_DELAY = config.get_int(
예제 #6
0
from datetime import timedelta

from kombu import Exchange, Queue

from polyaxon.utils import config

CELERY_TRACK_STARTED = True

CELERY_BROKER_URL = config.get_string('POLYAXON_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'

CELERY_ACCEPT_CONTENT = ['application/json']
CELERY_TASK_SERIALIZER = 'json'
CELERY_RESULT_SERIALIZER = 'json'

CELERY_IGNORE_RESULT = True
CELERY_HARD_TIME_LIMIT_DELAY = config.get_int(
    'POLYAXON_CELERY_HARD_TIME_LIMIT_DELAY', is_optional=True) or 180


class Intervals(object):
    """All intervals are in seconds"""
    OPERATIONS_DEFAULT_RETRY_DELAY = config.get_int(
예제 #7
0
# -*- coding: utf-8 -*-
import json

import django_auth_ldap.config as django_auth_ldap_config
import ldap

from polyaxon.utils import config

DEFAULT_EMAIL_DOMAIN = 'local_polyaxon.com'

AUTH_LDAP_ENABLED = config.get_boolean('POLYAXON_AUTH_LDAP', is_optional=True)

AUTHENTICATION_BACKENDS = [
    'django.contrib.auth.backends.ModelBackend',
]

if AUTH_LDAP_ENABLED:
    AUTHENTICATION_BACKENDS = ['django_auth_ldap.backend.LDAPBackend'
                               ] + AUTHENTICATION_BACKENDS

    AUTH_LDAP_SERVER_URI = config.get_string('POLYAXON_AUTH_LDAP_SERVER_URI')

    # set ldap global options
    ldap_global_options = config.get_string(
        'POLYAXON_AUTH_LDAP_GLOBAL_OPTIONS', is_optional=True)
    if ldap_global_options:
        ldap_global_options = json.loads(ldap_global_options)
        for option_name in ldap_global_options:
            option = getattr(ldap, option_name)
            ldap.set_option(option, ldap_global_options[option_name])
예제 #8
0
    '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'

CELERY_ACCEPT_CONTENT = ['application/json']
CELERY_TASK_SERIALIZER = 'json'
CELERY_RESULT_SERIALIZER = 'json'

CELERY_IGNORE_RESULT = True
CELERY_HARD_TIME_LIMIT_DELAY = config.get_int('POLYAXON_CELERY_HARD_TIME_LIMIT_DELAY',
                                              is_optional=True,
                                              default=180)


class Intervals(object):
    """All intervals are in seconds"""
예제 #9
0
    'polyaxon',
    'libs.apps.LibsConfig',
    'users.apps.UsersConfig',
    'versions.apps.VersionsConfig',
    'clusters.apps.ClustersConfig',
    'projects.apps.ProjectsConfig',
    'repos.apps.ReposConfig',
    'jobs.apps.JobsConfig',
    'experiment_groups.apps.ExperimentGroupsConfig',
    'experiments.apps.ExperimentsConfig',
    'pipelines.apps.PipelinesConfig',
    'events.apps.EventsConfig',
)

DEPLOY_RUNNER = config.get_boolean('POLYAXON_DEPLOY_RUNNER',
                                   is_optional=True,
                                   default=True)
if DEPLOY_RUNNER:
    PROJECT_APPS += (
        'plugins.apps.PluginsConfig',
        'runner.apps.RunnerConfig',
        'runner.nodes.apps.NodesConfig',
    )

THIRD_PARTY_APPS = (
    'raven.contrib.django.raven_compat',
    'rest_framework',
    'rest_framework.authtoken',
    'corsheaders',
)
예제 #10
0
from polyaxon.utils import ROOT_DIR, config

if config.is_monolith_service or config.is_api_service:
    LIST_TEMPLATE_CONTEXT_PROCESSORS = [
        'django.contrib.auth.context_processors.auth',
        'django.template.context_processors.debug',
        'django.template.context_processors.media',
        'django.template.context_processors.static',
        'django.template.context_processors.tz',
        'django.contrib.messages.context_processors.messages',
        'polyaxon.context_processors.versions',
        'polyaxon.context_processors.cluster',
        'api.context_processors.sso_enabled',
    ]

    JS_DEBUG = config.get_boolean('POLYAXON_JS_DEBUG')

    if JS_DEBUG:
        def js_debug_processor(request):
            return {'js_debug': True}

        LIST_TEMPLATE_CONTEXT_PROCESSORS += ('polyaxon.settings.js_debug_processor',)

    TEMPLATES_DEBUG = (config.get_boolean('DJANGO_TEMPLATE_DEBUG', is_optional=True) or
                       config.is_debug_mode)
    TEMPLATES = [
        {
            'BACKEND': 'django.template.backends.django.DjangoTemplates',
            'DIRS': [
                ROOT_DIR.child('polyaxon').child('polyaxon').child('templates'),
            ],
예제 #11
0
파일: core.py 프로젝트: xenonstack/polyaxon
from corsheaders.defaults import default_headers

from polyaxon.utils import ROOT_DIR, config

DEBUG = config.get_boolean('POLYAXON_DEBUG')

ALLOWED_HOSTS = ['*']

# 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 = []

CORS_ALLOW_HEADERS = default_headers + (
    'x-polyaxon-cli-version',
    'x-polyaxon-client-version',
)

if SSL_ENABLED:
    SESSION_COOKIE_SECURE = True
    CSRF_COOKIE_SECURE = True
    SECURE_PROXY_SSL_HEADER = ('HTTP_X_FORWARDED_PROTO', 'https')

WSGI_APPLICATION = 'polyaxon.wsgi.application'
TIME_ZONE = config.get_string('POLYAXON_TIME_ZONE', is_optional=True) or 'Europe/Berlin'
예제 #12
0
from corsheaders.defaults import default_headers

from polyaxon.utils 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'
if SSL_ENABLED:
    SESSION_COOKIE_SECURE = True
    CSRF_COOKIE_SECURE = True
    SECURE_PROXY_SSL_HEADER = ('HTTP_X_FORWARDED_PROTO', 'https')
예제 #13
0
from polyaxon.utils 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_EXPERIMENT = config.get_string('POLYAXON_TYPE_LABELS_EXPERIMENT')

# Labels
APP_LABELS_TENSORBOARD = config.get_string('POLYAXON_APP_LABELS_TENSORBOARD')
APP_LABELS_NOTEBOOK = config.get_string('POLYAXON_APP_LABELS_NOTEBOOK')
APP_LABELS_DOCKERIZER = config.get_string('POLYAXON_APP_LABELS_DOCKERIZER')
APP_LABELS_EXPERIMENT = config.get_string('POLYAXON_APP_LABELS_EXPERIMENT')
APP_LABELS_JOB = config.get_string('POLYAXON_APP_LABELS_JOB')

# Selectors
NODE_SELECTORS_EXPERIMENTS = config.get_string(
    'POLYAXON_NODE_SELECTORS_EXPERIMENTS', is_optional=True)
NODE_SELECTORS_CORE = config.get_string(
예제 #14
0
# -*- coding: utf-8 -*-
from __future__ import absolute_import, division, print_function

import sys

from polyaxon.utils import config

from .apps import INSTALLED_APPS, MIDDLEWARE_CLASSES

if config.get_boolean('POLYAXON_DEBUG', is_optional=True):

    def show_toolbar(request):
        # debug toolbar makes import take VERY long (because of SQL traces) and can break tests
        if request.path.endswith('upload') or 'test' in sys.argv:
            return False
        return True

    DEBUG_TOOLBAR_CONFIG = {
        'SHOW_TOOLBAR_CALLBACK': show_toolbar,
        'INTERCEPT_REDIRECTS': False,
        'HIDE_DJANGO_SQL': False,
        'ENABLE_STACKTRACES': True,
    }

    DEBUG_TOOLBAR_PANELS = (
        'debug_toolbar.panels.timer.TimerDebugPanel',
        'debug_toolbar.panels.headers.HeaderDebugPanel',
        'debug_toolbar.panels.request_vars.RequestVarsDebugPanel',
        'debug_toolbar.panels.template.TemplateDebugPanel',
        'debug_toolbar.panels.sql.SQLDebugPanel',
    )
예제 #15
0
파일: spawner.py 프로젝트: cho2405/polyaxon
# -*- coding: utf-8 -*-
from __future__ import absolute_import, division, print_function

from polyaxon.utils import config

# 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_INGRESS_ENABLED = config.get_boolean('POLYAXON_K8S_INGRESS_ENABLED')
USE_PUBLIC_JOBS = config.get_boolean('POLYAXON_USE_INGRESS_FOR_JOBS', is_optional=True)
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_EXPERIMENT = config.get_string('POLYAXON_TYPE_LABELS_EXPERIMENT')

# Selectors
NODE_SELECTORS_EXPERIMENTS = config.get_string(
    'POLYAXON_NODE_SELECTORS_EXPERIMENTS', is_optional=True)

JOB_CONTAINER_NAME = config.get_string('POLYAXON_JOB_CONTAINER_NAME')
JOB_SIDECAR_CONTAINER_NAME = config.get_string('POLYAXON_JOB_SIDECAR_CONTAINER_NAME')
JOB_DOCKER_NAME = config.get_string(
    'POLYAXON_JOB_DOCKER_NAME', is_optional=True) or 'polyaxon/polyaxon-lib'
예제 #16
0
from polyaxon.utils import config

CLI_MIN_VERSION = config.get_string('POLYAXON_CLI_MIN_VERSION',
                                    is_optional=True,
                                    default='0.0.0')
CLI_LATEST_VERSION = config.get_string('POLYAXON_CLI_LATEST_VERSION',
                                       is_optional=True,
                                       default='0.0.0')
PLATFORM_MIN_VERSION = config.get_string('POLYAXON_PLATFORM_MIN_VERSION',
                                         is_optional=True,
                                         default='0.0.0')
PLATFORM_LATEST_VERSION = config.get_string('POLYAXON_PLATFORM_LATEST_VERSION',
                                            is_optional=True,
                                            default='0.0.0')
LIB_MIN_VERSION = config.get_string('POLYAXON_LIB_MIN_VERSION',
                                    is_optional=True,
                                    default='0.0.0')
LIB_LATEST_VERSION = config.get_string('POLYAXON_LIB_LATEST_VERSION',
                                       is_optional=True,
                                       default='0.0.0')
CHART_VERSION = config.get_string('POLYAXON_CHART_VERSION',
                                  is_optional=True,
                                  default='0.0.0')
CHART_IS_UPGRADE = config.get_boolean('POLYAXON_CHART_IS_UPGRADE')