Skip to content

Releases: floci-io/floci-az

0.12.0

Choose a tag to compare

@hectorvent hectorvent released this 01 Sep 05:04

0.12.0 (2026-09-01)

Bug Fixes

  • blob: default unusable blob content types to application/octet-stream (#210) (4fdbb7a)
  • blob: honor user delegation SAS signing layouts by version (#202) (8ca73e8)
  • blob: preserve ADLS list directory identity (#201) (2a3635b)
  • cosmos: enable .NET SDK queries (#220) (8bde4d5), closes #216
  • cosmos: support .NET transactional batch (#222) (5efd630), closes #217
  • eventhub: make the AMQP data plane usable from the Azure SDKs (CBS + library patches) (#237) (5c8806e), closes #128
  • eventhub: route sends addressed the way the Azure SDKs address them (#241) (0d04662)
  • functions: support Python v2 app-root packages (#200) (09d6a7c)
  • honor Cosmos patch filter predicates (#230) (10dd22c), closes #217
  • honor X-Forwarded-Proto in /metadata/endpoints so URLs are https behind a TLS proxy (#253) (37aa829), closes #252
  • return ARM errors for failed SQL operations (#229) (7519c7d), closes #138
  • servicebus: reap orphaned sidecars (#219) (c9f3915), closes #218
  • servicebus: report runtime counts (#225) (e869661), closes #214
  • servicebus: route .NET admin requests (#221) (c0e003f), closes #215
  • servicebus: support session DLQ access (#223) (5036cad)
  • servicebus: unpack AMQP batches (#224) (bc01cee)
  • table: wrap error responses in the OData error envelope (#182) (96a0f6a), closes #181

Features

  • aci: add Azure Container Instances emulation (mocked ARM CRUD) (#208) (1377f74), closes #59
  • add ADLS list paths support (#198) (7c47687)
  • blob: blob lease support for the Azure Functions storage backplane (#183) (e82139f), closes #182 #136
  • compatibility-tests: add Azure SDK for C++ compatibility suite (#186) (3c69159), closes #184
  • servicebus: add duplicate detection (#171) (413a65a)
  • servicebus: add entity message expiration (#172) (0648e1a)
  • servicebus: honor per-entity MaxDeliveryCount and LockDuration (#207) (4d39b93)
  • servicebus: start the default namespace on boot for a deterministic AMQP endpoint (#250) (69d3600)
  • servicebus: support non-destructive message peeking (#203) (93f3b6d), closes #137 #137
  • sql: add data-plane providers (#204) (d789831), closes #138
  • sql: provision managed servers async (#205) (aff2aca), closes #138

0.11.0

Choose a tag to compare

@hectorvent hectorvent released this 18 Aug 05:13

🎉 Highlights

This release brings Entra ID Phase 2 with auth-code + PKCE and Microsoft Graph, adds Service Bus message sessions, lands Cosmos DB TTL and scoped ADLS SAS authorization, and continues the cross-repo convergence with the floci-aws baseline. Also lands release parity infrastructure matching the floci-aws 1.6.0 pattern.

🔐 Entra ID Phase 2: auth-code + PKCE + Microsoft Graph

Entra ID moves to Phase 2 (#143), adding the authorization-code + PKCE grant flow and a Microsoft Graph slice. Combined with the OIDC token issuance from 0.7.0 and Managed Identity from 0.9.0, the Azure identity stack is now genuinely complete for local testing:

  • Machine-to-machine auth (Managed Identity + IMDS)
  • OIDC token issuance
  • User-facing auth flows (auth-code + PKCE)
  • Microsoft Graph API surface

Applications that authenticate users via Entra ID and query Graph for profile or organization data can now complete their flows locally, without a real Azure tenant.

🚌 Service Bus: message sessions

Message sessions support lands (#190). Real Service Bus patterns using session-based ordering — one of the most-requested Service Bus features for enterprise messaging — now work locally. Combined with the subscription rules and topic filters from 0.10.0, Service Bus covers the fan-out, filtering, and session-based ordering patterns real workloads use.

🗃️ Cosmos DB: TTL + ETag conditions + correlated EXISTS

Three coordinated Cosmos DB improvements:

  • Container DefaultTimeToLive (TTL) with per-document overrides (#141)
  • Item ETag conditions enforced for optimistic concurrency (#167)
  • Correlated EXISTS queries evaluated correctly (#168)

Between these and the custom indexing policies from 0.10.0, Cosmos DB conformance is meaningfully better for real-world workloads.

🔒 Scoped ADLS SAS authorization

Scoped ADLS SAS authorization is now enforced (#158). Applications relying on SAS tokens to grant scoped access — a common pattern for secure inter-service data sharing — now behave correctly.

🔄 Cross-repo convergence continues

Four convergence PRs align floci-az with the floci-aws baseline 0142dc4:

  • DNS and TLS clusters (#177)
  • Docker cluster (#178)
  • Storage cluster (#180)

Matches the same convergence work done in floci-gcp 0.6.0. Groundwork for the shared floci-core extraction across the emulator family.

🚀 Release infrastructure

Release parity, one-button release cut, and the -compat image (#188) match the floci-aws 1.6.0 release infrastructure. All three emulators now share consistent release automation.

🪣 Storage conformance pass

Three coordinated storage improvements:

  • Service-properties XML served for table, queue, and blob (#134)
  • Upload HTTP properties persisted (#166)
  • Azure SQL image replaced after Microsoft retired the SQL Edge image (#139)

The SQL Edge replacement is particularly worth noting — Microsoft's retirement of the image was blocking new Azure SQL deployments in floci-az, and this restores functionality.

🐘 PostgreSQL: azurerm 3.x and 4.x compatibility

PostgreSQL returns 202 with Location headers so both azurerm 3.x and 4.x Terraform providers apply correctly (#135). Closes a Terraform-provider-version-specific compatibility gap.

🌐 Functions and Entra: quality-of-life

  • Functions: deployment packages larger than 20 MB now accepted (#196)
  • Entra: EntraStore participates in /_admin/reset (#195), so global reset actually wipes identity state

✨ New Features

Entra ID / Service Bus / Cosmos DB / ADLS

  • feat(entra): Entra ID Phase 2 — auth-code + PKCE grant + Microsoft Graph slice by @hectorvent in #143
  • feat(servicebus): support message sessions by @hectorvent in #190
  • feat(cosmos): container DefaultTimeToLive (TTL) with per-document overrides by @thomhurst in #141
  • feat(adls): enforce scoped ADLS SAS authorization by @snazy in #158

Release infrastructure

  • feat(release): release parity, one-button release cut, and the -compat image by @hectorvent in #188

🐛 Bug Fixes

Cosmos DB

Blob / Storage

  • fix(blob): persist upload HTTP properties by @hectorvent in #166
  • fix(storage): serve service-properties XML for table, queue, and blob by @hectorvent in #134

PostgreSQL / SQL / Functions / Entra

  • fix(postgres): answer 202 with Location so azurerm 3.x and 4.x both apply by @Ali-Shaikh in #135
  • fix(sql): replace retired Azure SQL Edge image by @hectorvent in #139
  • fix(functions): accept deployment packages larger than 20 MB by @hectorvent in #196
  • fix(entra): make EntraStore participate in /_admin/reset by @hectorvent in #195

Convergence

  • fix(dns, tls): converge DNS and TLS clusters on floci-aws baseline 0142dc4 by @hectorvent in #177
  • fix(docker): converge Docker cluster on floci-aws baseline 0142dc4 by @hectorvent in #178
  • fix(storage): converge storage cluster on floci-aws baseline 0142dc4 by @hectorvent in #180

Core

  • fix(core): omit Content-Type on bodyless error responses by @hectorvent in #185

🚀 Performance

  • perf(docker): stop duplicating the native binary into a second image layer by @hectorvent in #187

Full Changelog: 0.10.0...0.11.0

0.10.0

Choose a tag to compare

@hectorvent hectorvent released this 31 Jul 05:55
7f58dad

🎉 Highlights

This release adds MySQL, MariaDB, and diagnostic settings, expands Cosmos DB with custom indexing policies and composite-index enforcement, brings Service Bus subscription rules and topic filters, and lands ADLS user delegation key vending. Blob storage sees a coordinated conformance pass and the ARM plumbing gets a substantial refactor for cleaner service dispatch. Welcome to the 5 first-time contributors.

🆕 New: MySQL and MariaDB

Azure Database for MySQL and MariaDB support lands (#150), extending the PostgreSQL Flexible Server story from 0.9.0. All three major open-source database engines are now emulated on the Azure side, matching what real Azure PaaS offers.

📊 New: Diagnostic settings

Diagnostic settings emulation ships alongside MySQL/MariaDB (#150). IaC and applications that wire up log routing to Log Analytics, Storage, or Event Hubs can now be tested locally.

🌐 New: LB, NSG, Application Gateway shapes

Synthesized network resource shapes for Load Balancers, Network Security Groups, and Application Gateway (#153), unblocking azurerm Terraform patterns that provision these resources. Combined with the Private Endpoint / Private DNS work from 0.9.0, the Azure networking IaC story is meaningfully more complete.

🗃️ Cosmos DB: custom indexing policies

Cosmos DB gains custom indexing policies with composite-index ORDER BY enforcement (#129). Applications with real-world query patterns that depend on composite indexes for correctness now behave the way real Cosmos does — enforcing index requirements rather than silently ignoring them.

🚌 Service Bus: subscription rules and topic filters

Subscription rules with CorrelationFilter, SqlFilter, and $Default filters support (#130). Real Service Bus fan-out patterns using content-based routing are now testable end to end.

🔐 ADLS user delegation keys

User delegation key vending for Azure Data Lake Storage (#122). Applications that use user delegation SAS instead of account keys — the recommended pattern for Entra ID-authenticated access — now work locally.

🪣 Blob storage conformance pass

Four coordinated Blob storage improvements this cycle:

🧱 ARM plumbing refactor

Two coordinated internals improvements:

  • Handlers describe their own routes and enablement (#115)
  • ARM provider dispatch unified with strict ARM body parsing (#118)

Groundwork for consistent behavior as the service catalog continues to grow. Also lands: bare Key Vault deleted- collections* correctly routed, and disabled services report 503 instead of confusing fall-through errors (#114).

🐳 Docker labeling

Emulator containers and volumes are now labeled with a centralized floci-az prefix (#157). Easier cleanup, debugging, and multi-tenant orchestration.

🪟 Windows TLS fix

TLS certificate paths now use forward slashes so TLS starts on Windows (#142). Windows users can now use HTTPS locally without the path-separator mismatch that previously broke certificate loading.

📧 ACS Email SDK contract fix

ACS Email operation contract now matches what the SDKs expect (#148), so real SDKs can complete a send end to end rather than getting stuck partway through the operation.

✨ New Features

New services

  • feat(mysql, mariadb, diagnostic-settings): add MySQL, MariaDB, and diagnostic settings emulation by @hectorvent in #150
  • feat(network): synthesize LB, NSG, and Application Gateway shapes for azurerm by @hectorvent in #153

Service expansions

  • feat(cosmos): custom indexing policies with composite-index ORDER BY enforcement by @thomhurst in #129
  • feat(servicebus): subscription rules and topic filters (CorrelationFilter, SqlFilter, $Default) by @thomhurst in #130
  • feat(adls): add user delegation key vending by @snazy in #122

Docker

  • feat(docker): label emulator containers and volumes, centralize the floci-az name prefix by @hectorvent in #157

🐛 Bug Fixes

Blob storage

Service Bus / Email / TLS

  • fix(servicebus): stop the CBS responder from exhausting file descriptors by @hectorvent in #154
  • fix(email): match the ACS operation contract so the SDKs can complete a send by @jogerj in #148
  • fix(tls): emit forward-slash certificate paths so TLS starts on Windows by @Ali-Shaikh in #142

Core

  • fix(core): route bare Key Vault deleted-* collections and report disabled services as 503 by @hectorvent in #114
  • fix(core): unify ARM provider dispatch and parse ARM bodies strictly by @hectorvent in #118

🧰 Refactors

  • chore(core): let handlers describe their own routes and enablement by @hectorvent in #115

🧪 Tests

  • chore(test): merge duplicate service-properties test methods from #133 / #144 by @hectorvent in #152
  • chore(test): compare delegation-key expiry as instants, not strings by @hectorvent in #156

🧰 CI

  • chore(ci): welcome first-time contributors on their first issue or PR by @hectorvent in #151

📚 Documentation

  • docs(services): flesh out blob / queue / table docs and add ARM reference by @hectorvent in #117
  • chore(config): document Postgres and SQL storage defaults in application.yml by @hectorvent in #116

👋 New Contributors

A warm welcome to everyone making their first contribution to floci-az:

Full Changelog: 0.9.0...0.10.0

0.9.0

Choose a tag to compare

@hectorvent hectorvent released this 09 Jul 06:17
0aea504

🎉 Highlights

This release adds Azure Database for PostgreSQL, Managed Identity with IMDS token endpoint, and Private Endpoint / Private DNS, brings a Blob storage conformance pass, and lands important Docker networking fixes that make Azure SQL and PostgreSQL data planes reachable across shared networks. Welcome to first-time contributor @Ali-Shaikh.

🆕 New: Azure Database for PostgreSQL (Flexible Server)

Azure Database for PostgreSQL (Flexible Server) support lands (#80), backed by a real PostgreSQL engine. Data plane is now reachable on shared Docker networks (#97), so applications running in adjacent containers can connect the way they would in real Azure.

🔐 New: Managed Identity

Managed Identity emulation is now supported (#113), with ARM CRUD for identity lifecycle and the IMDS token endpoint for authenticating workloads. Combined with the Microsoft Entra ID OIDC support from 0.7.0, applications that authenticate via the full Azure identity stack can now complete their flows locally.

🌐 New: Private Endpoint + Private DNS

Private Endpoint and Private DNS support (#112) unblocks the "connect privately" patterns that real Azure deployments use for PaaS services, and IaC that provisions them now works locally.

🪣 Blob storage conformance pass

Two coordinated Blob storage improvements from @electrum:

  • Paginated blob listings (#86)
  • Expired blob SAS rejected (#90)

Continues the Blob conformance work from 0.8.0 (content ranges, delimited-list prefixes, DFS routing).

🐳 Docker network reachability

A cross-service fix pattern lands this cycle: PostgreSQL (#97) and Azure SQL (#99) data planes are now reachable on shared Docker networks. Applications running in Docker Compose or other multi-container setups can connect to floci-az PaaS services from adjacent containers, matching how these workloads actually deploy.

Terraform / azurerm users also get TLS-required guidance made discoverable (#98).

🔄 Global reset

floci-core gains a Resettable self-registration mechanism (#107) so all services can reset via a shared endpoint. Useful for CI suites that need a clean starting state without restarting the container, matching the AWS floci-core pattern from 1.5.29.

🧰 ARM helpers extracted

Shared ARM helpers are now extracted into core/arm (#111), reducing per-service ARM plumbing. Useful groundwork as the service catalog continues to grow.

🧪 Native image CI

Compatibility tests now run against the native image (#95), catching native-image-specific regressions at PR time. Matches the AWS and GCP CI patterns.

✨ New Features

  • feat(postgres): add Azure Database for PostgreSQL (Flexible Server) support by @Ali-Shaikh in #80
  • feat(managedidentity): add Managed Identity emulation (ARM CRUD + IMDS token endpoint) by @hectorvent in #113
  • feat(network): add Private Endpoint and Private DNS support by @hectorvent in #112

🐛 Bug Fixes

Blob storage

Docker networking

  • fix(postgres): make PostgreSQL data plane reachable on a shared Docker network (+ compat test) by @Ali-Shaikh in #97
  • fix(sql): make Azure SQL data plane reachable on a shared Docker network by @Ali-Shaikh in #99
  • fix(docs): make TLS-required guidance discoverable for Terraform / azurerm users (#94) by @Ali-Shaikh in #98

ACR / Core / Build

  • fix(acr): restart the shared registry container if it dies after first start by @hectorvent in #108
  • fix(core): reset all services via Resettable self-registration by @hectorvent in #107
  • fix(build): restore docker/Dockerfile.jvm-package for local compat builds by @hectorvent in #105

🧰 Refactors

  • chore(core): extract shared ARM helpers into core/arm by @hectorvent in #111
  • chore: remove unreachable ContainerAppService, rename SasTokenParser to SasTokenVerifier by @hectorvent in #106
  • chore(build): single-source compat suite env and deduplicate Makefile targets by @hectorvent in #109

🧪 CI

  • ci: run compatibility tests against native image by @electrum in #95

📚 Documentation

  • docs: add AGENTS.md with repository operating rules for coding agents by @hectorvent in #110

📦 Dependencies

  • build(deps): bump graalvm/setup-graalvm from 1.5.3 to 1.5.6 by @dependabot in #101
  • build(deps): bump actions/checkout from 4 to 7 by @dependabot in #102

👋 New Contributors

A warm welcome to @Ali-Shaikh, making their first contribution to floci-az:

Full Changelog: 0.8.0...0.9.0

0.8.0

Choose a tag to compare

@hectorvent hectorvent released this 26 Jun 04:42
1d5a5bd

🎉 Highlights

This release adds Azure Event Grid and Container Apps MVP, brings a coordinated Blob storage conformance pass, and resolves a Service Bus routing issue. Welcome to the 2 first-time contributors.

🆕 New: Azure Event Grid

Azure Event Grid support lands (#77), covering topics and webhook subscriptions. Event-driven architectures that route through Event Grid can now be exercised locally.

🆕 New: Azure Container Apps (MVP)

Container Apps ships as an MVP (#76): CRUD, ingress, scaling, and revisions. Combined with VM (0.6.0), ACR (0.6.0), Container Apps now rounds out the floci-az container compute story.

🪣 Blob storage conformance pass

Three coordinated Blob fixes from @electrum:

  • Content range returned for invalid blob ranges (#82)
  • Blob prefixes returned for delimited lists (#84)
  • DFS blob requests routed correctly (#88), unblocking ADLS Gen2 hierarchical-namespace workloads

🚌 Service Bus: routing and indexing

Service Bus index error resolved, plus root and host-based routing added (#79), so Service Bus workloads using either addressing style now work correctly.

✨ New Features

  • feat(eventgrid): add Azure Event Grid support (topics + webhook subscriptions) by @hectorvent in #77
  • feat(containerapps): add Azure Container Apps MVP (CRUD, ingress, scaling, revisions) by @yaswanthkumarch in #76

🐛 Bug Fixes

  • fix(servicebus): resolve Service Bus index error and add root / host-based routing by @mansiverma897993 in #79
  • fix(blob): return content range for invalid blob ranges by @electrum in #82
  • fix(blob): return blob prefixes for delimited lists by @electrum in #84
  • fix(blob): route DFS blob requests by @electrum in #88
  • fix(banner): list Monitor and Email in the startup banner by @hectorvent in #92

📚 Documentation

  • docs: document Azure Monitor and Communication Services Email by @hectorvent in #91

🧰 Internals

👋 New Contributors

A warm welcome to everyone making their first contribution to floci-az:

Full Changelog: 0.7.0...0.8.0

0.7.0

Choose a tag to compare

@hectorvent hectorvent released this 18 Jun 06:13
700878b

🎉 Highlights

This release adds four new services (Virtual Network, Monitor / Log Analytics, DNS, Communication Services Email), brings Microsoft Entra ID OIDC token issuance, and backs Virtual Machines with real containers in non-mocked mode. Per-service mocked and enabled toggles give finer control over which services to run. Welcome to first-time contributor @yaswanthkumarch.

🌐 New: Azure Virtual Network (VNet)

VNet emulation lands (#57), enabling local testing of network topology, subnets, and the resources that depend on them. With VM, ACR, Cache for Redis, APIM, and now VNet all in place, the floci-az networking story is meaningfully complete.

📊 New: Azure Monitor + Log Analytics

Azure Monitor and Log Analytics support arrives (#68), so observability instrumentation can be exercised locally without sending data to a real workspace.

🌍 New: Azure DNS

Azure DNS support (zones and record sets) lands (#69), unblocking IaC patterns that provision DNS alongside the resources they front.

📧 New: Azure Communication Services Email

ACS Email is now supported (#70), enabling local validation of transactional email workflows built on Azure's communication platform.

🖥️ Virtual Machines backed by real containers

VMs introduced in 0.6.0 graduate to real container backing in non-mocked mode (#72). VM lifecycle workflows now behave more like real Azure rather than just management-plane responses.

🔐 Microsoft Entra ID OIDC

Floci-az now emulates Microsoft Entra ID OIDC token issuance (#73). Applications that authenticate via Entra ID can complete the OIDC flow locally, which unlocks end-to-end testing of identity-dependent workloads.

⚙️ Per-service toggles

New configuration adds mocked and enabled toggles per service (#74). Run only what you need, mock what you don't, useful for keeping resource footprint small in CI and for isolating one service at a time during development.

✨ New Features

New services

Service expansions

  • feat(vm): back virtual machines with real containers in non-mocked mode by @hectorvent in #72
  • feat(entra): emulate Microsoft Entra ID OIDC token issuance by @hectorvent in #73

Configuration

  • feat(config): add per-service mocked and enabled toggles by @hectorvent in #74

🧰 Refactors & Internals

  • refactor(service-bus): streamline Artemis TLS generation and testing by @fredpena in #56

📚 Documentation

  • docs: restructure README and compat docs to match aws-local format by @hectorvent in #71

👋 New Contributors

A warm welcome making their first contribution to floci-az:

Full Changelog: 0.6.0...0.7.0

0.6.0

Choose a tag to compare

@hectorvent hectorvent released this 09 Jun 07:35
c6228fa

🎉 Highlights

This release is a major step forward for floci-az: four new services (Virtual Machines, API Management, Cache for Redis, Container Registry), substantially expanded Storage and Functions capabilities, and a meaningful AppConfig data-plane parity pass. Real-Docker backing now powers ACR and Redis by default.

🖥️ New: Azure Virtual Machines

Floci-az now emulates Azure Virtual Machines (#47), enabling local testing of compute provisioning workflows alongside the existing Functions runtime.

🌐 New: Azure API Management

Initial API Management (APIM) service emulator (#48), covering core gateway and management surface. Useful for local validation of APIM-fronted architectures without a real Azure subscription.

🔴 New: Azure Cache for Redis

Azure Cache for Redis is now supported, backed by a real Valkey sidecar (#50). Real backing engine, not a mock, so cache semantics behave correctly under test.

📦 New: Azure Container Registry

Azure Container Registry is now supported, backed by a shared registry:2 container (#51). Push and pull workflows against the emulated ACR behave like real OCI registries.

⚙️ Storage and Functions expansion

  • Storage: advanced message and queue metadata features (#35), closing gaps that affected real-world queue workloads
  • Functions: runtime versions can be specified via linuxFxVersion (#43), matching the configuration shape real Azure Functions deployments use

🔧 AppConfig 2024-09-01 parity

A coordinated pass closes the 2024-09-01 data-plane SDK parity gaps (#49), so SDK-driven AppConfig workloads using the current API version round-trip correctly.

✨ New Features

  • feat(vm): add Azure Virtual Machines support by @hectorvent in #47
  • feat(apim): implement initial API Management service emulator by @fredpena in #48
  • feat(redis): add Azure Cache for Redis with a Valkey sidecar by @hectorvent in #50
  • feat(acr): add Azure Container Registry backed by a shared registry:2 by @hectorvent in #51
  • feat(storage): implement advanced message and queue metadata features by @fredpena in #35
  • feat(functions): allow specifying runtime versions with linuxFxVersion by @fredpena in #43
  • feat(appconfig): close 2024-09-01 data-plane SDK parity gaps by @hectorvent in #49

🐛 Bug Fixes

  • fix(native): register ARM models for reflection and init handlers at run time by @hectorvent in #54

🧰 Internals

  • chore(acr, redis): back registries and caches with Docker by default by @hectorvent in #53

📚 Documentation

  • docs: align branding with shared Floci theme by @hectorvent in #46
  • docs: list all services (Service Bus, API Management) and add Umami analytics by @hectorvent in #52

📦 Dependencies

  • build(deps): bump the actions-minor-patch group with 3 updates by @dependabot in #45
  • build(deps): bump the maven-minor-patch group with 4 updates by @dependabot in #44

Full Changelog: 0.5.0...0.6.0

0.5.0

Choose a tag to compare

@hectorvent hectorvent released this 28 May 06:08
098dfd3

Floci AZ 0.5.0

Azure Resource Manager management-plane emulation lands in this release, alongside fixes for large blob uploads and Functions container sharing.

docker pull floci/floci-az:0.5.0

✨ Features

  • arm — ARM management-plane emulation with Terraform and OpenTofu compatibility. Provision Azure resources declaratively against the local emulator using your existing azurerm provider config. (#40)

🐛 Fixes

  • blob — support large blob uploads beyond 20 MB, fixing failures on big block-blob and multipart transfers. (#41)
  • functions — share one container per app across all functions, so functions in the same app no longer spin up redundant containers. (#42)

What's Changed

  • feat(arm): ARM management-plane emulation with Terraform and OpenTofu compatibility by @hectorvent in #40
  • fix(blob): support large blob uploads beyond 20 MB by @hectorvent in #41
  • fix(functions): share one container per app across all functions by @hectorvent in #42

Full Changelog: 0.4.0...0.5.0

0.4.0

Choose a tag to compare

@hectorvent hectorvent released this 26 May 01:43
058b9c0

What's Changed

  • feat(tls): dynamic self-signed certificate generation at runtime by @hectorvent in #36

Full Changelog: 0.3.0...0.4.0

0.3.0

Choose a tag to compare

@hectorvent hectorvent released this 23 May 15:19
0c134cc

floci-az 0.3.0 — 2026-05-23

Two new services land in this release — Cosmos DB and Azure Kubernetes Service — plus major upgrades to Table Storage and Event Hubs.

docker pull floci/floci-az:0.3.0

✨ New Services

Azure Cosmos DB (#16)

Full SQL API emulator at /{account}-cosmos/ — databases, containers, document CRUD, and a real SQL dialect (SELECT, WHERE, ORDER BY, GROUP BY, aggregates, PATCH, transactional batch, continuation-token pagination). System properties auto-generated on every write.

Modular multi-API engines — opt in per API:

  • Docker-backed: MongoDB, PostgreSQL/Citus, Cassandra, Gremlin
  • Embedded (no Docker): NoSQL, Table

HTTPS proxy on port 4578 with bundled self-signed cert — required by the Cosmos DB Java SDK in gateway mode. No certificate import needed.

Azure Kubernetes Service

ARM control-plane routing on Microsoft.ContainerService with two modes:

  • Real k3s mode (default) — each cluster starts a privileged rancher/k3s container; kubeconfig returned with the real CA extracted from the container.
  • Mocked mode (FLOCI_AZ_SERVICES_AKS_MOCKED=true) — instant Succeeded with synthetic kubeconfig, no Docker required.

Includes CreateOrUpdate, Get, Delete, List, UpdateTags, agent pool CRUD, and listClusterAdminCredential / listClusterUserCredential.

🚀 Service Improvements

Table Storage

  • OData $filter / $select / $top — operators eq, ne, gt, ge, lt, le, and, or, not; functions startswith, endswith, substringof; typed property annotations
  • ETag optimistic concurrency on PUT, MERGE, PATCH, DELETE
  • Entity Group Transactions ($batch) with full rollback
  • Server-side pagination with NextPartitionKey / NextRowKey

Event Hubs

  • Multi-namespace support — each namespace gets its own isolated Artemis container with dynamically allocated ports
  • Namespace management REST API (GET/PUT/DELETE /{account}-eventhub/namespaces[/{ns}])
  • On-demand Kafka — starts when a namespace is created with kafkaEnabled: true
  • Per-namespace TLS — self-signed RSA-2048 cert + PKCS12 keystore auto-generated

Shared infrastructure

  • ContainerSpec, ContainerBuilder, ContainerLifecycleManager, ImageCacheService, PortAllocator ported from floci — shared sidecar plumbing across services

📦 Build & Docs

  • OCI image labels (org.opencontainers.image.*, io.k8s.*, io.openshift.*) on JVM and native Dockerfiles
  • README restructured to match floci's format — nav links, "What is?", Features, SDK examples, Migrating from Azurite
  • mkdocs: Cosmos DB service page added
  • Removed stale test-appconfig Makefile target

👥 Contributors

Full Changelog: 0.2.0...0.3.0