Skip to content

Commit

Permalink
chore: move rest proxy to own module
Browse files Browse the repository at this point in the history
The REST Proxy requires still split from karapace.core modules,
e.g. configuration class is there.
  • Loading branch information
jjaakola-aiven committed Jan 30, 2025
1 parent 8ee3348 commit ea33d6f
Show file tree
Hide file tree
Showing 130 changed files with 657 additions and 582 deletions.
2 changes: 1 addition & 1 deletion container/compose.yml
Original file line number Diff line number Diff line change
Expand Up @@ -105,7 +105,7 @@ services:
entrypoint:
- python3
- -m
- karapace.core.karapace_all
- karapace.kafka_rest_apis
depends_on:
- kafka
- karapace-schema-registry
Expand Down
6 changes: 3 additions & 3 deletions mypy.ini
Original file line number Diff line number Diff line change
Expand Up @@ -59,16 +59,16 @@ ignore_errors = True
[mypy-karapace.core.utils]
ignore_errors = True

[mypy-karapace.core.rapu]
[mypy-karapace.rapu]
ignore_errors = True

[mypy-karapace.core.serialization]
ignore_errors = True

[mypy-karapace.core.kafka_rest_apis.consumer_manager]
[mypy-karapace.kafka_rest_apis.consumer_manager]
ignore_errors = True

[mypy-karapace.core.kafka_rest_apis]
[mypy-karapace.kafka_rest_apis]
ignore_errors = True

# Third-party libraries with no stubs available. Before adding libraries here,
Expand Down
2 changes: 1 addition & 1 deletion performance-test/README.rst
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ Create if necessary the `_schemas` topic to Kafka::

Run Karapace from repository root::
cd ..
python -m karapace.core.karapace_all karapace.config.json
python -m karapace.karapace_rest_apis karapace.config.json

Performance test is run from the shell script::
./run-locust-test.sh
Expand Down
2 changes: 1 addition & 1 deletion pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -64,7 +64,7 @@ classifiers=[
]

[project.scripts]
karapace = "karapace.core.karapace_all:main"
karapace = "karapace.kafka_rest_apis:main"
karapace_schema_backup = "karapace.backup.cli:main"
karapace_mkpasswd = "karapace.core.auth:main"

Expand Down
2 changes: 1 addition & 1 deletion src/karapace/__main__.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,10 @@
See LICENSE for details
"""

from karapace.core.container import KarapaceContainer
from karapace.api.container import SchemaRegistryContainer
from karapace.api.factory import create_karapace_application, karapace_schema_registry_lifespan
from karapace.api.telemetry.container import TelemetryContainer
from karapace.core.container import KarapaceContainer

import karapace.api.controller
import karapace.api.factory
Expand Down
4 changes: 2 additions & 2 deletions src/karapace/api/container.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,10 @@
"""

from dependency_injector import containers, providers
from karapace.core.container import KarapaceContainer
from karapace.api.controller import KarapaceSchemaRegistryController
from karapace.core.schema_registry import KarapaceSchemaRegistry
from karapace.api.telemetry.container import TelemetryContainer
from karapace.core.container import KarapaceContainer
from karapace.core.schema_registry import KarapaceSchemaRegistry


class SchemaRegistryContainer(containers.DeclarativeContainer):
Expand Down
39 changes: 19 additions & 20 deletions src/karapace/api/controller.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,22 @@
from avro.errors import SchemaParseException
from dependency_injector.wiring import inject, Provide
from fastapi import Depends, HTTPException, Request, status
from karapace.api.forward_client import ForwardClient
from karapace.api.routers.errors import no_primary_url_error, SchemaErrorCodes, SchemaErrorMessages
from karapace.api.routers.requests import (
CompatibilityCheckResponse,
CompatibilityLevelResponse,
CompatibilityRequest,
CompatibilityResponse,
ModeResponse,
SchemaIdResponse,
SchemaListingItem,
SchemaRequest,
SchemaResponse,
SchemasResponse,
SubjectSchemaVersionResponse,
SubjectVersion,
)
from karapace.core.auth import AuthenticatorAndAuthorizer, Operation, User
from karapace.core.compatibility import CompatibilityModes
from karapace.core.compatibility.jsonschema.checks import is_incompatible
Expand All @@ -30,7 +46,6 @@
SubjectSoftDeletedException,
VersionNotFoundException,
)
from karapace.api.forward_client import ForwardClient
from karapace.core.protobuf.exception import ProtobufUnresolvedDependencyException
from karapace.core.schema_models import (
ParsedTypedSchema,
Expand All @@ -41,25 +56,10 @@
Versioner,
)
from karapace.core.schema_references import LatestVersionReference, Reference
from karapace.core.schema_registry import KarapaceSchemaRegistry
from karapace.core.statsd import StatsClient
from karapace.core.typing import JsonData, JsonObject, SchemaId, Subject, Version
from karapace.core.utils import JSONDecodeError
from karapace.core.schema_registry import KarapaceSchemaRegistry
from karapace.api.routers.errors import no_primary_url_error, SchemaErrorCodes, SchemaErrorMessages
from karapace.api.routers.requests import (
CompatibilityCheckResponse,
CompatibilityLevelResponse,
CompatibilityRequest,
CompatibilityResponse,
ModeResponse,
SchemaIdResponse,
SchemaListingItem,
SchemaRequest,
SchemaResponse,
SchemasResponse,
SubjectSchemaVersionResponse,
SubjectVersion,
)
from typing import Any, cast

import json
Expand Down Expand Up @@ -517,8 +517,7 @@ async def subject_version_delete(
detail={
"error_code": SchemaErrorCodes.SCHEMAVERSION_SOFT_DELETED.value,
"message": (
f"Subject '{subject}' Version {version} was soft deleted. "
"Set permanent=true to delete permanently"
f"Subject '{subject}' Version {version} was soft deleted. Set permanent=true to delete permanently"
),
},
) from exc
Expand All @@ -528,7 +527,7 @@ async def subject_version_delete(
detail={
"error_code": SchemaErrorCodes.SCHEMAVERSION_NOT_SOFT_DELETED.value,
"message": (
f"Subject '{subject}' Version {version} was not deleted " "first before being permanently deleted"
f"Subject '{subject}' Version {version} was not deleted first before being permanently deleted"
),
},
) from exc
Expand Down
12 changes: 6 additions & 6 deletions src/karapace/api/factory.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,17 +8,17 @@
from dependency_injector.wiring import inject, Provide
from fastapi import Depends, FastAPI
from karapace import version as karapace_version
from karapace.core.auth import AuthenticatorAndAuthorizer
from karapace.core.config import Config
from karapace.api.forward_client import ForwardClient
from karapace.core.logging_setup import configure_logging, log_config_without_secrets
from karapace.core.statsd import StatsClient
from karapace.api.container import SchemaRegistryContainer
from karapace.api.forward_client import ForwardClient
from karapace.api.http_handlers import setup_exception_handlers
from karapace.api.middlewares import setup_middlewares
from karapace.core.schema_registry import KarapaceSchemaRegistry
from karapace.api.routers.setup import setup_routers
from karapace.api.telemetry.setup import setup_metering, setup_tracing
from karapace.core.auth import AuthenticatorAndAuthorizer
from karapace.core.config import Config
from karapace.core.logging_setup import configure_logging, log_config_without_secrets
from karapace.core.schema_registry import KarapaceSchemaRegistry
from karapace.core.statsd import StatsClient
from typing import AsyncContextManager

import logging
Expand Down
4 changes: 2 additions & 2 deletions src/karapace/api/routers/compatibility.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,14 +5,14 @@

from dependency_injector.wiring import inject, Provide
from fastapi import APIRouter, Depends
from karapace.core.auth import AuthenticatorAndAuthorizer, Operation, User
from karapace.core.typing import Subject
from karapace.api.container import SchemaRegistryContainer
from karapace.api.controller import KarapaceSchemaRegistryController
from karapace.api.routers.errors import unauthorized
from karapace.api.routers.raw_path_router import RawPathRoute
from karapace.api.routers.requests import CompatibilityCheckResponse, SchemaRequest
from karapace.api.user import get_current_user
from karapace.core.auth import AuthenticatorAndAuthorizer, Operation, User
from karapace.core.typing import Subject
from typing import Annotated
from urllib.parse import unquote_plus

Expand Down
9 changes: 4 additions & 5 deletions src/karapace/api/routers/config.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,20 +5,19 @@

from dependency_injector.wiring import inject, Provide
from fastapi import APIRouter, Depends, Request
from karapace.core.auth import AuthenticatorAndAuthorizer, Operation, User
from karapace.api.forward_client import ForwardClient
from karapace.core.typing import Subject
from karapace.api.container import SchemaRegistryContainer
from karapace.api.controller import KarapaceSchemaRegistryController
from karapace.core.schema_registry import KarapaceSchemaRegistry
from karapace.api.forward_client import ForwardClient
from karapace.api.routers.errors import no_primary_url_error, unauthorized
from karapace.api.routers.raw_path_router import RawPathRoute
from karapace.api.routers.requests import CompatibilityLevelResponse, CompatibilityRequest, CompatibilityResponse
from karapace.api.user import get_current_user
from karapace.core.auth import AuthenticatorAndAuthorizer, Operation, User
from karapace.core.schema_registry import KarapaceSchemaRegistry
from karapace.core.typing import Subject
from typing import Annotated
from urllib.parse import unquote_plus


config_router = APIRouter(
prefix="/config",
tags=["config"],
Expand Down
6 changes: 3 additions & 3 deletions src/karapace/api/routers/health.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,12 +5,12 @@

from dependency_injector.wiring import inject, Provide
from fastapi import APIRouter, Depends, HTTPException, status
from karapace.api.container import SchemaRegistryContainer
from karapace.api.telemetry.tracer import Tracer
from karapace.core.schema_registry import KarapaceSchemaRegistry
from opentelemetry.trace import Span
from opentelemetry.trace.status import StatusCode
from pydantic import BaseModel
from karapace.api.container import SchemaRegistryContainer
from karapace.core.schema_registry import KarapaceSchemaRegistry
from karapace.api.telemetry.tracer import Tracer


class HealthStatus(BaseModel):
Expand Down
6 changes: 3 additions & 3 deletions src/karapace/api/routers/master_availability.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,11 +5,11 @@

from dependency_injector.wiring import inject, Provide
from fastapi import APIRouter, Depends, Request, Response
from karapace.core.config import Config
from karapace.api.forward_client import ForwardClient
from pydantic import BaseModel
from karapace.api.container import SchemaRegistryContainer
from karapace.api.forward_client import ForwardClient
from karapace.core.config import Config
from karapace.core.schema_registry import KarapaceSchemaRegistry
from pydantic import BaseModel
from typing import Final

import logging
Expand Down
2 changes: 1 addition & 1 deletion src/karapace/api/routers/metrics.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,8 @@

from dependency_injector.wiring import inject, Provide
from fastapi import APIRouter, Depends, Response
from karapace.core.instrumentation.prometheus import PrometheusInstrumentation
from karapace.api.container import SchemaRegistryContainer
from karapace.core.instrumentation.prometheus import PrometheusInstrumentation

metrics_router = APIRouter(
prefix=PrometheusInstrumentation.METRICS_ENDPOINT_PATH,
Expand Down
4 changes: 2 additions & 2 deletions src/karapace/api/routers/mode.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,14 +5,14 @@

from dependency_injector.wiring import inject, Provide
from fastapi import APIRouter, Depends
from karapace.core.auth import AuthenticatorAndAuthorizer, Operation, User
from karapace.core.typing import Subject
from karapace.api.container import SchemaRegistryContainer
from karapace.api.controller import KarapaceSchemaRegistryController
from karapace.api.routers.errors import unauthorized
from karapace.api.routers.raw_path_router import RawPathRoute
from karapace.api.routers.requests import ModeResponse
from karapace.api.user import get_current_user
from karapace.core.auth import AuthenticatorAndAuthorizer, Operation, User
from karapace.core.typing import Subject
from typing import Annotated
from urllib.parse import unquote_plus

Expand Down
2 changes: 1 addition & 1 deletion src/karapace/api/routers/requests.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,10 @@
See LICENSE for details
"""

from karapace.api.routers.errors import KarapaceValidationError
from karapace.core.schema_type import SchemaType
from karapace.core.typing import Subject
from pydantic import BaseModel, ConfigDict, Field, field_validator
from karapace.api.routers.errors import KarapaceValidationError
from typing import Any


Expand Down
2 changes: 1 addition & 1 deletion src/karapace/api/routers/schemas.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,11 +5,11 @@

from dependency_injector.wiring import inject, Provide
from fastapi import APIRouter, Depends, Query
from karapace.core.auth import AuthenticatorAndAuthorizer, User
from karapace.api.container import SchemaRegistryContainer
from karapace.api.controller import KarapaceSchemaRegistryController
from karapace.api.routers.requests import SchemaListingItem, SchemasResponse, SubjectVersion
from karapace.api.user import get_current_user
from karapace.core.auth import AuthenticatorAndAuthorizer, User
from typing import Annotated

schemas_router = APIRouter(
Expand Down
8 changes: 4 additions & 4 deletions src/karapace/api/routers/subjects.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,16 +5,16 @@

from dependency_injector.wiring import inject, Provide
from fastapi import APIRouter, Depends, Request
from karapace.core.auth import AuthenticatorAndAuthorizer, Operation, User
from karapace.api.forward_client import ForwardClient
from karapace.core.typing import Subject
from karapace.api.container import SchemaRegistryContainer
from karapace.api.controller import KarapaceSchemaRegistryController
from karapace.core.schema_registry import KarapaceSchemaRegistry
from karapace.api.forward_client import ForwardClient
from karapace.api.routers.errors import no_primary_url_error, unauthorized
from karapace.api.routers.raw_path_router import RawPathRoute
from karapace.api.routers.requests import SchemaIdResponse, SchemaRequest, SchemaResponse, SubjectSchemaVersionResponse
from karapace.api.user import get_current_user
from karapace.core.auth import AuthenticatorAndAuthorizer, Operation, User
from karapace.core.schema_registry import KarapaceSchemaRegistry
from karapace.core.typing import Subject
from typing import Annotated
from urllib.parse import unquote_plus

Expand Down
6 changes: 3 additions & 3 deletions src/karapace/api/telemetry/container.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,14 +4,14 @@
"""

from dependency_injector import containers, providers
from karapace.api.telemetry.meter import Meter
from karapace.api.telemetry.metrics import HTTPRequestMetrics
from karapace.api.telemetry.tracer import Tracer
from karapace.core.config import Config
from karapace.core.container import KarapaceContainer
from opentelemetry.sdk.resources import Resource
from opentelemetry.sdk.trace import TracerProvider
from opentelemetry.semconv.attributes import telemetry_attributes as T
from karapace.api.telemetry.meter import Meter
from karapace.api.telemetry.metrics import HTTPRequestMetrics
from karapace.api.telemetry.tracer import Tracer


def create_telemetry_resource(config: Config) -> Resource:
Expand Down
4 changes: 2 additions & 2 deletions src/karapace/api/telemetry/meter.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,10 +11,10 @@
from opentelemetry.sdk.metrics.export import (
ConsoleMetricExporter,
MetricExporter,
MetricExportResult,
MetricReader,
PeriodicExportingMetricReader,
MetricsData,
MetricExportResult,
PeriodicExportingMetricReader,
)
from typing import Any

Expand Down
6 changes: 3 additions & 3 deletions src/karapace/api/telemetry/metrics.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,11 @@
See LICENSE for details
"""

from fastapi import Request, Response, HTTPException
from opentelemetry.metrics import Counter, Histogram, UpDownCounter
from collections.abc import Mapping
from fastapi import HTTPException, Request, Response
from karapace.api.telemetry.meter import Meter
from opentelemetry.metrics import Counter, Histogram, UpDownCounter
from typing import Final
from collections.abc import Mapping

import time

Expand Down
2 changes: 1 addition & 1 deletion src/karapace/api/telemetry/middleware.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,10 +6,10 @@
from collections.abc import Awaitable, Callable
from dependency_injector.wiring import inject, Provide
from fastapi import FastAPI, Request, Response
from opentelemetry.trace import SpanKind, Status, StatusCode
from karapace.api.telemetry.container import TelemetryContainer
from karapace.api.telemetry.metrics import HTTPRequestMetrics
from karapace.api.telemetry.tracer import Tracer
from opentelemetry.trace import SpanKind, Status, StatusCode

import logging

Expand Down
6 changes: 3 additions & 3 deletions src/karapace/api/telemetry/setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,13 +4,13 @@
"""

from dependency_injector.wiring import inject, Provide
from karapace.api.telemetry.container import TelemetryContainer
from karapace.api.telemetry.meter import Meter
from karapace.api.telemetry.tracer import Tracer
from opentelemetry import metrics, trace
from opentelemetry.sdk.metrics import MeterProvider
from opentelemetry.sdk.resources import Resource
from opentelemetry.sdk.trace import TracerProvider
from karapace.api.telemetry.container import TelemetryContainer
from karapace.api.telemetry.meter import Meter
from karapace.api.telemetry.tracer import Tracer

import logging

Expand Down
Loading

0 comments on commit ea33d6f

Please sign in to comment.