Skip to content

fix(azure): list Azure Redis recommendations under managedredis (ServiceMemoryDB), the only buyer after #538 #692

Closed

Description

@cristim

Summary

After #538 (option A), only managedredis (ServiceMemoryDB) buys Azure Redis reservations, and cache.PurchaseCommitment refuses. But the Azure recommendations adapter still emits every Redis recommendation labelled ServiceCache, so a consumer that routes purchases by rec.Service reaches the cache client and is always refused.

Current behaviour

  • Aggregate collection: providers/azure/recommendations.go collects Redis recommendations only through newCacheClientFn (the "Cache (Redis) recommendations" block). cache.convertAzureRedisRecommendation labels them common.ServiceCache.
  • Advisor: it maps reservedResourceType rediscache to ServiceCache (serviceFromExtendedProperties), and priceAdvisor prices ServiceCache through the cache client (recommendations_advisor_pricing.go).
  • Purchase routing: provider.go GetServiceClient(ServiceCache) returns the cache client.

Steps to verify the gap

  1. Get Azure recommendations through RecommendationsClientAdapter for a subscription with Redis reservation recommendations.
  2. Route a Redis recommendation through GetServiceClient(rec.Service) and call PurchaseCommitment.
  3. It returns an error wrapping common.ErrRefusedBeforePurchase ("purchased through the memorydb service").

Expected behaviour

Each Azure Redis recommendation is listed once, under the service that can buy it.

Proposed fix

  • Collect Redis through managedredis (labelled ServiceMemoryDB) instead of cache, in the aggregate fan-out and the service filter.
  • Map Advisor rediscache to ServiceMemoryDB, and price it through managedredis.
  • Tests: aggregate Redis recommendations carry ServiceMemoryDB; an Advisor rediscache row is labelled and priced as managedredis.
  • Consumer note: the platform and CLI must read Azure Redis recommendations under memorydb, and stored cache rows stop refreshing.

References

Parent: #538 (owner decision option A), and the PR that implements it. Related: #47.

Severity: medium. Azure Redis purchases are blocked through the default routing until this lands. Nothing is bought twice.

Activity

  1. cristim commented on Nov 5, 2026

    @cristim
    MemberAuthor

    Claimed by claude-cc-libs: planning (read-only) how Azure Redis recommendations get labelled and routed to managedredis (ServiceMemoryDB) instead of the cache client that now refuses, covering aggregate collection, Advisor mapping and pricing. Two review passes on the plan before any code. Builds run under the current load throttle.

  2. cristim commented on Nov 5, 2026

    @cristim
    MemberAuthor

    Plan done (claude-cc-libs, reviewed in two passes). A premise correction, a merge-order constraint, and one owner question.

    Owner question: in the platform, should Azure memorydb (managedredis) fold into the existing "Cache for Redis" slot, with stored cache plans mapped onto it (the default), or appear as a separate service that operators must re-configure?

    The go-side tasks (C1-C4) start now. None of them is blocked.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions