Skip to content

Commit 8ff48b2

Browse files
committed
restore azure reservations. remove redirect
2 parents 40be3bb + 64163af commit 8ff48b2

File tree

20 files changed

+2632
-989
lines changed

20 files changed

+2632
-989
lines changed

articles/azure-netapp-files/whats-new.md

Lines changed: 1 addition & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -6,22 +6,14 @@ author: b-hchen
66
ms.service: azure-netapp-files
77
ms.custom: linux-related-content
88
ms.topic: overview
9-
ms.date: 09/16/2024
9+
ms.date: 08/20/2024
1010
ms.author: anfdocs
1111
---
1212

1313
# What's new in Azure NetApp Files
1414

1515
Azure NetApp Files is updated regularly. This article provides a summary about the latest new features and enhancements.
1616

17-
## September 2024
18-
19-
* [Reserved capacity](reserved-capacity.md) is now generally available (GA)
20-
21-
Pay-as-you-go pricing is the most convenient way to purchase cloud storage when your workloads are dynamic or changing over time. However, some workloads are more predictable with stable capacity usage over an extended period. These workloads can benefit from savings in exchange for a longer-term commitment. With a one-year or three-year commitment of Azure NetApp Files reserved capacity, you can save up to 34% on sustained usage of Azure NetApp Files. Reserved capacity is available in stackable increments of 100 TiB and 1 PiB on Standard, Premium and Ultra service levels in a given region. Reserved capacity can be used in a single subscription (single-subscription scope), or across multiple subscriptions (shared scope) in the same Azure tenant. Azure NetApp Files reserved capacity benefits are automatically applied to existing Azure NetApp Files capacity pools in the matching region and service level. Azure NetApp Files reserved capacity not only provides cost savings but also improves financial predictability and stability, allowing for more effective budgeting. Additional usage is conveniently billed at the regular pay-as-you-go rate.
22-
23-
For more detail, see the [Azure NetApp Files reserved capacity](reserved-capacity.md) or see reservations in the Azure portal.
24-
2517
## August 2024
2618

2719
* [Azure NetApp Files storage with cool access](cool-access-introduction.md) is now generally available (GA) and supported with the Standard, Premium, and Ultra service levels. Cool access is also now supported for destination volumes in cross-region/cross-zone relationships.

articles/communication-services/how-tos/calling-sdk/includes/call-context/call-context-web.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ ms.date: 09/13/2024
66
ms.author: micahvivion
77
---
88

9+
910
## Technical parameters
1011
The calling SDK supports adding up to 5 custom SIP headers and 1000 custom VOIP headers. Additionally, developers can include a dedicated User-To-User header as part of SIP headers list.
1112

@@ -20,6 +21,7 @@ When adding these custom headers as a developer you can choose to add only SIP h
2021
> [!NOTE]
2122
> Currently, adding custom User-to-User Information headers is only supported when initiating a 1:1 call. Passing User-to-User Information headers in group calls is not currently supported. To work around this after starting the 1:1 call, you can include additional participants while maintaining the User-to-User Information within the calls.
2223
24+
For details othe custom context interface API, consult the [custom context API resource](/javascript/api/azure-communication-services/@azure/communication-calling/customcontext?view=azure-communication-services-js&preserve-view=true) page.
2325

2426
## Place a call with User-to-User Information (UUI) data
2527

articles/communication-services/tutorials/audio-quality-enhancements/includes/web.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,9 @@ Use the `npm install` command to install the Azure Communication Services Audio
3737
3838
```
3939
## Loading the Noise Suppression effects library
40+
41+
For details on the interface detailing audio effects properties and methods, consult the [Audio Effects Feature interface](/javascript/api/azure-communication-services/@azure/communication-calling/audioeffectsfeature?view=azure-communication-services-js&preserve-view=true) API documentation page.
42+
4043
To use `noise suppression` audio effects within the Azure Communication Calling SDK, you need the `LocalAudioStream` that is currently in the call. You need access to the `AudioEffects` API of the `LocalAudioStream` to start and stop audio effects.
4144
```js
4245
import * as AzureCommunicationCallingSDK from '@azure/communication-calling';
@@ -144,3 +147,5 @@ await audioEffectsFeatureApi.stopEffects({
144147
noiseSuppression: true
145148
});
146149
```
150+
## More Details
151+
See [Audio Effects Feature interface](/javascript/api/azure-communication-services/@azure/communication-calling/audioeffectsfeature?view=azure-communication-services-js&preserve-view=true) documentation page for extended API feature details.

articles/confidential-computing/TOC.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -139,7 +139,7 @@
139139
href: /sql/relational-databases/security/encryption/configure-always-encrypted-enclaves
140140
- name: SQL on Confidential Virtual Machines #done
141141
href: /azure/azure-sql/virtual-machines/windows/sql-vm-create-confidential-vm-how-to
142-
- name: Confidential Databricks (PREVIEW) #done
142+
- name: Confidential Databricks
143143
href: https://techcommunity.microsoft.com/t5/azure-confidential-computing/confidential-vm-option-for-azure-databricks-preview/ba-p/3827982#:~:text=Azure%20Databricks%20now%20supports%20using%20Confidential%20computing%20VM,Azure%20Databricks%20workload%20securely%20%26%20confidentially%20on%20Azure
144144
- name: Confidential Azure Data Explorer (PREVIEW) #done
145145
href: https://techcommunity.microsoft.com/t5/azure-data-explorer-blog/confidential-vm-option-for-azure-data-explorer-public-preview/ba-p/3827343

articles/cost-management-billing/reservations/save-compute-costs-reservations.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ ms.reviewer: bshy
66
ms.service: cost-management-billing
77
ms.subservice: reservations
88
ms.topic: overview
9-
ms.date: 09/16/2024
9+
ms.date: 09/17/2024
1010
ms.author: banders
1111
---
1212

@@ -100,7 +100,7 @@ For more information, see [Self-service exchanges and refunds for Azure Reservat
100100
- **Azure Dedicated Host** - Only the compute costs are included with the Dedicated host.
101101
- **Azure Disk Storage reservations** - A reservation only covers premium SSDs of P30 size or greater. It doesn't cover any other disk types or sizes smaller than P30.
102102
- **Azure Backup Storage reserved capacity** - A capacity reservation lowers storage costs of backup data in a Recovery Services Vault.
103-
- **Azure NetApp Files** - A capacity reservation covers matching capacity pools in the selected service level and region. When using capacity pools configured with [Standard storage with cool access](../../azure-netapp-files/manage-cool-access.md), only "hot" tier consumption is covered by the reserved capacity benefit.
103+
- **Azure NetApp Files** - A capacity reservation covers matching capacity pools in the selected service level and region. When using capacity pools configured with [cool access](../../azure-netapp-files/manage-cool-access.md), only "hot" tier consumption is covered by the reserved capacity benefit.
104104

105105
Software plans:
106106

articles/logic-apps/logic-apps-limits-and-config.md

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -691,10 +691,10 @@ For Azure Logic Apps to receive incoming communication through your firewall, yo
691691

692692
| Azure Government region | Azure Logic Apps IP |
693693
|-------------------------|---------------------|
694-
| US Gov Arizona | 52.244.67.164, 52.244.67.64, 52.244.66.82, 52.126.52.254, 52.126.53.145 |
694+
| US Gov Arizona | 52.244.67.164, 52.244.67.64, 52.244.66.82, 52.126.52.254, 52.126.53.145, 52.244.187.241, 52.244.17.238, 52.244.23.110, 52.244.20.213, 52.244.16.162, 52.244.15.25, 52.244.16.141, 52.244.15.26 |
695695
| US Gov Texas | 52.238.119.104, 52.238.112.96, 52.238.119.145, 52.245.171.151, 52.245.163.42 |
696-
| US Gov Virginia | 52.227.159.157, 52.227.152.90, 23.97.4.36, 13.77.239.182, 13.77.239.190 |
697-
| US DoD Central | 52.182.49.204, 52.182.52.106, 52.182.49.105, 52.182.49.175 |
696+
| US Gov Virginia | 52.227.159.157, 52.227.152.90, 23.97.4.36, 13.77.239.182, 13.77.239.190, 20.159.220.127, 62.10.96.217, 62.10.102.236, 62.10.102.136, 62.10.111.137, 62.10.111.152, 62.10.111.128, 62.10.111.123 |
697+
| US DoD Central | 52.182.49.204, 52.182.52.106, 52.182.49.105, 52.182.49.175, 52.180.225.24, 52.180.225.43, 52.180.225.50, 52.180.252.28, 52.180.225.29, 52.180.231.56, 52.180.231.50, 52.180.231.65 |
698698

699699
<a name="outbound"></a>
700700

@@ -776,10 +776,10 @@ This section lists the outbound IP addresses that Azure Logic Apps requires in y
776776

777777
| Region | Azure Logic Apps IP |
778778
|--------|---------------------|
779-
| US DoD Central | 52.182.48.215, 52.182.92.143, 52.182.53.147, 52.182.52.212, 52.182.49.162, 52.182.49.151 |
780-
| US Gov Arizona | 52.244.67.143, 52.244.65.66, 52.244.65.190, 52.126.50.197, 52.126.49.223, 52.126.53.144, 52.126.36.100 |
779+
| US DoD Central | 52.182.48.215, 52.182.92.143, 52.182.53.147, 52.182.52.212, 52.182.49.162, 52.182.49.151, 52.180.225.0, 52.180.251.16, 52.180.250.135, 52.180.251.20, 52.180.231.89, 52.180.224.251, 52.180.252.222, 52.180.225.21 |
780+
| US Gov Arizona | 52.244.67.143, 52.244.65.66, 52.244.65.190, 52.126.50.197, 52.126.49.223, 52.126.53.144, 52.126.36.100, 52.244.187.5, 52.244.19.121, 52.244.18.105, 52.244.51.113, 52.244.17.113, 52.244.26.122, 52.244.22.195, 52.244.19.137 |
781781
| US Gov Texas | 52.238.114.217, 52.238.115.245, 52.238.117.119, 20.141.120.209, 52.245.171.152, 20.141.123.226, 52.245.163.1 |
782-
| US Gov Virginia | 13.72.54.205, 52.227.138.30, 52.227.152.44, 13.77.239.177, 13.77.239.140, 13.77.239.187, 13.77.239.184 |
782+
| US Gov Virginia | 13.72.54.205, 52.227.138.30, 52.227.152.44, 13.77.239.177, 13.77.239.140, 13.77.239.187, 13.77.239.184, 20.159.219.180, 62.10.96.177, 62.10.102.138, 62.10.102.94, 62.10.111.134, 62.10.111.151, 62.10.110.102, 62.10.109.190 |
783783

784784
## Next steps
785785

articles/notification-hubs/TOC.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -106,6 +106,8 @@
106106
href: firebase-migration-rest.md
107107
- name: FCM migration using Azure SDKs
108108
href: firebase-migration-sdk.md
109+
- name: Updating ANH with FCMv1 Credentials
110+
href: firebase-migration-update-sdk.md
109111
- name: Change pricing tier
110112
href: change-pricing-tier.md
111113
- name: Send cross-platform notifications
Lines changed: 149 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,149 @@
1+
---
2+
title: Updating Azure notification hub with FCMv1 credentials
3+
description: Describes how Azure Notification Hubs can be updated using FCMv1 credentials
4+
author: sreeharir
5+
manager: nanooka
6+
ms.service: azure-notification-hubs
7+
ms.topic: article
8+
ms.date: 09/12/2024
9+
ms.author: sreeharir
10+
ms.reviewer: sethm
11+
ms.lastreviewed: 09/12/2024
12+
---
13+
14+
# Updating Azure Notification Hub with FCMv1 Credentials
15+
16+
This guide explains how to update an Azure notification hub with FCMv1 credentials using the Azure Management SDK for .NET. This is essential for enabling push notifications to Android devices via Firebase Cloud Messaging (FCMv1).
17+
18+
## Prerequisites
19+
- An existing Azure Notification Hub within a namespace.
20+
- FCMv1 credentials including `clientEmail`, `privateKey`, and `projectId`.
21+
22+
### Step 1: Set up and retrieve the Notification Hub
23+
Before you can update the Notification Hub, ensure that you have set up the `ArmClient` and retrieved the relevant Notification Hub resource.
24+
25+
```csharp
26+
ArmClient client = new ArmClient(new DefaultAzureCredential());
27+
SubscriptionResource subscription = client.GetSubscriptionResource(new ResourceIdentifier($"/subscriptions/{subscriptionId}"));
28+
ResourceGroupResource resourceGroup = subscription.GetResourceGroups().Get(resourceGroupName);
29+
NotificationHubNamespaceResource notificationHubNamespaceResource = resourceGroup.GetNotificationHubNamespaces().Get(namespaceName);
30+
NotificationHubResource notificationHubResource = notificationHubNamespaceResource.GetNotificationHubs().Get(notificationHubName);
31+
```
32+
33+
### Step 2: Define and update FCMv1 credentials
34+
Next, create an `FcmV1Credential` object with your FCMv1 details and use it to update the Notification Hub.
35+
36+
```csharp
37+
NotificationHubUpdateContent updateContent = new()
38+
{
39+
FcmV1Credential = new FcmV1Credential("clientEmail", "privateKey", "projectid")
40+
};
41+
42+
NotificationHubResource updatedNotificationHub = await notificationHubResource.UpdateAsync(updateContent);
43+
Console.WriteLine($"Notification Hub '{notificationHubName}' updated successfully with FCMv1 credentials.");
44+
```
45+
46+
### Step 3: Verify the update
47+
After updating, you can verify the credentials by retrieving and printing them.
48+
49+
```csharp
50+
var notificationHubCredentials = updatedNotificationHub.GetPnsCredentials().Value;
51+
Console.WriteLine($"FCMv1 Credentials Email: '{notificationHubCredentials.FcmV1Credential.ClientEmail}'");
52+
```
53+
54+
This step confirms that the Notification Hub has been updated with the correct FCMv1 credentials.
55+
56+
## Complete code example
57+
Below is the complete code example that includes the setup, creation, update, and verification of the Notification Hub.
58+
59+
```csharp
60+
using Azure;
61+
using Azure.Core;
62+
using Azure.Identity;
63+
using Azure.ResourceManager;
64+
using Azure.ResourceManager.NotificationHubs;
65+
using Azure.ResourceManager.NotificationHubs.Models;
66+
using Azure.ResourceManager.Resources;
67+
68+
class Program
69+
{
70+
static async Task Main(string[] args)
71+
{
72+
string subscriptionId = "<Replace with your subscriptionid>";
73+
string resourceGroupName = "<Replace with your resourcegroupname>";
74+
string location = "<Replace with your location>";
75+
string namespaceName = "<Replace with your notificationhubnamespacename>";
76+
string notificationHubName = "<Replace with your notificationhubname>";
77+
78+
Console.WriteLine("Started Program");
79+
ArmClient client = new ArmClient(new DefaultAzureCredential());
80+
SubscriptionResource subscription = client.GetSubscriptionResource(new ResourceIdentifier($"/subscriptions/{subscriptionId}"));
81+
82+
// Create or get the resource group
83+
ResourceGroupCollection resourceGroups = subscription.GetResourceGroups();
84+
ResourceGroupResource? resourceGroup = null;
85+
bool resourceGroupExists = resourceGroups.Exists(resourceGroupName);
86+
if (!resourceGroupExists)
87+
{
88+
ArmOperation<ResourceGroupResource> operation = await resourceGroups.CreateOrUpdateAsync(WaitUntil.Completed, resourceGroupName, new ResourceGroupData(location));
89+
resourceGroup = operation.Value;
90+
Console.WriteLine($"ResourceGroup '{resourceGroupName}' created successfully.");
91+
}
92+
else
93+
{
94+
resourceGroup = resourceGroups.Get(resourceGroupName);
95+
Console.WriteLine($"ResourceGroup '{resourceGroupName}' already exists.");
96+
}
97+
98+
// Create or get a Notification Hub namespace with the required SKU
99+
NotificationHubNamespaceData namespaceData = new NotificationHubNamespaceData(location)
100+
{
101+
Sku = new NotificationHubSku(NotificationHubSkuName.Standard)
102+
};
103+
104+
NotificationHubNamespaceCollection notificationHubNamespaces = resourceGroup.GetNotificationHubNamespaces();
105+
NotificationHubNamespaceResource? notificationHubNamespaceResource = null;
106+
bool notificationHubNamespaceResourceExists = notificationHubNamespaces.Exists(namespaceName);
107+
if (!notificationHubNamespaceResourceExists)
108+
{
109+
ArmOperation<NotificationHubNamespaceResource> namespaceOperation = await notificationHubNamespaces.CreateOrUpdateAsync(WaitUntil.Completed, namespaceName, namespaceData);
110+
notificationHubNamespaceResource = namespaceOperation.Value;
111+
Console.WriteLine($"Notification Hub Namespace '{namespaceName}' created successfully.");
112+
}
113+
else
114+
{
115+
notificationHubNamespaceResource = notificationHubNamespaces.Get(namespaceName);
116+
Console.WriteLine($"NotificationHubNamespace '{namespaceName}' already exists.");
117+
}
118+
119+
// Create or get a Notification Hub in the namespace
120+
NotificationHubCollection notificationHubs = notificationHubNamespaceResource.GetNotificationHubs();
121+
NotificationHubResource? notiticationHubResource = null;
122+
bool notificationHubResourceExists = notificationHubs.Exists(notificationHubName);
123+
if (!notificationHubResourceExists)
124+
{
125+
ArmOperation<NotificationHubResource> hubOperation = await notificationHubs.CreateOrUpdateAsync(WaitUntil.Completed, notificationHubName, new NotificationHubData(location));
126+
notiticationHubResource = hubOperation.Value;
127+
Console.WriteLine($"Notification Hub '{notificationHubName}' created successfully in Namespace '{namespaceName}'.");
128+
}
129+
else
130+
{
131+
notiticationHubResource = notificationHubs.Get(notificationHubName);
132+
Console.WriteLine($"NotificationHub '{notificationHubName}' already exists.");
133+
}
134+
135+
// Update the Notification Hub with FCMv1 credentials
136+
NotificationHubUpdateContent updateContent = new()
137+
{
138+
FcmV1Credential = new FcmV1Credential("<Replace with your clientEmail>", "<Replace with your privateKey>", "<Replace with your projectid>")
139+
};
140+
141+
NotificationHubResource notificationHubResource = await notiticationHubResource.UpdateAsync(updateContent);
142+
Console.WriteLine($"Notification Hub '{notificationHubName}' updated successfully with FCMv1 credentials.");
143+
144+
// Get Notification Hub Credentials
145+
var notificationHubCredentials = notiticationHubResource.GetPnsCredentials().Value;
146+
Console.WriteLine($"FCMv1 Credentials Email '{notificationHubCredentials.FcmV1Credential.ClientEmail}'");
147+
}
148+
}
149+
```

0 commit comments

Comments
 (0)