in sdk/SdkSamples/Subscriptions/UpdateOverage.cs [30:102]
protected override void RunScenario()
{
var partnerOperations = this.Context.UserPartnerOperations;
string customerId = this.ObtainCustomerId();
this.Context.ConsoleHelper.StartProgress("Getting subscription overage");
var overage = partnerOperations.Customers.ById(customerId).Subscriptions.Overage.Get();
this.Context.ConsoleHelper.StopProgress();
this.Context.ConsoleHelper.WriteObject(overage, "Existing overage");
this.Context.ConsoleHelper.StartProgress("Getting subscription");
var subscriptions = partnerOperations.Customers.ById(customerId).Subscriptions.Get();
if (!subscriptions.Items.Any(sub => sub.ConsumptionType == "overage"))
{
this.Context.ConsoleHelper.Error("No overage eligible subscription found for the customer");
return;
}
this.Context.ConsoleHelper.StopProgress();
string azureEntitlementIdForOverage = null;
string partnerId = null;
var modernAzureSubscription = subscriptions.Items.FirstOrDefault(sub => sub.BillingType == BillingType.Usage && !sub.OfferId.StartsWith("MS-AZR"));
if (modernAzureSubscription == null)
{
this.Context.ConsoleHelper.WriteColored("Customer doesn't have modern Azure plan, a new Azure plan will be purchased.", ConsoleColor.Yellow);
}
else
{
this.Context.ConsoleHelper.WriteColored($"Modern Azure Subscription Id: {modernAzureSubscription.Id}", ConsoleColor.Yellow);
this.Context.ConsoleHelper.StartProgress("Retrieving Azure plan entitlements");
var azureEntitlments = partnerOperations.Customers.ById(customerId).Subscriptions.ById(modernAzureSubscription.Id).GetAzurePlanSubscriptionEntitlements();
this.Context.ConsoleHelper.StopProgress();
this.Context.ConsoleHelper.WriteObject(azureEntitlments, "Azure plan entitlements");
var azureEntitlementForOverage = azureEntitlments.Items.FirstOrDefault(e => e.FriendlyName == "Subscription 1");
azureEntitlementIdForOverage = azureEntitlementForOverage?.Id;
if (azureEntitlementIdForOverage == null)
{
this.Context.ConsoleHelper.WriteColored("No existing modern Azure plan entitlement found, a new azure entitlement will be created.", ConsoleColor.Yellow);
}
else
{
azureEntitlementIdForOverage = this.Context.ConsoleHelper.ReadOptionalString(
$"Enter Azure entitlement Id for overage (Leaving empty will consider 'Subscription 1' entitlement if exists or else it will create new)");
partnerId = this.Context.ConsoleHelper.ReadOptionalString($"Enter Reseller partnerId (Mpn Id) for overage if a reseller is associated with the azure plan");
}
}
this.Context.ConsoleHelper.StartProgress("Updating overage");
var overagePayload = new Overage
{
AzureEntitlementId = azureEntitlementIdForOverage,
OverageEnabled = true,
PartnerId = partnerId,
};
var updatedOverage = partnerOperations.Customers.ById(customerId).Subscriptions.Overage.Put(overagePayload);
this.Context.ConsoleHelper.StopProgress();
this.Context.ConsoleHelper.StartProgress("Retrieving overage");
var newOverage = partnerOperations.Customers.ById(customerId).Subscriptions.Overage.Get();
this.Context.ConsoleHelper.StopProgress();
this.Context.ConsoleHelper.WriteObject(newOverage, "Newly retrieved overage");
var newPhoneOverage = newOverage.Items.FirstOrDefault(o => o.Type == "PhoneServices");
if (!string.Equals(updatedOverage.AzureEntitlementId, newPhoneOverage?.AzureEntitlementId))
{
this.Context.ConsoleHelper.WriteColored("The Overage update process hasn't completed yet.", ConsoleColor.Yellow);
}
}