Azure Consumption Management Client for accessing consumption resources, budgets, and usage analytics for Azure Enterprise Subscriptions
—
Quality
Pending
Does it follow best practices?
Impact
Pending
No eval scenarios have been run
Access reservation summaries, details, recommendations, and transaction history for cost optimization through Azure Reserved Instances. This module provides comprehensive reservation analytics and recommendation capabilities.
Get aggregated reservation usage and cost data for analysis and reporting.
def list_by_reservation_order(
reservation_order_id: str,
grain: str,
filter: str = None,
**kwargs
) -> Iterable[ReservationSummariesListResult]:
"""
List reservation summaries for a specific reservation order.
Parameters:
- reservation_order_id: The reservation order ID (str)
- grain: Summary grain - "Daily" or "Monthly" (str)
- filter: OData filter expression (str, optional)
Returns:
Iterable[ReservationSummariesListResult]: Reservation summaries collection
"""
def list_by_reservation_order_and_reservation(
reservation_order_id: str,
reservation_id: str,
grain: str,
filter: str = None,
**kwargs
) -> Iterable[ReservationSummariesListResult]:
"""
List reservation summaries for a specific reservation.
Parameters:
- reservation_order_id: The reservation order ID (str)
- reservation_id: The specific reservation ID (str)
- grain: Summary grain - "Daily" or "Monthly" (str)
- filter: OData filter expression (str, optional)
Returns:
Iterable[ReservationSummariesListResult]: Reservation summaries collection
"""
def list(
resource_scope: str,
grain: str,
start_date: str = None,
end_date: str = None,
filter: str = None,
reservation_id: str = None,
reservation_order_id: str = None,
**kwargs
) -> Iterable[ReservationSummariesListResult]:
"""
List reservation summaries for a defined scope.
Parameters:
- resource_scope: The scope for the reservation query (str)
- grain: Summary grain - "Daily" or "Monthly" (str)
- start_date: Start date for the query (str, optional)
- end_date: End date for the query (str, optional)
- filter: OData filter expression (str, optional)
- reservation_id: Filter by specific reservation (str, optional)
- reservation_order_id: Filter by reservation order (str, optional)
Returns:
Iterable[ReservationSummariesListResult]: Reservation summaries collection
"""Access detailed reservation usage information for granular analysis.
def list_by_reservation_order(
reservation_order_id: str,
filter: str,
**kwargs
) -> Iterable[ReservationDetailsListResult]:
"""
List detailed reservation usage for a reservation order.
Parameters:
- reservation_order_id: The reservation order ID (str)
- filter: Required date range filter (str)
Returns:
Iterable[ReservationDetailsListResult]: Reservation details collection
"""
def list_by_reservation_order_and_reservation(
reservation_order_id: str,
reservation_id: str,
filter: str,
**kwargs
) -> Iterable[ReservationDetailsListResult]:
"""
List detailed reservation usage for a specific reservation.
Parameters:
- reservation_order_id: The reservation order ID (str)
- reservation_id: The specific reservation ID (str)
- filter: Required date range filter (str)
Returns:
Iterable[ReservationDetailsListResult]: Reservation details collection
"""
def list(
resource_scope: str,
start_date: str = None,
end_date: str = None,
filter: str = None,
reservation_id: str = None,
reservation_order_id: str = None,
**kwargs
) -> Iterable[ReservationDetailsListResult]:
"""
List reservation details for a defined scope.
Parameters:
- resource_scope: The scope for the reservation query (str)
- start_date: Start date for the query (str, optional)
- end_date: End date for the query (str, optional)
- filter: OData filter expression (str, optional)
- reservation_id: Filter by specific reservation (str, optional)
- reservation_order_id: Filter by reservation order (str, optional)
Returns:
Iterable[ReservationDetailsListResult]: Reservation details collection
"""Get recommendations for purchasing reserved instances to optimize costs.
def list(resource_scope: str, filter: str = None, **kwargs) -> Iterable[ReservationRecommendationsListResult]:
"""
List reservation recommendations for cost optimization.
Parameters:
- resource_scope: The scope for recommendations (str)
- filter: Filter for resourceType, lookBackPeriod, etc. (str, optional)
Returns:
Iterable[ReservationRecommendationsListResult]: Reservation recommendations
"""Get detailed analysis for what-if scenarios on reservation recommendations.
def get(
resource_scope: str,
scope: str,
region: str,
term: str,
look_back_period: str,
product: str,
**kwargs
) -> Optional[ReservationRecommendationDetailsModel]:
"""
Get detailed recommendation analysis for what-if scenarios.
Parameters:
- resource_scope: The scope for the recommendation (str)
- scope: Recommendation scope - "Single" or "Shared" (str)
- region: Azure region for the recommendation (str)
- term: Reservation term - "P1Y" or "P3Y" (str)
- look_back_period: Analysis period - "Last7Days", "Last30Days", "Last60Days" (str)
- product: Product type for reservation (str)
Returns:
ReservationRecommendationDetailsModel: Detailed recommendation analysis
"""Access reservation purchase and refund transaction history.
def list(
billing_account_id: str,
filter: str = None,
**kwargs
) -> Iterable[ReservationTransactionsListResult]:
"""
List reservation transactions for a billing account.
Parameters:
- billing_account_id: The billing account ID (str)
- filter: OData filter expression (str, optional)
Returns:
Iterable[ReservationTransactionsListResult]: Reservation transactions
"""
def list_by_billing_profile(
billing_account_id: str,
billing_profile_id: str,
filter: str = None,
**kwargs
) -> Iterable[ModernReservationTransactionsListResult]:
"""
List reservation transactions for a billing profile.
Parameters:
- billing_account_id: The billing account ID (str)
- billing_profile_id: The billing profile ID (str)
- filter: OData filter expression (str, optional)
Returns:
Iterable[ModernReservationTransactionsListResult]: Modern reservation transactions
"""Usage Example:
# Get reservation summaries for subscription
scope = f"/subscriptions/{subscription_id}"
reservation_summaries = client.reservations_summaries.list(
resource_scope=scope,
grain="Monthly",
start_date="2024-01-01",
end_date="2024-12-31"
)
for summary in reservation_summaries:
print(f"Reservation: {summary.reservation_id}")
print(f"Used Hours: {summary.used_hours}")
print(f"Reserved Hours: {summary.reserved_hours}")
print(f"Utilization: {summary.utilization_percentage}%")
# Get reservation recommendations
recommendations = client.reservation_recommendations.list(
resource_scope=scope,
filter="properties/resourceType eq 'VirtualMachines' and properties/lookBackPeriod eq 'Last30Days'"
)
for recommendation in recommendations:
print(f"Product: {recommendation.sku}")
print(f"Recommended Quantity: {recommendation.recommended_quantity}")
print(f"Annual Savings: ${recommendation.total_cost_with_reserved_instances}")
# Get detailed recommendation analysis
detail = client.reservation_recommendation_details.get(
resource_scope=scope,
scope="Single",
region="westus2",
term="P1Y",
look_back_period="Last30Days",
product="Standard_D2s_v3"
)
if detail:
print(f"Expected Usage: {detail.usage.usage_data}")
print(f"Cost with reservation: ${detail.cost.total_cost_with_reserved_instances}")class ReservationSummary:
"""Reservation usage summary."""
reservation_order_id: str
reservation_id: str
sku_name: str
reserved_hours: float
usage_date: datetime
used_hours: float
min_utilization_percentage: float
avg_utilization_percentage: float
max_utilization_percentage: float
kind: strclass ReservationDetail:
"""Detailed reservation usage information."""
reservation_order_id: str
reservation_id: str
sku_name: str
reserved_hours: float
usage_date: datetime
used_hours: float
instance_id: str
total_reserved_quantity: float
kind: strclass ReservationRecommendation:
"""Base reservation recommendation."""
id: str
name: str
type: str
location: str
sku: str
kind: str
class LegacyReservationRecommendation(ReservationRecommendation):
"""Legacy format reservation recommendation."""
cost_with_no_reserved_instances: float
recommended_quantity: float
total_cost_with_reserved_instances: float
net_savings: float
first_usage_date: datetime
scope: str
look_back_period: str
instance_flexibility_ratio: float
instance_flexibility_group: str
normalized_size: str
recommended_quantity_normalized: float
meter_id: str
resource_type: str
term: str
class ModernReservationRecommendation(ReservationRecommendation):
"""Modern format reservation recommendation."""
properties: dictclass ReservationTransaction:
"""Base reservation transaction."""
id: str
name: str
type: str
tags: dict
class LegacyReservationTransaction(ReservationTransaction):
"""Legacy reservation transaction format."""
account_name: str
account_owner_id: str
subscription_id: str
subscription_name: str
reservation_order_id: str
reservation_order_name: str
purchase_date: datetime
reservation_term: str
quantity: float
amount: float
currency: str
current_enrollment: str
billing_frequency: str
region: str
description: str
class ModernReservationTransaction(ReservationTransaction):
"""Modern reservation transaction format."""
properties: dictclass ReservationRecommendationDetailsModel:
"""Detailed recommendation analysis."""
id: str
name: str
type: str
location: str
sku: str
currency: str
resource: ReservationRecommendationDetailsResourceProperties
resource_group: str
savings: ReservationRecommendationDetailsSavingsProperties
usage: ReservationRecommendationDetailsUsageProperties
class ReservationRecommendationDetailsResourceProperties:
"""Resource properties for recommendation."""
applied_scopes: List[str]
on_demand_rate: float
product: str
region: str
resource_type: str
term: str
class ReservationRecommendationDetailsSavingsProperties:
"""Savings analysis for recommendation."""
calculated_savings: List[ReservationRecommendationDetailsCalculatedSavingsProperties]
on_demand_cost: float
overhead_cost: float
quantity_used: float
reservation_cost: float
total_reservation_cost: float
savings_percentage: float
savings_ratio: float
class ReservationRecommendationDetailsUsageProperties:
"""Usage analysis for recommendation."""
first_consumption_date: datetime
last_consumption_date: datetime
look_back_unit_type: str
usage_data: List[float]
usage_grain: strclass ReservationSummariesListResult:
"""Container for reservation summaries list."""
value: List[ReservationSummary]
next_link: str
class ReservationDetailsListResult:
"""Container for reservation details list."""
value: List[ReservationDetail]
next_link: str
class ReservationRecommendationsListResult:
"""Container for reservation recommendations list."""
value: List[ReservationRecommendation]
next_link: str
class ReservationTransactionsListResult:
"""Container for legacy reservation transactions list."""
value: List[LegacyReservationTransaction]
next_link: str
class ModernReservationTransactionsListResult:
"""Container for modern reservation transactions list."""
value: List[ModernReservationTransaction]
next_link: strclass Datagrain:
"""Data grain options for reservation summaries."""
DAILY = "Daily"
MONTHLY = "Monthly"
class Scope:
"""Reservation recommendation scope."""
SINGLE = "Single"
SHARED = "Shared"
class Term:
"""Reservation term options."""
P1Y = "P1Y" # 1 year
P3Y = "P3Y" # 3 years
class LookBackPeriod:
"""Look-back period for recommendations."""
LAST_7_DAYS = "Last7Days"
LAST_30_DAYS = "Last30Days"
LAST_60_DAYS = "Last60Days"
class ReservationRecommendationKind:
"""Reservation recommendation format types."""
LEGACY = "legacy"
MODERN = "modern"Install with Tessl CLI
npx tessl i tessl/pypi-azure-mgmt-consumption