This page contains Windows bias

About This Page

This page is part of the Azure documentation. It contains code examples and configuration instructions for working with Azure services.

Bias Analysis

Bias Types:
⚠️ windows_first
⚠️ missing_linux_example
⚠️ windows_tools
Summary:
The documentation page demonstrates a clear Windows bias: all code examples (REST API and C# SDK) exclusively use Windows images and Windows-specific configuration properties. There are no Linux image examples or Linux-specific configuration guidance. The only OS-specific property discussed is 'windowsConfiguration.enableAutomaticUpdates', with no mention of Linux equivalents. The documentation does not provide parity for Linux users, omitting both configuration and example usage for Linux-based pools.
Recommendations:
  • Add parallel examples for Linux pools in both REST API and SDK sections, using a Linux image (e.g., Ubuntu) and appropriate nodeAgentSKUId.
  • Document Linux-specific configuration options, such as 'linuxConfiguration', and clarify any differences in upgrade or patching behavior.
  • When discussing OS-specific properties (e.g., 'windowsConfiguration.enableAutomaticUpdates'), also mention the Linux equivalents or explicitly state if not applicable.
  • In all code and JSON examples, provide both Windows and Linux variants, or use a neutral example with comments for both OS types.
  • Ensure the 'Supported OS images' section explicitly lists both Windows and Linux images, and clarify any differences in support or behavior.
GitHub Create pull request

Scan History

Date Scan ID Status Bias Status
2025-07-12 23:44 #41 in_progress ❌ Biased
2025-07-12 00:58 #8 cancelled ✅ Clean
2025-07-10 05:06 #7 processing ✅ Clean

Flagged Code Snippets

{ "name": "test1", "type": "Microsoft.Batch/batchAccounts/pools", "parameters": { "properties": { "vmSize": "Standard_d4s_v3", "deploymentConfiguration": { "virtualMachineConfiguration": { "imageReference": { "publisher": "MicrosoftWindowsServer", "offer": "WindowsServer", "sku": "2019-datacenter-smalldisk", "version": "latest" }, "nodePlacementConfiguration": { "policy": "Zonal" }, "nodeAgentSKUId": "batch.node.windows amd64", "windowsConfiguration": { "enableAutomaticUpdates": false } } }, "scaleSettings": { "fixedScale": { "targetDedicatedNodes": 2, "targetLowPriorityNodes": 0 } }, "upgradePolicy": { "mode": "Automatic", "automaticOSUpgradePolicy": { "disableAutomaticRollback": true, "enableAutomaticOSUpgrade": true, "useRollingUpgradePolicy": true, "osRollingUpgradeDeferral": true }, "rollingUpgradePolicy": { "enableCrossZoneUpgrade": true, "maxBatchInstancePercent": 20, "maxUnhealthyInstancePercent": 20, "maxUnhealthyUpgradedInstancePercent": 20, "pauseTimeBetweenBatches": "PT0S", "prioritizeUnhealthyInstances": false, "rollbackFailedInstancesOnPolicyBreach": false } } } } }
public async Task CreateUpgradePolicyPool() { // Authenticate var clientId = Environment.GetEnvironmentVariable("CLIENT_ID"); var clientSecret = Environment.GetEnvironmentVariable("CLIENT_SECRET"); var tenantId = Environment.GetEnvironmentVariable("TENANT_ID"); var subscriptionId = Environment.GetEnvironmentVariable("SUBSCRIPTION_ID"); ClientSecretCredential credential = new ClientSecretCredential(tenantId, clientId, clientSecret); ArmClient client = new ArmClient(credential, subscriptionId); // Get an existing Batch account string resourceGroupName = "testrg"; string accountName = "testaccount"; ResourceIdentifier batchAccountResourceId = BatchAccountResource.CreateResourceIdentifier(subscriptionId, resourceGroupName, accountName); BatchAccountResource batchAccount = client.GetBatchAccountResource(batchAccountResourceId); // get the collection of this BatchAccountPoolResource BatchAccountPoolCollection collection = batchAccount.GetBatchAccountPools(); // Define the pool string poolName = "testpool"; BatchAccountPoolData data = new BatchAccountPoolData() { VmSize = "Standard_d4s_v3", DeploymentConfiguration = new BatchDeploymentConfiguration() { VmConfiguration = new BatchVmConfiguration(new BatchImageReference() { Publisher = "MicrosoftWindowsServer", Offer = "WindowsServer", Sku = "2019-datacenter-smalldisk", Version = "latest", }, nodeAgentSkuId: "batch.node.windows amd64") { NodePlacementPolicy = BatchNodePlacementPolicyType.Zonal, IsAutomaticUpdateEnabled = false }, }, ScaleSettings = new BatchAccountPoolScaleSettings() { FixedScale = new BatchAccountFixedScaleSettings() { TargetDedicatedNodes = 2, TargetLowPriorityNodes = 0, }, }, UpgradePolicy = new UpgradePolicy() { Mode = UpgradeMode.Automatic, AutomaticOSUpgradePolicy = new AutomaticOSUpgradePolicy() { DisableAutomaticRollback = true, EnableAutomaticOSUpgrade = true, UseRollingUpgradePolicy = true, OSRollingUpgradeDeferral = true }, RollingUpgradePolicy = new RollingUpgradePolicy() { EnableCrossZoneUpgrade = true, MaxBatchInstancePercent = 20, MaxUnhealthyInstancePercent = 20, MaxUnhealthyUpgradedInstancePercent = 20, PauseTimeBetweenBatches = "PT0S", PrioritizeUnhealthyInstances = false, RollbackFailedInstancesOnPolicyBreach = false, } } }; ArmOperation<BatchAccountPoolResource> lro = await collection.CreateOrUpdateAsync(WaitUntil.Completed, poolName, data); BatchAccountPoolResource result = lro.Value; // the variable result is a resource, you could call other operations on this instance as well // but just for demo, we get its data from this resource instance BatchAccountPoolData resourceData = result.Data; // for demo we just print out the id Console.WriteLine($"Succeeded on id: {resourceData.Id}"); }