Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
25 changes: 7 additions & 18 deletions interfaces/certificate_transfer/interface/v1/schema.py
Original file line number Diff line number Diff line change
@@ -1,26 +1,23 @@
"""This file defines the schemas for the provider and requirer sides of the `certificate_transfer` interface.
It exposes two interface_tester.schema_base.DataBagSchema subclasses called:
- ProviderSchema
- RequirerSchema

Examples:
ProviderSchema:
Provider:
unit: <empty>
app: {
"certificates": [
"-----BEGIN CERTIFICATE----- ...",
"-----BEGIN CERTIFICATE----- ..."
]
}
RequirerSchema:
Requirer:
unit: <empty>
app: <empty>
"""

from interface_tester.schema_base import DataBagSchema
from pydantic import BaseModel, Field


class CertificateTransferProviderAppData(BaseModel):
class ProviderAppData(BaseModel):
certificates: set[str] = Field(
description="The set of certificates that will be transferred to a requirer"
)
Expand All @@ -29,19 +26,11 @@ class CertificateTransferProviderAppData(BaseModel):
)


class ProviderSchema(DataBagSchema):
"""Provider schema for certificate_transfer."""

app: CertificateTransferProviderAppData


class CertificateTransferRequirerAppData(BaseModel):
class RequirerAppData(BaseModel):
version: int = Field(
description="The version of the interface used by this requirer", default=1
)


class RequirerSchema(DataBagSchema):
"""Requirer schema for certificate_transfer."""

app: CertificateTransferRequirerAppData
ProviderUnitData = None
RequirerUnitData = None
35 changes: 11 additions & 24 deletions interfaces/tls-certificates/interface/v1/schema.py
Original file line number Diff line number Diff line change
@@ -1,11 +1,7 @@
"""This file defines the schemas for the provider and requirer sides of the `tls-certificates` interface.

It exposes two interfaces.schema_base.DataBagSchema subclasses called:
- ProviderSchema
- RequirerSchema

Examples:
ProviderSchema:
Provider:
unit: <empty>
app: {
"certificates": [
Expand Down Expand Up @@ -41,7 +37,7 @@
"provider_type": "acme"
}
}
RequirerSchema:
Requirer:
unit: {
"certificate_signing_requests": [
{
Expand All @@ -53,8 +49,7 @@
app: <empty>
"""

from interface_tester.schema_base import DataBagSchema
from pydantic import BaseModel, Field, Json
from pydantic import BaseModel, Field


class Certificate(BaseModel):
Expand Down Expand Up @@ -138,16 +133,16 @@ class Capabilities(BaseModel):
)


class ProviderApplicationData(BaseModel):
class ProviderAppData(BaseModel):
"""Provider application data model."""

certificates: Json[list[Certificate]] | None = Field(
certificates: list[Certificate] | None = Field(
default=None, description="List of certificates."
)
request_errors: Json[list[RequestError]] | None = Field(
request_errors: list[RequestError] | None = Field(
default=None, description="List of request errors."
)
capabilities: Json[Capabilities] | None = Field(
capabilities: Capabilities | None = Field(
default=None, description="Best-effort provider capabilities."
)

Expand All @@ -158,19 +153,11 @@ class RequirerData(BaseModel):
The same model is used for the unit and application data.
"""

certificate_signing_requests: Json[list[CertificateSigningRequest]] = Field(
certificate_signing_requests: list[CertificateSigningRequest] = Field(
description="List of certificate signing requests."
)


class ProviderSchema(DataBagSchema):
"""Provider schema for TLS Certificates."""

app: ProviderApplicationData # pyright: ignore[reportGeneralTypeIssues,reportIncompatibleVariableOverride]


class RequirerSchema(DataBagSchema):
"""Requirer schema for TLS Certificates."""

app: RequirerData # pyright: ignore[reportGeneralTypeIssues,reportIncompatibleVariableOverride]
unit: RequirerData # pyright: ignore[reportGeneralTypeIssues,reportIncompatibleVariableOverride]
ProviderUnitData = None
RequirerAppData = RequirerData
RequirerUnitData = RequirerData
17 changes: 5 additions & 12 deletions interfaces/vault-autounseal/interface/v0/schema.py
Original file line number Diff line number Diff line change
@@ -1,15 +1,9 @@
"""This file defines the schemas for the provider and requirer sides of this relation interface.
"""This file defines the schemas for the provider and requirer sides of this relation interface."""

It must expose two interfaces.schema_base.DataBagSchema subclasses called:
- ProviderSchema
- RequirerSchema
"""

from interface_tester.schema_base import DataBagSchema
from pydantic import BaseModel, Field


class VaultAutounsealProviderSchema(BaseModel):
class ProviderAppData(BaseModel):
"""Provider side of the vault-autounseal relation interface."""

address: str = Field(description="The address of the Vault server to connect to.")
Expand All @@ -27,7 +21,6 @@ class VaultAutounsealProviderSchema(BaseModel):
)


class ProviderSchema(DataBagSchema):
"""The schema for the provider side of this interface."""

app: VaultAutounsealProviderSchema # type: ignore
ProviderUnitData = None
RequirerAppData = None
RequirerUnitData = None
30 changes: 7 additions & 23 deletions interfaces/vault-kv/interface/v0/schema.py
Original file line number Diff line number Diff line change
@@ -1,17 +1,11 @@
"""This file defines the schemas for the provider and requirer sides of this relation interface.

It must expose two interfaces.schema_base.DataBagSchema subclasses called:
- ProviderSchema
- RequirerSchema
"""
"""This file defines the schemas for the provider and requirer sides of this relation interface."""

from collections.abc import Mapping

from interface_tester.schema_base import DataBagSchema
from pydantic import BaseModel, Field, Json
from pydantic import BaseModel, Field


class VaultKvProviderSchema(BaseModel):
class ProviderAppData(BaseModel):
vault_url: str = Field(description="The URL of the Vault server to connect to.")
mount: str = Field(
description=(
Expand All @@ -22,7 +16,7 @@ class VaultKvProviderSchema(BaseModel):
ca_certificate: str = Field(
description="The CA certificate to use when validating the Vault server's certificate."
)
credentials: Json[Mapping[str, str]] = Field(
credentials: Mapping[str, str] = Field(
description=(
"Mapping of unit name and credentials for that unit."
" Credentials are a juju secret containing a 'role-id' and a 'role-secret-id'."
Expand All @@ -32,7 +26,7 @@ class VaultKvProviderSchema(BaseModel):
)


class AppVaultKvRequirerSchema(BaseModel):
class RequirerAppData(BaseModel):
mount_suffix: str = Field(
description="Suffix to append to the mount name to get the KV mount."
)
Expand All @@ -47,7 +41,7 @@ class AppVaultKvRequirerSchema(BaseModel):
)


class UnitVaultKvRequirerSchema(BaseModel):
class RequirerUnitData(BaseModel):
egress_subnet: str = Field(
description="A string of egress subnets separated by commas, in CIDR notation."
)
Expand All @@ -58,14 +52,4 @@ class UnitVaultKvRequirerSchema(BaseModel):
)


class ProviderSchema(DataBagSchema):
"""The schema for the provider side of this interface."""

app: VaultKvProviderSchema


class RequirerSchema(DataBagSchema):
"""The schema for the requirer side of this interface."""

app: AppVaultKvRequirerSchema
unit: UnitVaultKvRequirerSchema
ProviderUnitData = None
Loading