예제 #1
0
파일: cors.py 프로젝트: zhaohb/polyaxon
def set_cors(context, config: ConfigManager):
    # session settings
    context["CORS_ALLOW_CREDENTIALS"] = True
    whitelist = config.get_list("POLYAXON_CORS_ORIGIN_WHITELIST",
                                is_optional=True,
                                default=[])
    context["CORS_ORIGIN_WHITELIST"] = whitelist
    context["CORS_ORIGIN_ALLOW_ALL"] = False if whitelist else True

    context["CORS_ALLOW_HEADERS"] = default_headers + (
        PolyaxonServiceHeaders.CLI_VERSION,
        PolyaxonServiceHeaders.CLIENT_VERSION,
        PolyaxonServiceHeaders.INTERNAL,
        PolyaxonServiceHeaders.SERVICE,
    )

    ssl_enabled = config.get_boolean("POLYAXON_SSL_ENABLED",
                                     is_optional=True,
                                     default=False)
    ssl_redirect_enabled = config.get_boolean("POLYAXON_SSL_REDIRECT_ENABLED",
                                              is_optional=True,
                                              default=False)
    context["SSL_ENABLED"] = ssl_enabled
    context["PROTOCOL"] = "http"
    context["WS_PROTOCOL"] = "ws"
    if ssl_enabled:
        context["SESSION_COOKIE_SECURE"] = True
        context["CSRF_COOKIE_SECURE"] = True
        context["SECURE_PROXY_SSL_HEADER"] = ("HTTP_X_FORWARDED_PROTO",
                                              "https")
        context["PROTOCOL"] = "https"
        context["WS_PROTOCOL"] = "wss"
    if ssl_redirect_enabled:
        context["SECURE_SSL_REDIRECT"] = True
예제 #2
0
def set_cors(context, config: ConfigManager):
    # session settings
    context["CORS_ALLOW_CREDENTIALS"] = True
    allowed_list = config.get_list("POLYAXON_CORS_ALLOWED_ORIGINS",
                                   is_optional=True,
                                   default=[])
    context["CORS_ALLOWED_ORIGINS"] = allowed_list
    context["CORS_ALLOW_ALL_ORIGINS"] = False if allowed_list else True

    context["CORS_ALLOW_HEADERS"] = (default_headers +
                                     PolyaxonServiceHeaders.get_headers())

    ssl_enabled = config.get_boolean("POLYAXON_SSL_ENABLED",
                                     is_optional=True,
                                     default=False)
    ssl_redirect_enabled = config.get_boolean("POLYAXON_SSL_REDIRECT_ENABLED",
                                              is_optional=True,
                                              default=False)
    context["SSL_ENABLED"] = ssl_enabled
    context["PROTOCOL"] = "http"
    context["WS_PROTOCOL"] = "ws"
    if ssl_enabled:
        context["SESSION_COOKIE_SECURE"] = True
        context["CSRF_COOKIE_SECURE"] = True
        context["SECURE_PROXY_SSL_HEADER"] = ("HTTP_X_FORWARDED_PROTO",
                                              "https")
        context["PROTOCOL"] = "https"
        context["WS_PROTOCOL"] = "wss"
    if ssl_redirect_enabled:
        context["SECURE_SSL_REDIRECT"] = True
예제 #3
0
def set_api(context, config: ConfigManager, processors: List[str] = None):
    context["ROOT_URLCONF"] = "polyconf.urls"
    platform_host = config.get_string("POLYAXON_PLATFORM_HOST",
                                      is_optional=True)
    context["PLATFORM_HOST"] = platform_host

    def get_allowed_hosts():
        allowed_hosts = config.get_string("POLYAXON_ALLOWED_HOSTS",
                                          is_optional=True,
                                          is_list=True,
                                          default=["*"])
        allowed_hosts.append(".polyaxon.com")
        if platform_host:
            allowed_hosts.append(platform_host)

        return allowed_hosts

    context["ALLOWED_HOSTS"] = get_allowed_hosts()

    processors = processors or []
    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",
        "polycommon.settings.context_processors.versions",
        "polycommon.settings.context_processors.ui_offline",
        "polycommon.settings.context_processors.ui_enabled",
    ] + processors

    context["FRONTEND_DEBUG"] = config.get_boolean("POLYAXON_FRONTEND_DEBUG")

    template_debug = (config.get_boolean("DJANGO_TEMPLATE_DEBUG",
                                         is_optional=True)
                      or config.is_debug_mode)
    context["UI_ADMIN_ENABLED"] = config.get_boolean(
        POLYAXON_KEYS_UI_ADMIN_ENABLED, is_optional=True, default=False)
    context["UI_OFFLINE"] = config.get_boolean(POLYAXON_KEYS_UI_OFFLINE,
                                               is_optional=True,
                                               default=False)
    context["UI_ENABLED"] = config.get_boolean(POLYAXON_KEYS_UI_ENABLED,
                                               is_optional=True,
                                               default=True)
    context["TEMPLATES_DEBUG"] = template_debug
    context["LIST_TEMPLATE_CONTEXT_PROCESSORS"] = processors
    context["TEMPLATES"] = [{
        "BACKEND": "django.template.backends.django.DjangoTemplates",
        "APP_DIRS": True,
        "OPTIONS": {
            "debug": template_debug,
            "context_processors": processors
        },
    }]
예제 #4
0
def set_celery(context, config: ConfigManager, routes: Dict):
    context["CELERY_TASK_TRACK_STARTED"] = config.get_boolean(
        "POLYAXON_CELERY_TASK_TRACK_STARTED", is_optional=True, default=True)

    context["CELERY_BROKER_POOL_LIMIT"] = config.get_int(
        "POLYAXON_CELERY_BROKER_POOL_LIMIT", is_optional=True, default=100)

    context["CELERY_BROKER_BACKEND"] = config.broker_backend
    confirm_publish = config.get_boolean("POLYAXON_CELERY_CONFIRM_PUBLISH",
                                         is_optional=True,
                                         default=True)
    context["CELERY_CONFIRM_PUBLISH"] = confirm_publish
    if config.is_rabbitmq_broker and confirm_publish:
        # see https://github.com/celery/celery/issues/5410 for details
        context["CELERY_BROKER_TRANSPORT_OPTIONS"] = {"confirm_publish": True}

    context["CELERY_BROKER_URL"] = config.get_broker_url()

    context["INTERNAL_EXCHANGE"] = config.get_string(
        "POLYAXON_INTERNAL_EXCHANGE", is_optional=True, default="internal")

    result_bucked = config.get_string(
        "POLYAXON_REDIS_CELERY_RESULT_BACKEND_URL",
        is_optional=True,
    )
    if result_bucked:
        context["CELERY_RESULT_BACKEND"] = config.get_redis_url(
            "POLYAXON_REDIS_CELERY_RESULT_BACKEND_URL")

    context["CELERY_WORKER_PREFETCH_MULTIPLIER"] = config.get_int(
        "POLYAXON_CELERY_WORKER_PREFETCH_MULTIPLIER",
        is_optional=True,
        default=4)

    eager_mode = config.get_boolean("POLYAXON_CELERY_TASK_ALWAYS_EAGER")
    context["CELERY_TASK_ALWAYS_EAGER"] = eager_mode
    if eager_mode:
        context["CELERY_BROKER_TRANSPORT"] = "memory"

    context["CELERY_ACCEPT_CONTENT"] = ["application/json"]
    context["CELERY_TASK_SERIALIZER"] = "json"
    context["CELERY_RESULT_SERIALIZER"] = "json"
    context["CELERY_TASK_IGNORE_RESULT"] = True
    context["CELERY_TIMEZONE"] = config.timezone
    context["CELERY_HARD_TIME_LIMIT_DELAY"] = config.get_int(
        "POLYAXON_CELERY_HARD_TIME_LIMIT_DELAY", is_optional=True, default=180)

    context["CELERY_WORKER_MAX_TASKS_PER_CHILD"] = config.get_int(
        "POLYAXON_CELERY_WORKER_MAX_TASKS_PER_CHILD",
        is_optional=True,
        default=100)

    context["CELERY_WORKER_MAX_MEMORY_PER_CHILD"] = config.get_int(
        "POLYAXON_CELERY_WORKER_MAX_MEMORY_PER_CHILD",
        is_optional=True,
        default=400000)

    class Intervals:
        """All intervals are in seconds"""

        OPERATIONS_DEFAULT_RETRY_DELAY = config.get_int(
            "POLYAXON_INTERVALS_OPERATIONS_DEFAULT_RETRY_DELAY",
            is_optional=True,
            default=60,
        )
        OPERATIONS_MAX_RETRY_DELAY = config.get_int(
            "POLYAXON_INTERVALS_OPERATIONS_MAX_RETRY_DELAY",
            is_optional=True,
            default=60 * 60,
        )
        RUNS_SCHEDULER = config.get_int("POLYAXON_INTERVALS_RUNS_SCHEDULER",
                                        is_optional=True,
                                        default=30)

    context["Intervals"] = Intervals
    context["CELERY_TASK_ROUTES"] = routes
예제 #5
0
파일: api.py 프로젝트: zeyaddeeb/polyaxon
def set_api(context, config: ConfigManager, processors: List[str] = None):
    context["ROOT_URLCONF"] = "polyconf.urls"
    platform_host = config.get_string("POLYAXON_PLATFORM_HOST",
                                      is_optional=True)
    context["PLATFORM_HOST"] = platform_host

    def get_allowed_hosts():
        allowed_hosts = config.get_string("POLYAXON_ALLOWED_HOSTS",
                                          is_optional=True,
                                          is_list=True,
                                          default=["*"])  # type: list
        if platform_host:
            allowed_hosts.append(platform_host)
        if ".polyaxon.com" not in allowed_hosts:
            allowed_hosts.append(".polyaxon.com")
        pod_ip = config.get_string("POLYAXON_POD_IP", is_optional=True)
        if pod_ip:
            allowed_hosts.append(pod_ip)
        host_ip = config.get_string("POLYAXON_HOST_IP", is_optional=True)
        if host_ip:
            host_cidr = ".".join(host_ip.split(".")[:-1])
            allowed_hosts += ["{}.{}".format(host_cidr, i) for i in range(255)]

        return allowed_hosts

    context["ALLOWED_HOSTS"] = get_allowed_hosts()

    processors = processors or []
    processors = [
        "django.contrib.auth.context_processors.auth",
        "django.template.context_processors.debug",
        "django.template.context_processors.request",
        "django.template.context_processors.media",
        "django.template.context_processors.static",
        "django.template.context_processors.tz",
        "django.contrib.messages.context_processors.messages",
        "polycommon.settings.context_processors.version",
        "polycommon.settings.context_processors.assets_version",
        "polycommon.settings.context_processors.ui_offline",
        "polycommon.settings.context_processors.ui_enabled",
    ] + processors

    context["FRONTEND_DEBUG"] = config.get_boolean("POLYAXON_FRONTEND_DEBUG")

    template_debug = (config.get_boolean("DJANGO_TEMPLATE_DEBUG",
                                         is_optional=True)
                      or config.is_debug_mode)
    context["UI_ADMIN_ENABLED"] = config.get_boolean(
        POLYAXON_KEYS_UI_ADMIN_ENABLED, is_optional=True, default=False)
    context["UI_ASSETS_VERSION"] = config.get_string(
        POLYAXON_KEYS_UI_ASSETS_VERSION, is_optional=True, default="")
    context["UI_OFFLINE"] = config.get_boolean(POLYAXON_KEYS_UI_OFFLINE,
                                               is_optional=True,
                                               default=False)
    context["UI_ENABLED"] = config.get_boolean(POLYAXON_KEYS_UI_ENABLED,
                                               is_optional=True,
                                               default=True)
    context["TEMPLATES_DEBUG"] = template_debug
    context["LIST_TEMPLATE_CONTEXT_PROCESSORS"] = processors
    context["TEMPLATES"] = [{
        "BACKEND": "django.template.backends.django.DjangoTemplates",
        "APP_DIRS": True,
        "OPTIONS": {
            "debug": template_debug,
            "context_processors": processors
        },
    }]