Releases: floci-io/floci-az
Release list
0.12.0
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
🎉 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
EXISTSqueries 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:
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:
EntraStoreparticipates 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
-compatimage by @hectorvent in #188
🐛 Bug Fixes
Cosmos DB
- fix(cosmos): enforce item ETag conditions by @thomhurst in #167
- fix(cosmos): evaluate correlated
EXISTSqueries by @thomhurst in #168
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
azurerm3.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
EntraStoreparticipate in/_admin/resetby @hectorvent in #195
Convergence
- fix(dns, tls): converge DNS and TLS clusters on floci-aws baseline
0142dc4by @hectorvent in #177 - fix(docker): converge Docker cluster on floci-aws baseline
0142dc4by @hectorvent in #178 - fix(storage): converge storage cluster on floci-aws baseline
0142dc4by @hectorvent in #180
Core
- fix(core): omit
Content-Typeon 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
🎉 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:
- Service properties XML serialized properly instead of returning
toString()(@thomhurst, #133) - Service properties XML returned (@aniketshukla1, #144)
- Mandatory Get Blob and container response headers returned (@mcarvalho-singlestore, #146)
- Unimplemented
compoperations no longer route toputBlob(#155)
🧱 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
azurermby @hectorvent in #153
Service expansions
- feat(cosmos): custom indexing policies with composite-index
ORDER BYenforcement 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-azname prefix by @hectorvent in #157
🐛 Bug Fixes
Blob storage
- fix(storage): serialize service properties XML instead of returning
toStringby @thomhurst in #133 - fix(storage): return service properties XML by @aniketshukla1 in #144
- fix(blob): return mandatory Get Blob and container response headers by @mcarvalho-singlestore in #146
- fix(blob): stop routing unimplemented
compoperations toputBlobby @hectorvent in #155
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.ymlby @hectorvent in #116
👋 New Contributors
A warm welcome to everyone making their first contribution to floci-az:
- @snazy in #122
- @thomhurst in #129
- @aniketshukla1 in #144
- @mcarvalho-singlestore in #146
- @jogerj in #148
Full Changelog: 0.9.0...0.10.0
0.9.0
🎉 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:
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
- fix(blob): paginate blob listings by @electrum in #86
- fix(blob): reject expired blob SAS by @electrum in #90
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 /
azurermusers (#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
Resettableself-registration by @hectorvent in #107 - fix(build): restore
docker/Dockerfile.jvm-packagefor local compat builds by @hectorvent in #105
🧰 Refactors
- chore(core): extract shared ARM helpers into
core/armby @hectorvent in #111 - chore: remove unreachable
ContainerAppService, renameSasTokenParsertoSasTokenVerifierby @hectorvent in #106 - chore(build): single-source compat suite env and deduplicate Makefile targets by @hectorvent in #109
🧪 CI
📚 Documentation
- docs: add
AGENTS.mdwith repository operating rules for coding agents by @hectorvent in #110
📦 Dependencies
- build(deps): bump
graalvm/setup-graalvmfrom 1.5.3 to 1.5.6 by @dependabot in #101 - build(deps): bump
actions/checkoutfrom 4 to 7 by @dependabot in #102
👋 New Contributors
A warm welcome to @Ali-Shaikh, making their first contribution to floci-az:
- @Ali-Shaikh in #80
Full Changelog: 0.8.0...0.9.0
0.8.0
🎉 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
- chore(compat): pin
@azure/app-configurationto 1.11.0 in Node SDK suite by @hectorvent in #78 - chore: release 0.8.0 by @hectorvent in #93
👋 New Contributors
A warm welcome to everyone making their first contribution to floci-az:
- @mansiverma897993 in #79
- @electrum in #82
Full Changelog: 0.7.0...0.8.0
0.7.0
🎉 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
- feat(network): implement Azure Virtual Network (VNet) emulation by @fredpena in #57
- feat(monitor): add Azure Monitor / Log Analytics support by @yaswanthkumarch in #68
- feat(dns): add Azure DNS support (zones + record sets) by @yaswanthkumarch in #69
- feat(acs-email): add Azure Communication Services Email support (#65) by @yaswanthkumarch in #70
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
📚 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
🎉 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:2by @hectorvent in #51 - feat(storage): implement advanced message and queue metadata features by @fredpena in #35
- feat(functions): allow specifying runtime versions with
linuxFxVersionby @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-patchgroup with 3 updates by @dependabot in #45 - build(deps): bump the
maven-minor-patchgroup with 4 updates by @dependabot in #44
Full Changelog: 0.5.0...0.6.0
0.5.0
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 existingazurermprovider 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
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
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/k3scontainer; kubeconfig returned with the real CA extracted from the container. - Mocked mode (
FLOCI_AZ_SERVICES_AKS_MOCKED=true) — instantSucceededwith 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— operatorseq,ne,gt,ge,lt,le,and,or,not; functionsstartswith,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,PortAllocatorported 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-appconfigMakefile target
👥 Contributors
- @hectorvent
- @fredpena 🎉 (first-time contributor)
Full Changelog: 0.2.0...0.3.0