Skip to content

Commit bd2739a

Browse files
Merge branch 'MicrosoftDocs:release-aio-2507' into release-aio-2507
2 parents d3cb0a3 + def5090 commit bd2739a

File tree

203 files changed

+3961
-1362
lines changed

Some content is hidden

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

203 files changed

+3961
-1362
lines changed

.openpublishing.redirection.json

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6894,6 +6894,11 @@
68946894
"redirect_url": "/azure/governance/policy/samples/hipaa-hitrust",
68956895
"redirect_document_id": false
68966896
},
6897+
{
6898+
"source_path": "articles/reliability/migrate-workload-aks-mysql.md",
6899+
"redirect_url": "/azure/reliability/availability-zones-migration-overview",
6900+
"redirect_document_id": true
6901+
},
68976902
{
68986903
"source_path": "articles/private-5g-core/disconnected-mode.md",
68996904
"redirect_url": "/azure/private-5g-core/azure-stack-edge-disconnects",
@@ -6904,6 +6909,7 @@
69046909
"redirect_url": "/azure/signups/overview",
69056910
"redirect_document_id": false
69066911
}
6912+
69076913
]
69086914
}
69096915

articles/automation/manage-runtime-environment.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -313,7 +313,7 @@ PATCH
313313
https://management.azure.com/subscriptions/<subscriptionId>/resourceGroups/<resourceGroup>/providers/Microsoft.Automation/automationAccounts/<accountName>/runbooks/<runbookName>?api-version=2024-10-23
314314
{
315315
"properties": {
316-
"type": "PowerShell"
316+
"type": "PowerShell",
317317
"runtimeEnvironment": "<runtimeEnvironmentName>"
318318
}
319319
}

articles/automation/troubleshoot/extension-based-hybrid-runbook-worker.md

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -120,9 +120,6 @@ You can remove this limit and make it unrestricted with the following steps:
120120
1. systemctl daemon-reload
121121
1. systemctl restart hwd.service
122122
123-
For more information, see [Linux hybrid jobs get stuck in Running state even if each CPU core usage is less than 25% - Overview](https://supportability.visualstudio.com/AAAP_Code/_wiki/wikis/AAAP/1980067/KI-Linux-hybrid-jobs-get-stuck-in-Running-status-even-if-each-CPU-core-usage-is-less-than-25-).
124-
125-
126123
### Scenario: Runbooks go into a suspended state on a Hybrid Runbook Worker when using a custom account on a server with User Account Control (UAC) enabled
127124
128125
#### Issue

articles/azure-app-configuration/enable-dynamic-configuration-gin-web-app.md

Lines changed: 21 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ Finish the quickstart: [Create a Gin web app with Azure App Configuration](./qui
4040
> [!TIP]
4141
> You can set the `Interval` property of the `RefreshOptions` to specify the minimum time between configuration refreshes. In this example, you use the default value of 30 seconds. Adjust to a higher value if you need to reduce the number of requests made to your App Configuration store.
4242

43-
2. Update your `main.go` file to register a callback function for configuration updates:
43+
1. Update your `main.go` file to register a callback function for configuration updates:
4444

4545
```golang
4646
// Existing code
@@ -59,11 +59,21 @@ Finish the quickstart: [Create a Gin web app with Azure App Configuration](./qui
5959
return
6060
}
6161
})
62+
63+
// The rest of existing code
64+
//... ...
6265
```
6366

64-
3. Add a configuration refresh middleware. Update *`main.go`* with the following code.
67+
1. Add a configuration refresh middleware. Update *`main.go`* with the following code.
6568

6669
```golang
70+
// Existing code
71+
// ... ...
72+
type App struct {
73+
Name string
74+
Port int
75+
}
76+
6777
func configRefreshMiddleware(provider *azureappconfiguration.AzureAppConfiguration) gin.HandlerFunc {
6878
return func(c *gin.Context) {
6979
// Start refresh in a goroutine to avoid blocking the request
@@ -79,9 +89,12 @@ Finish the quickstart: [Create a Gin web app with Azure App Configuration](./qui
7989
c.Next()
8090
}
8191
}
92+
93+
// The rest of existing code
94+
//... ...
8295
```
8396

84-
4. Use the configuration refresh middleware:
97+
1. Use the configuration refresh middleware:
8598

8699
```golang
87100
// Existing code
@@ -110,20 +123,21 @@ Now that you've set up dynamic configuration refresh, let's test it to see it in
110123
1. Run the application.
111124

112125
```bash
113-
go run main.go
126+
go mod tidy
127+
go run .
114128
```
115129

116-
2. Open a web browser and navigate to `http://localhost:8080` to access your application. The web page looks like this:
130+
1. Open a web browser and navigate to `http://localhost:8080` to access your application. The web page looks like this:
117131

118132
:::image type="content" source="./media/quickstarts/gin-app-refresh-before.png" alt-text="Screenshot of the gin web app refresh before.":::
119133

120-
3. Navigate to your App Configuration store and update the value of the `Config.Message` key.
134+
1. Navigate to your App Configuration store and update the value of the `Config.Message` key.
121135

122136
| Key | Value | Content type |
123137
|------------------------|----------------------------------------|--------------------|
124138
| *Config.Message* | *Hello from Azure App Configuration - now with live updates!* | Leave empty |
125139

126-
4. After refreshing the browser a few times, you'll see the updated content once the ConfigMap is updated in 30 seconds.
140+
1. After refreshing the browser a few times, you'll see the updated content once the ConfigMap is updated in 30 seconds.
127141
128142
:::image type="content" source="./media/quickstarts/gin-app-refresh-after.png" alt-text="Screenshot of the gin web app refresh after.":::
129143

articles/azure-app-configuration/enable-dynamic-configuration-go-console-app.md

Lines changed: 20 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -41,26 +41,27 @@ In this quickstart, you'll enhance a basic Go console application to dynamically
4141
> [!TIP]
4242
> You can set the `Interval` property of the `RefreshOptions` to specify the minimum time between configuration refreshes. In this example, you use the default value of 30 seconds. Adjust to a higher value if you need to reduce the number of requests made to your App Configuration store.
4343

44-
2. Open the file *`unmarshal_sample.go`* and add the following code to your main function:
44+
2. Open the file *`main.go`* and add the following code to your main function:
4545

4646
```golang
47-
// Existing code in unmarshal_sample.go
47+
// Existing code in main.go
4848
// ... ...
49-
fmt.Printf("Timeout: %d seconds\n", config.App.Settings.Timeout)
50-
fmt.Printf("Retry Count: %d\n", config.App.Settings.RetryCount)
51-
52-
// Register refresh callback to update and display the configuration
53-
provider.OnRefreshSuccess(func() {
54-
// Re-unmarshal the configuration
55-
err := appCfgProvider.Unmarshal(&updatedConfig, nil)
56-
if err != nil {
57-
log.Printf("Error unmarshalling updated configuration: %s", err)
58-
return
59-
}
60-
61-
// Display the updated configuration
62-
displayConfig(config)
63-
})
49+
fmt.Println("\nRaw JSON Configuration:")
50+
fmt.Println("------------------------")
51+
fmt.Println(string(jsonBytes))
52+
53+
// Register refresh callback to update the configuration
54+
provider.OnRefreshSuccess(func() {
55+
var updatedConfig Config
56+
// Re-unmarshal the configuration
57+
err := provider.Unmarshal(&updatedConfig, nil)
58+
if err != nil {
59+
log.Printf("Error unmarshalling updated configuration: %s", err)
60+
return
61+
}
62+
63+
fmt.Printf("Message: %s\n", updatedConfig.Message)
64+
})
6465
6566
// Setup a channel to listen for termination signals
6667
done := make(chan os.Signal, 1)
@@ -99,7 +100,8 @@ In this quickstart, you'll enhance a basic Go console application to dynamically
99100
1. Run your application:
100101

101102
```bash
102-
go run unmarshal_sample.go
103+
go mod tidy
104+
go run .
103105
```
104106

105107
2. Keep the application running.

articles/azure-app-configuration/howto-telemetry-javascript.md

Lines changed: 4 additions & 74 deletions
Original file line numberDiff line numberDiff line change
@@ -91,82 +91,12 @@ In this tutorial, you use telemetry in your Node.js application to track feature
9191
export APPLICATIONINSIGHTS_CONNECTION_STRING='applicationinsights-connection-string'
9292
```
9393
94-
1. Run the application, [see step 4 of Use variant feature flags](./howto-variant-feature-flags-javascript.md#run-the-application).
95-
96-
1. Create 10 different users and log into the application. As you log in with each user, you get a different message variant for some of them. ~50% of the time you get no message. 25% of the time you get the message "Hello!" and 25% of the time you get "I hope this makes your day!"
97-
98-
1. With some of the users click the **Like** button to trigger the telemetry event.
99-
100-
> [!div class="mx-imgBorder"]
101-
> ![Screenshot of the application with like button clicked.](./media/howto-telemetry-javascript/like-button.png)
102-
103-
1. Open your Application Insights resource in the Azure portal and select **Logs** under **Monitoring**. In the query window, run the following query to see the telemetry events:
104-
105-
```kusto
106-
// Step 1: Get distinct users and their Variant from FeatureEvaluation
107-
let evaluated_users =
108-
customEvents
109-
| where name == "FeatureEvaluation"
110-
| extend TargetingId = tostring(customDimensions.TargetingId),
111-
Variant = tostring(customDimensions.Variant)
112-
| summarize Variant = any(Variant) by TargetingId;
113-
114-
// Step 2: Get distinct users who emitted a "Like"
115-
let liked_users =
116-
customEvents
117-
| where name == "Liked"
118-
| extend TargetingId = tostring(customDimensions.TargetingId)
119-
| summarize by TargetingId;
120-
121-
// Step 3: Join them to get only the evaluated users who also liked
122-
let hearted_users =
123-
evaluated_users
124-
| join kind=inner (liked_users) on TargetingId
125-
| summarize HeartedUsers = dcount(TargetingId) by Variant;
126-
127-
// Step 4: Total evaluated users per variant
128-
let total_users =
129-
evaluated_users
130-
| summarize TotalUsers = dcount(TargetingId) by Variant;
131-
132-
// Step 5: Combine results
133-
let combined_data =
134-
total_users
135-
| join kind=leftouter (hearted_users) on Variant
136-
| extend HeartedUsers = coalesce(HeartedUsers, 0)
137-
| extend PercentageHearted = strcat(round(HeartedUsers * 100.0 / TotalUsers, 1), "%")
138-
| project Variant, TotalUsers, HeartedUsers, PercentageHearted;
139-
140-
// Step 6: Add total row
141-
let total_sum =
142-
combined_data
143-
| summarize
144-
TotalUsers = sum(TotalUsers),
145-
HeartedUsers = sum(HeartedUsers)
146-
| extend
147-
Variant = "All",
148-
PercentageHearted = strcat(round(HeartedUsers * 100.0 / TotalUsers, 1), "%")
149-
| project Variant, TotalUsers, HeartedUsers, PercentageHearted;
150-
151-
// Step 7: Output
152-
combined_data
153-
| union (total_sum)
154-
```
155-
156-
> [!div class="mx-imgBorder"]
157-
> ![Screenshot of Application Insights showing the results table with four rows; All, Simple, Long, and None with their respective user counts and percentages.](./media/howto-telemetry-javascript/telemetry-results.png)
158-
159-
You see one "FeatureEvaluation" event for each time the quote page was loaded and one "Liked" event for each time the like button was clicked. The "FeatureEvaluation" event has a custom property called `FeatureName` with the name of the feature flag that was evaluated. Both events have a custom property called `TargetingId` with the name of the user that liked the quote.
94+
## Collect telemetry
16095
161-
For more information about the "FeatureEvaluation" event, go to the [Feature flag telemetry reference](./feature-flag-telemetry-reference.md)
96+
Deploy your application to begin collecting telemetry from your users. To test its functionality, you can simulate user activity by creating many test users. Each user will experience a different variant of greeting messages, and they can interact with the application by clicking the heart button to like a quote. As your user base grows, you can monitor the increasing volume of telemetry data collected in Azure App Configuration. Additionally, you can drill down into the data to analyze how each variant of the feature flag influences user behavior.
97+
- [Review telemetry results in App Configuration](./howto-telemetry.md#review-telemetry-results-in-azure-app-configuration).
16298
16399
## Additional resources
164100
165101
- [Quote of the Day sample](https://github.com/Azure-Samples/quote-of-the-day-javascript)
166-
167-
## Next steps
168-
169-
For the full feature rundown of the JavaScript feature management library, refer to the following document.
170-
171-
> [!div class="nextstepaction"]
172-
> [JavaScript Feature Management](./feature-management-javascript-reference.md)
102+
- For the full feature rundown of the JavaScript feature management library you can refer to the [JavaScript Feature Management reference documentation](./feature-management-javascript-reference.md)

articles/azure-app-configuration/howto-telemetry-python.md

Lines changed: 3 additions & 63 deletions
Original file line numberDiff line numberDiff line change
@@ -105,70 +105,10 @@ In this tutorial, you use telemetry in your Python application to track feature
105105
export APPLICATIONINSIGHTS_CONNECTION_STRING='applicationinsights-connection-string'
106106
```
107107
108-
1. Run the application, [see step 2 of Use variant feature flags](./howto-variant-feature-flags-python.md#build-and-run-the-app).
109-
110-
1. Create 10 different users and log into the application. As you log in with each user, you get a different message variant for some of them. ~50% of the time you get no message. 25% of the time you get the message "Hello!" and 25% of the time you get "I hope this makes your day!".
111-
112-
1. With some of the users select the **Like** button to trigger the telemetry event.
113-
114-
1. Open your Application Insights resource in the Azure portal and select **Logs** under **Monitoring**. In the query window, run the following query to see the telemetry events:
115-
116-
```kusto
117-
// Step 1: Get distinct users and their Variant from FeatureEvaluation
118-
let evaluated_users =
119-
customEvents
120-
| where name == "FeatureEvaluation"
121-
| extend TargetingId = tostring(customDimensions.TargetingId),
122-
Variant = tostring(customDimensions.Variant)
123-
| summarize Variant = any(Variant) by TargetingId;
124-
125-
// Step 2: Get distinct users who emitted a "Like"
126-
let liked_users =
127-
customEvents
128-
| where name == "Liked"
129-
| extend TargetingId = tostring(customDimensions.TargetingId)
130-
| summarize by TargetingId;
131-
132-
// Step 3: Join them to get only the evaluated users who also liked
133-
let hearted_users =
134-
evaluated_users
135-
| join kind=inner (liked_users) on TargetingId
136-
| summarize HeartedUsers = dcount(TargetingId) by Variant;
137-
138-
// Step 4: Total evaluated users per variant
139-
let total_users =
140-
evaluated_users
141-
| summarize TotalUsers = dcount(TargetingId) by Variant;
142-
143-
// Step 5: Combine results
144-
let combined_data =
145-
total_users
146-
| join kind=leftouter (hearted_users) on Variant
147-
| extend HeartedUsers = coalesce(HeartedUsers, 0)
148-
| extend PercentageHearted = strcat(round(HeartedUsers * 100.0 / TotalUsers, 1), "%")
149-
| project Variant, TotalUsers, HeartedUsers, PercentageHearted;
150-
151-
// Step 6: Add total row
152-
let total_sum =
153-
combined_data
154-
| summarize
155-
TotalUsers = sum(TotalUsers),
156-
HeartedUsers = sum(HeartedUsers)
157-
| extend
158-
Variant = "All",
159-
PercentageHearted = strcat(round(HeartedUsers * 100.0 / TotalUsers, 1), "%")
160-
| project Variant, TotalUsers, HeartedUsers, PercentageHearted;
161-
162-
// Step 7: Output
163-
combined_data
164-
| union (total_sum)
108+
## Collect telemetry
165109
166-
```
167-
168-
> [!div class="mx-imgBorder"]
169-
> ![Screenshot of Application Insights showing the results table with four rows; All, Simple, Long, and None with their respective user counts and percentages.](./media/howto-telemetry-python/telemetry-results.png)
170-
171-
You see one "FeatureEvaluation" for each time the quote page was loaded and one "Liked" event for each time the like button was clicked. The "FeatureEvaluation" event have a custom property called `FeatureName` with the name of the feature flag that was evaluated. Both events have a custom property called `TargetingId` with the name of the user that liked the quote.
110+
Deploy your application to begin collecting telemetry from your users. To test its functionality, you can simulate user activity by creating many test users. Each user will experience a different variant of greeting messages, and they can interact with the application by clicking the heart button to like a quote. As your user base grows, you can monitor the increasing volume of telemetry data collected in Azure App Configuration. Additionally, you can drill down into the data to analyze how each variant of the feature flag influences user behavior.
111+
- [Review telemetry results in App Configuration](./howto-telemetry.md#review-telemetry-results-in-azure-app-configuration).
172112
173113
## Additional resources
174114
- [Flask Quote of the Day sample](https://github.com/Azure-Samples/quote-of-the-day-python)

0 commit comments

Comments
 (0)