Skip to main content

Versioned knative-serving models for cloudcoil

Project description

cloudcoil-models-knative-serving

Versioned knative-serving models for cloudcoil.

[!WARNING]
This repository is auto-generated from the cloudcoil repository. Please do not submit pull requests here. Instead, submit them to the main repository at https://github.com/cloudcoil/cloudcoil.

🔧 Installation

[!NOTE] For versioning information and compatibility, see the Versioning Guide.

Using uv (recommended):

# Install with Knative Serving support
uv add cloudcoil.models.knative-serving

Using pip:

pip install cloudcoil.models.knative-serving

💡 Examples

Using Knative Serving Models

from cloudcoil import apimachinery
import cloudcoil.models.knative_serving.serving.v1 as serving

# Create a Service
service = serving.Service(
    metadata=apimachinery.ObjectMeta(name="hello"),
    spec=serving.ServiceSpec(
        template=serving.Template(
            spec=serving.Spec(
                containers=[
                    serving.Container(
                        image="gcr.io/knative-samples/helloworld-go",
                        ports=[serving.Port(container_port=8080)],
                        env=[
                            serving.Env(name="TARGET", value="World")
                        ]
                    )
                ]
            )
        )
    )
).create()

# List Services
for svc in serving.Service.list():
    print(f"Found Service: {svc.metadata.name}")

Using the Fluent Builder API

Cloudcoil provides a powerful fluent builder API for Knative Serving resources:

from cloudcoil.models.knative_serving.serving.v1 import Service

# Create a Service using the fluent builder
service = (
    Service.builder()
    # Metadata configuration
    .metadata(lambda metadata: metadata
        .name("hello")
        .namespace("default")
        .labels({"app": "hello"})
    )
    # Complex nested structures with proper collection handling
    .spec(lambda spec: spec
        .template(lambda template: template
            .metadata(lambda t_metadata: t_metadata
                .labels({"app": "hello"})
            )
            .spec(lambda revision_spec: revision_spec
                # Container list with nested collection handling
                .containers(lambda containers: containers.add(
                    lambda container: container
                    .name("hello")
                    .image("gcr.io/knative-samples/helloworld-go")
                    # Collections use add() helper for better type support
                    .ports(lambda ports: ports
                        .add(lambda p: p.container_port(8080))
                    )
                    .env(lambda env: env
                        .add(lambda e: e.name("TARGET").value("World"))
                        .add(lambda e: e.name("PORT").value("8080"))
                    )
                    # Resource requirements can be chained
                    .resources(lambda r: r
                        .requests({"cpu": "100m", "memory": "128Mi"})
                        .limits({"cpu": "200m", "memory": "256Mi"})
                    )
                ))
            )
        )
    )
    .build()
)

Using the Context Manager Builder API

For complex serving configurations, you can use the context manager-based builder:

from cloudcoil.models.knative_serving.serving.v1 import Service

# Create a Service using context managers
with Service.new() as service:
    with service.metadata() as metadata:
        metadata.name("hello")
        metadata.namespace("default")
    
    with service.spec() as spec:
        with spec.template() as template:
            with template.spec() as revision_spec:
                with revision_spec.containers() as container_list:
                    with container_list.add() as container:
                        container.name("hello")
                        container.image("gcr.io/knative-samples/helloworld-go")
                        with container.ports() as port_list:
                            with port_list.add() as port:
                                port.container_port(8080)
                        with container.env() as env_list:
                            with env_list.add() as env:
                                env.name("TARGET")
                                env.value("World")

final_service = service.build()

Mixing Builder Styles

You can mix different builder styles based on your needs:

from cloudcoil.models.knative_serving.serving.v1 import Service
from cloudcoil import apimachinery

# Create a Service using mixed styles
with Service.new() as service:
    # Direct object initialization
    service.metadata(apimachinery.ObjectMeta(
        name="hello"
    ))
    
    # Fluent style for spec
    service.spec(lambda s: s
        .template(lambda t: t
            .spec(lambda rs: rs
                .containers(lambda containers: containers.add(
                    lambda container: container
                    .name("hello")
                    .image("gcr.io/knative-samples/helloworld-go")
                    # Collections use add() helper for better type support
                    .ports(lambda ports: ports
                        .add(lambda p: p.container_port(8080))
                    )
                ))
            )
        )
    )

final_service = service.build()

📚 Documentation

For complete documentation, visit cloudcoil.github.io/cloudcoil

📜 License

Apache License, Version 2.0 - see LICENSE

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

cloudcoil_models_knative_serving-1.17.0.1.tar.gz (118.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

File details

Details for the file cloudcoil_models_knative_serving-1.17.0.1.tar.gz.

File metadata

File hashes

Hashes for cloudcoil_models_knative_serving-1.17.0.1.tar.gz
Algorithm Hash digest
SHA256 2187e08c281fa630f676b5d4fab6b1d91d8a5160f6d00ba6a9a9cb8eccfddbd2
MD5 3d7e32003ec1738c33728c64f932cb00
BLAKE2b-256 a470157e2d6cc9164976cb41e7818631c6ab8db979783810eb1bab8046d4d80c

See more details on using hashes here.

Provenance

The following attestation bundles were made for cloudcoil_models_knative_serving-1.17.0.1.tar.gz:

Publisher: pypi_publish.yml on cloudcoil/models-knative-serving

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file cloudcoil_models_knative_serving-1.17.0.1-py3-none-any.whl.

File metadata

File hashes

Hashes for cloudcoil_models_knative_serving-1.17.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 bede3b477e46caf156f843d5dd7823448bff0948cddb4c54c34be6ac47bc687f
MD5 3b8ddc65330783ef6e2b736ab2d4562e
BLAKE2b-256 4dea851a0dc15784a48628ae6d716adae5947de3ad9a1a817c32542dd191d1d7

See more details on using hashes here.

Provenance

The following attestation bundles were made for cloudcoil_models_knative_serving-1.17.0.1-py3-none-any.whl:

Publisher: pypi_publish.yml on cloudcoil/models-knative-serving

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page