Metadata-Version: 2.4
Name: eai-platform-infra
Version: 1.1.0
Summary: Pulumi stack program for the Extensibility AI dual-cloud platform
Requires-Python: >=3.11
Description-Content-Type: text/markdown
License-File: LICENSE.txt
Requires-Dist: eai-core-infra>=1.1.0
Requires-Dist: pulumi<4.0.0,>=3.0.0
Requires-Dist: pulumi-aws<7.0.0,>=6.0.0
Requires-Dist: pulumi-gcp<10.0.0,>=9.0.0
Requires-Dist: pulumi-github<7.0.0,>=6.13.1
Requires-Dist: pulumi-kubernetes<5.0.0,>=4.0.0
Requires-Dist: pulumi-random<5.0.0,>=4.0.0
Requires-Dist: pydantic>=2
Provides-Extra: dev
Requires-Dist: pytest>=7; extra == "dev"
Requires-Dist: ruff>=0.4; extra == "dev"
Provides-Extra: publish
Requires-Dist: twine>=5; extra == "publish"
Requires-Dist: keyring>=24; extra == "publish"
Requires-Dist: keyrings.google-artifactregistry-auth>=0.0.3; extra == "publish"
Dynamic: license-file

# eai-platform-infra

Pulumi stack program for the shared GCP/AWS platform (VPC, GKE Autopilot / EKS,
KEDA, Cluster Autoscaler on EKS, WIF, Artifact Registry, DNS/TLS, shared Gateway
/ Envoy edge). Orchestrates
`eai-core-infra` factories. Optional Workspace mail DNS TXT values are quoted
as a single character-string so SPF survives RFC 7208 concatenation.

## Config knobs (1.1.0)

All defaults equal the previous hard-coded values except `aws.eks.autoMode`.

| Key | Default | Notes |
|---|---|---|
| `aws.eks.autoMode` | `true` | EKS Auto Mode; set `false` to keep the node group + ALB controller + Cluster Autoscaler |
| `aws.eks.version` / `nodeInstanceType` / `nodeDesiredSize` / `nodeMinSize` / `nodeMaxSize` | core defaults | node-group mode only for the node knobs |
| `gcp.cloudSql.publicIp` | `true` | also `databaseVersion`, `backupEnabled`, `backupStartTime`, `pointInTimeRecovery`, `transactionLogRetentionDays`, `backupRetentionDays` |
| `gcp.gke.gatewayApiChannel` | `CHANNEL_STANDARD` | |
| `<cloud>.edge.envoyGatewayVersion` / `oauth2ProxyImage` / `redisImage` | core constants | |
| `<cloud>.edge.envoyGateway.resources.{cpu,memory}.{request,limit}` | `50m`/`100m`, `128Mi`/`1Gi` | nested request/limit only |
| `<cloud>.edge.oauth2Proxy.replicas` | `1` | resources stay on `<cloud>.oauth2Proxy` |
| `<cloud>.edge.dummy.{image,replicas}` | nginx; `0` on GCP, `1` on AWS | GCP also `maxReplicas` (1) and `resources` |

## Install

From [PyPI](https://pypi.org/project/eai-platform-infra/):

```bash
pip install eai-platform-infra
# or
uv add eai-platform-infra
```

## Test

```bash
uv sync --extra dev
uv run pytest
```

## Pre-commit

Hooks mirror CI lint and tests (`ruff check`, `pytest`):

```bash
uv tool install pre-commit   # once
pre-commit install
pre-commit run --all-files   # optional manual run
```

## License

Apache-2.0
