CtrlK
BlogDocsLog inGet started
Tessl Logo

tessl/pypi-azure-mgmt-consumption

Azure Consumption Management Client for accessing consumption resources, budgets, and usage analytics for Azure Enterprise Subscriptions

Pending

Quality

Pending

Does it follow best practices?

Impact

Pending

No eval scenarios have been run

Overview
Eval results
Files

reservation-management.mddocs/

Reservation Management

Access reservation summaries, details, recommendations, and transaction history for cost optimization through Azure Reserved Instances. This module provides comprehensive reservation analytics and recommendation capabilities.

Capabilities

Reservation Summaries

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
    """

Reservation Details

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
    """

Reservation Recommendations

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
    """

Reservation Recommendation Details

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
    """

Reservation Transactions

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}")

Types

Reservation Summary Models

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: str

Reservation Detail Models

class 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: str

Reservation Recommendation Models

class 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: dict

Reservation Transaction Models

class 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: dict

Recommendation Detail Models

class 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: str

List Result Models

class 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: str

Enumeration Types

class 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

docs

aggregated-cost.md

budget-management.md

client-management.md

cost-analysis.md

credits-billing.md

index.md

operations.md

reservation-management.md

tags-operations.md

usage-analytics.md

tile.json