Skip to content

Commit

Permalink
feat: Adds pydantic models for k8s v1.30.0
Browse files Browse the repository at this point in the history
  • Loading branch information
thiagopena committed Apr 28, 2024
1 parent faae3fa commit 8e2e0ca
Show file tree
Hide file tree
Showing 48 changed files with 19,570 additions and 0 deletions.
12 changes: 12 additions & 0 deletions README.rst
Original file line number Diff line number Diff line change
@@ -1,3 +1,6 @@
Kubedantic
======================================================

.. image:: https://img.shields.io/pypi/v/kubedantic.svg
:target: https://pypi.org/project/kubedantic

Expand All @@ -16,3 +19,12 @@
.. image:: https://img.shields.io/badge/skeleton-2024-informational
:target: https://blog.jaraco.com/skeleton

Kubedantic - Pydantic models for Kubernetes

Overview
--------

Kubedantic is a Python library that provides Pydantic models for Kubernetes resources.

Models are generated using the `Kubernetes OpenAPI specification <https://github.com/kubernetes/kubernetes/tree/master/api/openapi-spec/v3>`_ and `datamodel-code-generator <https://github.com/koxudaxi/datamodel-code-generator>`_.
Empty file.
1,367 changes: 1,367 additions & 0 deletions src/kubedantic/models/io/k8s/api/admissionregistration/v1.py

Large diffs are not rendered by default.

Empty file.
1,183 changes: 1,183 additions & 0 deletions src/kubedantic/models/io/k8s/api/apps/v1.py

Large diffs are not rendered by default.

Empty file.
249 changes: 249 additions & 0 deletions src/kubedantic/models/io/k8s/api/authentication/v1.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,249 @@
# generated by datamodel-codegen:
# timestamp: 2024-04-28T13:01:54+00:00
# k8s version: v1.30.0

from __future__ import annotations

from datetime import datetime
from typing import Dict, List, Optional

from pydantic import BaseModel, Field

from ...apimachinery.pkg.apis.meta import v1


class BoundObjectReference(BaseModel):
apiVersion: Optional[str] = Field(
default=None, description="API version of the referent."
)
kind: Optional[str] = Field(
default=None,
description="Kind of the referent. Valid kinds are 'Pod' and 'Secret'.",
)
name: Optional[str] = Field(default=None, description="Name of the referent.")
uid: Optional[str] = Field(default=None, description="UID of the referent.")


class TokenRequestSpec(BaseModel):
audiences: List[str] = Field(
...,
description=(
"Audiences are the intendend audiences of the token. A recipient of a token"
" must identify themself with an identifier in the list of audiences of the"
" token, and otherwise should reject the token. A token issued for multiple"
" audiences may be used to authenticate against any of the audiences listed"
" but implies a high degree of trust between the target audiences."
),
)
boundObjectRef: Optional[BoundObjectReference] = Field(
default=None,
description=(
"BoundObjectRef is a reference to an object that the token will be bound"
" to. The token will only be valid for as long as the bound object exists."
" NOTE: The API server's TokenReview endpoint will validate the"
" BoundObjectRef, but other audiences may not. Keep ExpirationSeconds small"
" if you want prompt revocation."
),
)
expirationSeconds: Optional[int] = Field(
default=None,
description=(
"ExpirationSeconds is the requested duration of validity of the request."
" The token issuer may return a token with a different validity duration so"
" a client needs to check the 'expiration' field in a response."
),
)


class TokenReviewSpec(BaseModel):
audiences: Optional[List[str]] = Field(
default=None,
description=(
"Audiences is a list of the identifiers that the resource server presented"
" with the token identifies as. Audience-aware token authenticators will"
" verify that the token was intended for at least one of the audiences in"
" this list. If no audiences are provided, the audience will default to the"
" audience of the Kubernetes apiserver."
),
)
token: Optional[str] = Field(
default=None, description="Token is the opaque bearer token."
)


class UserInfo(BaseModel):
extra: Optional[Dict[str, List[str]]] = Field(
default=None,
description="Any additional information provided by the authenticator.",
)
groups: Optional[List[str]] = Field(
default=None, description="The names of groups this user is a part of."
)
uid: Optional[str] = Field(
default=None,
description=(
"A unique value that identifies this user across time. If this user is"
" deleted and another user by the same name is added, they will have"
" different UIDs."
),
)
username: Optional[str] = Field(
default=None,
description=(
"The name that uniquely identifies this user among all active users."
),
)


class TokenRequestStatus(BaseModel):
expirationTimestamp: datetime = Field(
...,
description=(
"ExpirationTimestamp is the time of expiration of the returned token."
),
)
token: str = Field(..., description="Token is the opaque bearer token.")


class SelfSubjectReviewStatus(BaseModel):
userInfo: Optional[UserInfo] = Field(
default=None, description="User attributes of the user making this request."
)


class TokenReviewStatus(BaseModel):
audiences: Optional[List[str]] = Field(
default=None,
description=(
"Audiences are audience identifiers chosen by the authenticator that are"
" compatible with both the TokenReview and token. An identifier is any"
" identifier in the intersection of the TokenReviewSpec audiences and the"
" token's audiences. A client of the TokenReview API that sets the"
" spec.audiences field should validate that a compatible audience"
" identifier is returned in the status.audiences field to ensure that the"
" TokenReview server is audience aware. If a TokenReview returns an empty"
' status.audience field where status.authenticated is "true", the token is'
" valid against the audience of the Kubernetes API server."
),
)
authenticated: Optional[bool] = Field(
default=None,
description=(
"Authenticated indicates that the token was associated with a known user."
),
)
error: Optional[str] = Field(
default=None, description="Error indicates that the token couldn't be checked"
)
user: Optional[UserInfo] = Field(
default=None,
description="User is the UserInfo associated with the provided token.",
)


class TokenRequest(BaseModel):
apiVersion: Optional[str] = Field(
default="authentication.k8s.io/v1",
description=(
"APIVersion defines the versioned schema of this representation of an"
" object. Servers should convert recognized schemas to the latest internal"
" value, and may reject unrecognized values. More info:"
" https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources"
),
)
kind: Optional[str] = Field(
default="TokenRequest",
description=(
"Kind is a string value representing the REST resource this object"
" represents. Servers may infer this from the endpoint the client submits"
" requests to. Cannot be updated. In CamelCase. More info:"
" https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds"
),
)
metadata: Optional[v1.ObjectMeta] = Field(
default=None,
description=(
"Standard object's metadata. More info:"
" https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata"
),
)
spec: TokenRequestSpec = Field(
..., description="Spec holds information about the request being evaluated"
)
status: Optional[TokenRequestStatus] = Field(
default=None,
description=(
"Status is filled in by the server and indicates whether the token can be"
" authenticated."
),
)


class SelfSubjectReview(BaseModel):
apiVersion: Optional[str] = Field(
default="authentication.k8s.io/v1",
description=(
"APIVersion defines the versioned schema of this representation of an"
" object. Servers should convert recognized schemas to the latest internal"
" value, and may reject unrecognized values. More info:"
" https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources"
),
)
kind: Optional[str] = Field(
default="SelfSubjectReview",
description=(
"Kind is a string value representing the REST resource this object"
" represents. Servers may infer this from the endpoint the client submits"
" requests to. Cannot be updated. In CamelCase. More info:"
" https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds"
),
)
metadata: Optional[v1.ObjectMeta] = Field(
default=None,
description=(
"Standard object's metadata. More info:"
" https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata"
),
)
status: Optional[SelfSubjectReviewStatus] = Field(
default=None,
description="Status is filled in by the server with the user attributes.",
)


class TokenReview(BaseModel):
apiVersion: Optional[str] = Field(
default="authentication.k8s.io/v1",
description=(
"APIVersion defines the versioned schema of this representation of an"
" object. Servers should convert recognized schemas to the latest internal"
" value, and may reject unrecognized values. More info:"
" https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources"
),
)
kind: Optional[str] = Field(
default="TokenReview",
description=(
"Kind is a string value representing the REST resource this object"
" represents. Servers may infer this from the endpoint the client submits"
" requests to. Cannot be updated. In CamelCase. More info:"
" https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds"
),
)
metadata: Optional[v1.ObjectMeta] = Field(
default=None,
description=(
"Standard object's metadata. More info:"
" https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata"
),
)
spec: TokenReviewSpec = Field(
..., description="Spec holds information about the request being evaluated"
)
status: Optional[TokenReviewStatus] = Field(
default=None,
description=(
"Status is filled in by the server and indicates whether the request can be"
" authenticated."
),
)
Empty file.
Loading

0 comments on commit 8e2e0ca

Please sign in to comment.