Skip to content

Commit 0e298ef

Browse files
committed
Merge branch 'main' of https://github.com/MicrosoftDocs/azure-docs-pr into sap-attack-disrupt-imp
2 parents 7ae29d5 + 12d7ffe commit 0e298ef

File tree

456 files changed

+9766
-3955
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

456 files changed

+9766
-3955
lines changed

.openpublishing.redirection.json

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4004,6 +4004,11 @@
40044004
"source_path_from_root":"/articles/service-connector/quickstart-cli-aks-connection.md",
40054005
"redirect_url":"/azure/service-connector/quickstart-portal-aks-connection",
40064006
"redirect_document_id":false
4007-
}
4007+
},
4008+
{
4009+
"source_path_from_root":"/articles/aks/generation-2-vm-windows.md",
4010+
"redirect_url":"/azure/aks/generation-2-vm",
4011+
"redirect_document_id":false
4012+
}
40084013
]
40094014
}

.openpublishing.redirection.operator-5g-core.json

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,8 @@
1616
"redirect_document_id": false
1717
},
1818
{
19-
"source_path_from_root": "/articles/operator-5g-core/how-to-complete-prerequisites-deploy-azure-kubernetes-service.md",
20-
"redirect_url": "/azure/operator-5g-core/quickstart-complete-prerequisites-deploy-azure-kubernetes-service",
19+
"source_path_from_root": "/articles/operator-5g-core/quickstart-complete-prerequisites-deploy-azure-kubernetes-service.md",
20+
"redirect_url": "/azure/operator-5g-core/quickstart-complete-prerequisites-deploy-nexus-azure-kubernetes-service",
2121
"redirect_document_id": false
2222
},
2323
{
@@ -49,6 +49,11 @@
4949
"source_path_from_root": "/articles/operator-5g-core/quickstart-perform-checks-post-deployment.md",
5050
"redirect_url": "/azure/operator-5g-core/quickstart-configure-extension-for-status-monitoring",
5151
"redirect_document_id": false
52+
},
53+
{
54+
"source_path_from_root": "/articles/operator-5g-core/how-to-complete-prerequisites-deploy-azure-kubernetes-service.md",
55+
"redirect_url": "/azure/operator-5g-core/quickstart-complete-prerequisites-deploy-azure-kubernetes-service",
56+
"redirect_document_id": false
5257
}
5358
]
5459
}

.openpublishing.redirection.sentinel.json

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1180,11 +1180,6 @@
11801180
"redirect_url": "/azure/sentinel/data-connectors-reference",
11811181
"redirect_document_id": false
11821182
},
1183-
{
1184-
"source_path_from_root": "/articles/sentinel/data-connectors/sonicwall-firewall.md",
1185-
"redirect_url": "/azure/sentinel/data-connectors-reference",
1186-
"redirect_document_id": false
1187-
},
11881183
{
11891184
"source_path_from_root": "/articles/sentinel/data-connectors/varmour-application-controller.md",
11901185
"redirect_url": "/azure/sentinel/data-connectors-reference",

articles/advisor/advisor-release-notes.md

Lines changed: 20 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,29 @@
22
title: What's new in Azure Advisor
33
description: A description of what's new and changed in Azure Advisor
44
ms.topic: reference
5-
ms.date: 11/02/2023
5+
ms.date: 05/03/2024
66
---
77

88
# What's new in Azure Advisor?
99

1010
Learn what's new in the service. These items might be release notes, videos, blog posts, and other types of information. Bookmark this page to stay up to date with the service.
1111

12+
## April 2024
13+
14+
### Azure Advisor will no longer display aggregated potential yearly savings beginning 30 September 2024
15+
16+
In the Azure portal, Azure Advisor currently shows potential aggregated cost savings under the label "Potential yearly savings based on retail pricing" on pages where cost recommendations are displayed (as shown in the image). This aggregated savings estimate will be removed from the Azure portal on 30 September 2024. However, you can still evaluate potential yearly savings tailored to your specific needs by following the steps in [Calculate cost savings](/azure/advisor/advisor-how-to-calculate-total-cost-savings). All individual recommendations and their associated potential savings will remain available.
17+
18+
#### Recommended action
19+
20+
If you want to continue calculating aggregated potential yearly savings, follow [these steps](/azure/advisor/advisor-how-to-calculate-total-cost-savings). Note that individual recommendations might show savings that overlap with the savings shown in other recommendations, although you might not be able to benefit from them concurrently. For example, you can benefit from savings plans or from reservations for virtual machines, but not typically from both on the same virtual machines.
21+
22+
### Public Preview: Resiliency Review on Azure Advisor
23+
24+
Recommendations from WAF Reliability reviews in Advisor help you focus on the most important recommendations to ensure your workloads remain resilient. As part of the review, personalized and prioritized recommendations from Microsoft Cloud Solution Architects will be presented to you and your team. You can triage recommendations (accept or reject), manage their lifecycle on Advisor, and work with your Microsoft account team to track resolution. You can reach out to your account team to request Well Architected Reliability Assessment to successfully optimize workload resiliency and reliability by implementing curated recommendations and track its lifecycle on Advisor.
25+
26+
To learn more, visit [Azure Advisor Resiliency Reviews](/azure/advisor/advisor-resiliency-reviews).
27+
1228
## March 2024
1329

1430
### Well-Architected Framework (WAF) assessments & recommendations
@@ -97,7 +113,7 @@ If you're interested in workload based recommendations, reach out to your accoun
97113

98114
### Cost Optimization workbook template
99115

100-
The Azure Cost Optimization workbook serves as a centralized hub for some of the most used tools that can help you drive utilization and efficiency goals. It offers a range of recommendations, including Azure Advisor cost recommendations, identification of idle resources, and management of improperly deallocated Virtual Machines. Additionally, it provides insights into leveraging Azure Hybrid benefit options for Windows, Linux, and SQL databases
116+
The Azure Cost Optimization workbook serves as a centralized hub for some of the most used tools that can help you drive utilization and efficiency goals. It offers a range of recommendations, including Azure Advisor cost recommendations, identification of idle resources, and management of improperly deallocated Virtual Machines. Additionally, it provides insights into leveraging Azure Hybrid benefit options for Windows, Linux, and SQL databases.
101117

102118
To learn more, visit [Understand and optimize your Azure costs using the Cost Optimization workbook](/azure/advisor/advisor-cost-optimization-workbook).
103119

@@ -150,7 +166,7 @@ To learn more, visit [Prepare migration of your workloads impacted by service re
150166

151167
Azure Advisor now provides the option to postpone or dismiss a recommendation for multiple resources at once. Once you open a recommendations details page with a list of recommendations and associated resources, select the relevant resources and choose **Postpone** or **Dismiss** in the command bar at the top of the page.
152168

153-
To learn more, visit [Dismissing and postponing recommendations](/azure/advisor/view-recommendations#dismissing-and-postponing-recommendations)
169+
To learn more, visit [Dismissing and postponing recommendations](/azure/advisor/view-recommendations#dismissing-and-postponing-recommendations).
154170

155171
### VM/VMSS right-sizing recommendations with custom lookback period
156172

@@ -187,7 +203,7 @@ To learn more, visit [Azure Advisor for MySQL](/azure/mysql/single-server/concep
187203

188204
### Unlimited number of subscriptions
189205

190-
It is easier now to get an overview of optimization opportunities available to your organization – no need to spend time and effort to apply filters and process subscription in batches.
206+
It's easier now to get an overview of optimization opportunities available to your organization – no need to spend time and effort to apply filters and process subscription in batches.
191207

192208
To learn more, visit [Get started with Azure Advisor](advisor-get-started.md).
193209

articles/ai-services/document-intelligence/quickstarts/includes/csharp-sdk.md

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -209,7 +209,12 @@ DocumentIntelligenceClient client = new DocumentIntelligenceClient(new Uri(endpo
209209
//sample document
210210
Uri fileUri = new Uri ("https://raw.githubusercontent.com/Azure-Samples/cognitive-services-REST-api-samples/master/curl/form-recognizer/sample-layout.pdf");
211211

212-
Operation<AnalyzeResult> operation = await client.AnalyzeDocumentAsync(WaitUntil.Completed, "prebuilt-layout", fileUri);
212+
AnalyzeDocumentContent content = new AnalyzeDocumentContent()
213+
{
214+
UrlSource= fileUri
215+
};
216+
217+
Operation<AnalyzeResult> operation = await client.AnalyzeDocumentAsync(WaitUntil.Completed, "prebuilt-layout", content);
213218

214219
AnalyzeResult result = operation.Value;
215220

@@ -641,7 +646,12 @@ DocumentIntelligenceClient client = new DocumentIntelligenceClient(new Uri(endpo
641646
642647
Uri invoiceUri = new Uri ("https://raw.githubusercontent.com/Azure-Samples/cognitive-services-REST-api-samples/master/curl/form-recognizer/sample-invoice.pdf");
643648

644-
Operation<AnalyzeResult> operation = await client.AnalyzeDocumentAsync(WaitUntil.Completed, "prebuilt-invoice", invoiceUri);
649+
AnalyzeDocumentContent content = new AnalyzeDocumentContent()
650+
{
651+
UrlSource = invoiceUri
652+
};
653+
654+
Operation<AnalyzeResult> operation = await client.AnalyzeDocumentAsync(WaitUntil.Completed, "prebuilt-invoice", content);
645655

646656
AnalyzeResult result = operation.Value;
647657

articles/ai-services/document-intelligence/quickstarts/includes/java-sdk.md

Lines changed: 24 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ author: laujan
66
manager: nitinme
77
ms.service: azure-ai-document-intelligence
88
ms.topic: include
9-
ms.date: 03/25/2024
9+
ms.date: 05/01/2024
1010
ms.author: lajanuar
1111
---
1212
<!-- markdownlint-disable MD025 -->
@@ -284,18 +284,25 @@ public class DocIntelligence {
284284

285285
public static void main(String[] args) {
286286

287-
// create your `DocumentAnalysisClient` instance and `AzureKeyCredential` variable
287+
// create your `DocumentIntelligenceClient` instance and `AzureKeyCredential` variable
288288
DocumentIntelligenceClient client = new DocumentIntelligenceClientBuilder()
289289
.credential(new AzureKeyCredential(key))
290290
.endpoint(endpoint)
291291
.buildClient();
292292

293293
// sample document
294-
String documentUrl = "https://raw.githubusercontent.com/Azure-Samples/cognitive-services-REST-api-samples/master/curl/form-recognizer/sample-layout.pdf";
295294
String modelId = "prebuilt-layout";
295+
String documentUrl = "https://raw.githubusercontent.com/Azure-Samples/cognitive-services-REST-api-samples/master/curl/form-recognizer/sample-layout.pdf";
296296

297-
SyncPoller <AnalyzeResultOperation, AnalyzeResultOperation> analyzeLayoutResultPoller =
298-
client.beginAnalyzeDocument(modelId, documentUrl);
297+
SyncPoller <AnalyzeResultOperation, AnalyzeResultOperation> analyzeLayoutPoller =
298+
client.beginAnalyzeDocument(modelId,
299+
null,
300+
null,
301+
null,
302+
null,
303+
null,
304+
null,
305+
new AnalyzeDocumentRequest().setUrlSource(documentUrl));
299306

300307
AnalyzeResult analyzeLayoutResult = analyzeLayoutPoller.getFinalResult().getAnalyzeResult();
301308

@@ -658,25 +665,27 @@ public class DocIntelligence {
658665

659666
public static void main(String[] args) {
660667

661-
// create your `DocumentAnalysisClient` instance and `AzureKeyCredential` variable
662-
DocumentIntelligenceClient client = new DocumentIntelligenceClientBuilder()
663-
.credential(new AzureKeyCredential(key))
664-
.endpoint(endpoint)
665-
.buildClient();
666-
667668
// sample document
668669
String modelId = "prebuilt-invoice";
669670
String invoiceUrl = "https://raw.githubusercontent.com/Azure-Samples/cognitive-services-REST-api-samples/master/curl/form-recognizer/sample-invoice.pdf";
670671

671672
public static void main(final String[] args) throws IOException {
673+
672674
// Instantiate a client that will be used to call the service.
673675
DocumentIntelligenceClient client = new DocumentIntelligenceClientBuilder()
674-
.credential(new AzureKeyCredential("{key}"))
675-
.endpoint("https://{endpoint}.cognitiveservices.azure.com/")
676+
.credential(new AzureKeyCredential(key))
677+
.endpoint(endpoint)
676678
.buildClient();
677679

678-
SyncPoller < OperationResult, AnalyzeResult > analyzeLayoutResultPoller =
679-
client.beginAnalyzeDocument(modelId, invoiceUrl);
680+
SyncPoller<AnalyzeResultOperation, AnalyzeResultOperation > analyzeInvoicesPoller =
681+
client.beginAnalyzeDocument(modelId,
682+
null,
683+
null,
684+
null,
685+
null,
686+
null,
687+
null,
688+
new AnalyzeDocumentRequest().setUrlSource(invoiceUrl));
680689

681690
AnalyzeResult analyzeInvoiceResult = analyzeInvoicesPoller.getFinalResult().getAnalyzeResult();
682691

articles/ai-services/document-intelligence/quickstarts/includes/javascript-sdk.md

Lines changed: 60 additions & 52 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ author: laujan
66
manager: nitinme
77
ms.service: azure-ai-document-intelligence
88
ms.topic: include
9-
ms.date: 03/25/2024
9+
ms.date: 05/02/2024
1010
ms.author: lajanuar
1111
---
1212
<!-- markdownlint-disable MD025 -->
@@ -146,47 +146,44 @@ Extract text, selection marks, text styles, table structures, and bounding regio
146146
:::moniker range="doc-intel-4.0.0"
147147

148148
```javascript
149-
const { DocumentIntelligenceClient } = require("@azure-rest/ai-document-intelligence");
150-
const { AzureKeyCredential } = require("@azure/core-auth");
149+
const DocumentIntelligenceClient = require("@azure-rest/ai-document-intelligence");
151150

152151
// set `<your-key>` and `<your-endpoint>` variables with the values from the Azure portal.
153152
const key = "<your-key";
154153
const endpoint = "<your-endpoint>";
155154

156155
// sample document
157-
const formUrl = "https://raw.githubusercontent.com/Azure-Samples/cognitive-services-REST-api-samples/master/curl/form-recognizer/sample-layout.pdf"
156+
const formUrl = "https://raw.githubusercontent.com/Azure-Samples/cognitive-services-REST-api-samples/master/curl/form-recognizer/sample-layout.pdf"
158157

159-
async function main() {
160-
const client = DocumentIntelligenceClient(endpoint, new AzureKeyCredential(key));
158+
async function main() {
159+
const client = DocumentIntelligenceClient(endpoint, {key:key},);
161160

162-
const poller = await client.beginAnalyzeDocument("prebuilt-layout", formUrl);
163161

164-
const {
165-
pages,
166-
tables
167-
} = await poller.pollUntilDone();
162+
const initialResponse = await client
163+
.path("/documentModels/{modelId}:analyze", "prebuilt-layout")
164+
.post({
165+
contentType: "application/json",
166+
body: {
167+
urlSource: formUrl
168+
},
169+
});
168170

169-
if (pages.length <= 0) {
170-
console.log("No pages were extracted from the document.");
171-
} else {
172-
console.log("Pages:");
173-
for (const page of pages) {
174-
console.log("- Page", page.pageNumber, `(unit: ${page.unit})`);
175-
console.log(` ${page.width}x${page.height}, angle: ${page.angle}`);
176-
console.log(` ${page.lines.length} lines, ${page.words.length} words`);
177-
}
178-
}
171+
const poller = await getLongRunningPoller(client, initialResponse);
172+
const analyzeResult = (await poller.pollUntilDone()).body.analyzeResult;
179173

180-
if (tables.length <= 0) {
181-
console.log("No tables were extracted from the document.");
182-
} else {
183-
console.log("Tables:");
184-
for (const table of tables) {
185-
console.log(
186-
`- Extracted table: ${table.columnCount} columns, ${table.rowCount} rows (${table.cells.length} cells)`
187-
);
188-
}
174+
const documents = analyzeResult?.documents;
175+
176+
const document = documents && documents[0];
177+
if (!document) {
178+
throw new Error("Expected at least one document in the result.");
189179
}
180+
181+
console.log(
182+
"Extracted document:",
183+
document.docType,
184+
`(confidence: ${document.confidence || "<undefined>"})`,
185+
);
186+
console.log("Fields:", document.fields);
190187
}
191188

192189
main().catch((error) => {
@@ -312,8 +309,7 @@ In this example, we analyze an invoice using the **prebuilt-invoice** model.
312309

313310
```javascript
314311

315-
const { DocumentIntelligenceClient } = require("@azure-rest/ai-document-intelligence");
316-
const { AzureKeyCredential } = require("@azure/core-auth");
312+
const DocumentIntelligenceClient = require("@azure-rest/ai-document-intelligence");
317313

318314
// set `<your-key>` and `<your-endpoint>` variables with the values from the Azure portal.
319315
const key = "<your-key>";
@@ -323,32 +319,44 @@ const { AzureKeyCredential } = require("@azure/core-auth");
323319
invoiceUrl = "https://raw.githubusercontent.com/Azure-Samples/cognitive-services-REST-api-samples/master/curl/form-recognizer/sample-invoice.pdf"
324320

325321
async function main() {
326-
const client = DocumentIntelligenceClient(endpoint, new AzureKeyCredential(key));
327322

328-
const poller = await client.beginAnalyzeDocument("prebuilt-invoice", invoiceUrl);
329-
if (pages.length <= 0) {
330-
console.log("No pages were extracted from the document.");
331-
} else {
332-
console.log("Pages:");
333-
for (const page of pages) {
334-
console.log("- Page", page.pageNumber, `(unit: ${page.unit})`);
335-
console.log(` ${page.width}x${page.height}, angle: ${page.angle}`);
336-
console.log(` ${page.lines.length} lines, ${page.words.length} words`);
337-
}
338-
}
323+
const client = DocumentIntelligenceClient(endpoint, {key: key},
324+
);
339325

340-
if (tables.length <= 0) {
341-
console.log("No tables were extracted from the document.");
326+
const initialResponse = await client
327+
.path("/documentModels/{modelId}:analyze", "prebuilt-invoice")
328+
.post({
329+
contentType: "application/json",
330+
body: {
331+
// The Document Intelligence service will access the URL to the invoice image and extract data from it
332+
urlSource: invoiceUrl,
333+
},
334+
});
335+
336+
337+
const poller = await getLongRunningPoller(client, initialResponse);
338+
339+
poller.onProgress((state) => console.log("Operation:", state.result, state.status));
340+
const analyzeResult = (await poller.pollUntilDone()).body.analyzeResult;
341+
342+
const documents = analyzeResult?.documents;
343+
344+
const result = documents && documents[0];
345+
if (result) {
346+
console.log(result.fields);
342347
} else {
343-
console.log("Tables:");
344-
for (const table of tables) {
345-
console.log(
346-
`- Extracted table: ${table.columnCount} columns, ${table.rowCount} rows (${table.cells.length} cells)`
347-
);
348-
}
348+
throw new Error("Expected at least one invoice in the result.");
349349
}
350+
351+
console.log(
352+
"Extracted invoice:",
353+
document.docType,
354+
`(confidence: ${document.confidence || "<undefined>"})`,
355+
);
356+
console.log("Fields:", document.fields);
350357
}
351358

359+
352360
main().catch((error) => {
353361
console.error("An error occurred:", error);
354362
process.exit(1);

0 commit comments

Comments
 (0)