diff --git a/sdk/containerservice/azure-mgmt-containerservice/CHANGELOG.md b/sdk/containerservice/azure-mgmt-containerservice/CHANGELOG.md index c5c94f06ad5d..8a8cacb15c57 100644 --- a/sdk/containerservice/azure-mgmt-containerservice/CHANGELOG.md +++ b/sdk/containerservice/azure-mgmt-containerservice/CHANGELOG.md @@ -1,5 +1,21 @@ # Release History +## 41.3.0 (2026-06-03) + +### Features Added + + - Client `ContainerServiceClient` added operation group `identity_bindings` + - Model `AgentPoolUpgradeProfileProperties` added property `recently_used_versions` + - Model `ManagedClusterAzureMonitorProfileMetrics` added property `control_plane` + - Added model `AgentPoolRecentlyUsedVersion` + - Added model `IdentityBinding` + - Added model `IdentityBindingManagedIdentityProfile` + - Added model `IdentityBindingOidcIssuerProfile` + - Added model `IdentityBindingProperties` + - Added enum `IdentityBindingProvisioningState` + - Added model `ManagedClusterAzureMonitorProfileMetricsControlPlane` + - Added operation group `IdentityBindingsOperations` + ## 41.3.0b1 (2026-05-18) ### Features Added diff --git a/sdk/containerservice/azure-mgmt-containerservice/README.md b/sdk/containerservice/azure-mgmt-containerservice/README.md index 0defa9d12e4d..063223d2c7d9 100644 --- a/sdk/containerservice/azure-mgmt-containerservice/README.md +++ b/sdk/containerservice/azure-mgmt-containerservice/README.md @@ -24,7 +24,7 @@ pip install azure-identity ### Authentication -By default, [Azure Active Directory](https://aka.ms/awps/aad) token authentication depends on correct configuration of the following environment variables. +By default, [Microsoft Entra](https://learn.microsoft.com/entra/fundamentals/what-is-entra) token authentication depends on correct configuration of the following environment variables. - `AZURE_CLIENT_ID` for Azure client ID. - `AZURE_TENANT_ID` for Azure tenant ID. diff --git a/sdk/containerservice/azure-mgmt-containerservice/_metadata.json b/sdk/containerservice/azure-mgmt-containerservice/_metadata.json index 2469d610b66d..28fbdc48a4c9 100644 --- a/sdk/containerservice/azure-mgmt-containerservice/_metadata.json +++ b/sdk/containerservice/azure-mgmt-containerservice/_metadata.json @@ -1,9 +1,9 @@ { - "apiVersion": "2026-03-02-preview", + "apiVersion": "2026-04-01", "apiVersions": { - "Microsoft.ContainerService": "2026-03-02-preview" + "Microsoft.ContainerService": "2026-04-01" }, - "commit": "736baa6d7d8bec3c6aaf1f16e77e78846eda4871", + "commit": "532545feb236d55064e4fa922f3fa38517857ba8", "repository_url": "https://github.com/Azure/azure-rest-api-specs", "typespec_src": "specification/containerservice/resource-manager/Microsoft.ContainerService/aks", "emitterVersion": "0.62.1" diff --git a/sdk/containerservice/azure-mgmt-containerservice/apiview-properties.json b/sdk/containerservice/azure-mgmt-containerservice/apiview-properties.json index 10788ecc4bae..2e315e5188da 100644 --- a/sdk/containerservice/azure-mgmt-containerservice/apiview-properties.json +++ b/sdk/containerservice/azure-mgmt-containerservice/apiview-properties.json @@ -15,11 +15,9 @@ "azure.mgmt.containerservice.models.AgentPoolAvailableVersions": "Microsoft.ContainerService.AgentPoolAvailableVersions", "azure.mgmt.containerservice.models.AgentPoolAvailableVersionsProperties": "Microsoft.ContainerService.AgentPoolAvailableVersionsProperties", "azure.mgmt.containerservice.models.AgentPoolAvailableVersionsPropertiesAgentPoolVersionsItem": "Microsoft.ContainerService.AgentPoolAvailableVersionsPropertiesAgentPoolVersionsItem", - "azure.mgmt.containerservice.models.AgentPoolBlueGreenUpgradeSettings": "Microsoft.ContainerService.AgentPoolBlueGreenUpgradeSettings", "azure.mgmt.containerservice.models.AgentPoolDeleteMachinesParameter": "Microsoft.ContainerService.AgentPoolDeleteMachinesParameter", "azure.mgmt.containerservice.models.AgentPoolGatewayProfile": "Microsoft.ContainerService.AgentPoolGatewayProfile", "azure.mgmt.containerservice.models.AgentPoolManagedClusterAgentPoolProfileProperties": "Microsoft.ContainerService.AgentPoolManagedClusterAgentPoolProfileProperties", - "azure.mgmt.containerservice.models.AgentPoolNetworkInterface": "Microsoft.ContainerService.AgentPoolNetworkInterface", "azure.mgmt.containerservice.models.AgentPoolNetworkProfile": "Microsoft.ContainerService.AgentPoolNetworkProfile", "azure.mgmt.containerservice.models.AgentPoolRecentlyUsedVersion": "Microsoft.ContainerService.AgentPoolRecentlyUsedVersion", "azure.mgmt.containerservice.models.AgentPoolSecurityProfile": "Microsoft.ContainerService.AgentPoolSecurityProfile", @@ -29,17 +27,12 @@ "azure.mgmt.containerservice.models.AgentPoolUpgradeProfilePropertiesUpgradesItem": "Microsoft.ContainerService.AgentPoolUpgradeProfilePropertiesUpgradesItem", "azure.mgmt.containerservice.models.AgentPoolUpgradeSettings": "Microsoft.ContainerService.AgentPoolUpgradeSettings", "azure.mgmt.containerservice.models.AgentPoolWindowsProfile": "Microsoft.ContainerService.AgentPoolWindowsProfile", - "azure.mgmt.containerservice.models.AutoScaleProfile": "Microsoft.ContainerService.AutoScaleProfile", "azure.mgmt.containerservice.models.AzureKeyVaultKms": "Microsoft.ContainerService.AzureKeyVaultKms", "azure.mgmt.containerservice.models.ClusterUpgradeSettings": "Microsoft.ContainerService.ClusterUpgradeSettings", "azure.mgmt.containerservice.models.CommandResultProperties": "Microsoft.ContainerService.CommandResultProperties", "azure.mgmt.containerservice.models.CompatibleVersions": "Microsoft.ContainerService.CompatibleVersions", - "azure.mgmt.containerservice.models.Component": "Microsoft.ContainerService.Component", - "azure.mgmt.containerservice.models.ComponentsByRelease": "Microsoft.ContainerService.ComponentsByRelease", "azure.mgmt.containerservice.models.ContainerServiceLinuxProfile": "Microsoft.ContainerService.ContainerServiceLinuxProfile", "azure.mgmt.containerservice.models.ContainerServiceNetworkProfile": "Microsoft.ContainerService.ContainerServiceNetworkProfile", - "azure.mgmt.containerservice.models.ContainerServiceNetworkProfileKubeProxyConfig": "Microsoft.ContainerService.ContainerServiceNetworkProfileKubeProxyConfig", - "azure.mgmt.containerservice.models.ContainerServiceNetworkProfileKubeProxyConfigIpvsConfig": "Microsoft.ContainerService.ContainerServiceNetworkProfileKubeProxyConfigIpvsConfig", "azure.mgmt.containerservice.models.ContainerServiceSshConfiguration": "Microsoft.ContainerService.ContainerServiceSshConfiguration", "azure.mgmt.containerservice.models.ContainerServiceSshPublicKey": "Microsoft.ContainerService.ContainerServiceSshPublicKey", "azure.mgmt.containerservice.models.CreationData": "Microsoft.ContainerService.CreationData", @@ -55,9 +48,6 @@ "azure.mgmt.containerservice.models.ErrorResponse": "Azure.ResourceManager.CommonTypes.ErrorResponse", "azure.mgmt.containerservice.models.ExtendedLocation": "Microsoft.ContainerService.ExtendedLocation", "azure.mgmt.containerservice.models.GPUProfile": "Microsoft.ContainerService.GPUProfile", - "azure.mgmt.containerservice.models.GuardrailsAvailableVersion": "Microsoft.ContainerService.GuardrailsAvailableVersion", - "azure.mgmt.containerservice.models.GuardrailsAvailableVersionsProperties": "Microsoft.ContainerService.GuardrailsAvailableVersionsProperties", - "azure.mgmt.containerservice.models.HardEvictionThreshold": "Microsoft.ContainerService.HardEvictionThreshold", "azure.mgmt.containerservice.models.IdentityBinding": "Microsoft.ContainerService.IdentityBinding", "azure.mgmt.containerservice.models.IdentityBindingManagedIdentityProfile": "Microsoft.ContainerService.IdentityBindingManagedIdentityProfile", "azure.mgmt.containerservice.models.IdentityBindingOidcIssuerProfile": "Microsoft.ContainerService.IdentityBindingOidcIssuerProfile", @@ -69,38 +59,18 @@ "azure.mgmt.containerservice.models.IstioIngressGateway": "Microsoft.ContainerService.IstioIngressGateway", "azure.mgmt.containerservice.models.IstioPluginCertificateAuthority": "Microsoft.ContainerService.IstioPluginCertificateAuthority", "azure.mgmt.containerservice.models.IstioServiceMesh": "Microsoft.ContainerService.IstioServiceMesh", - "azure.mgmt.containerservice.models.JWTAuthenticator": "Microsoft.ContainerService.JWTAuthenticator", - "azure.mgmt.containerservice.models.JWTAuthenticatorClaimMappingExpression": "Microsoft.ContainerService.JWTAuthenticatorClaimMappingExpression", - "azure.mgmt.containerservice.models.JWTAuthenticatorClaimMappings": "Microsoft.ContainerService.JWTAuthenticatorClaimMappings", - "azure.mgmt.containerservice.models.JWTAuthenticatorExtraClaimMappingExpression": "Microsoft.ContainerService.JWTAuthenticatorExtraClaimMappingExpression", - "azure.mgmt.containerservice.models.JWTAuthenticatorIssuer": "Microsoft.ContainerService.JWTAuthenticatorIssuer", - "azure.mgmt.containerservice.models.JWTAuthenticatorProperties": "Microsoft.ContainerService.JWTAuthenticatorProperties", - "azure.mgmt.containerservice.models.JWTAuthenticatorValidationRule": "Microsoft.ContainerService.JWTAuthenticatorValidationRule", "azure.mgmt.containerservice.models.KubeletConfig": "Microsoft.ContainerService.KubeletConfig", - "azure.mgmt.containerservice.models.KubeReserved": "Microsoft.ContainerService.KubeReserved", "azure.mgmt.containerservice.models.KubernetesPatchVersion": "Microsoft.ContainerService.KubernetesPatchVersion", - "azure.mgmt.containerservice.models.KubernetesResourceObjectEncryptionProfile": "Microsoft.ContainerService.KubernetesResourceObjectEncryptionProfile", "azure.mgmt.containerservice.models.KubernetesVersion": "Microsoft.ContainerService.KubernetesVersion", "azure.mgmt.containerservice.models.KubernetesVersionCapabilities": "Microsoft.ContainerService.KubernetesVersionCapabilities", "azure.mgmt.containerservice.models.KubernetesVersionListResult": "Microsoft.ContainerService.KubernetesVersionListResult", - "azure.mgmt.containerservice.models.LabelSelector": "Microsoft.ContainerService.LabelSelector", - "azure.mgmt.containerservice.models.LabelSelectorRequirement": "Microsoft.ContainerService.LabelSelectorRequirement", "azure.mgmt.containerservice.models.LinuxOSConfig": "Microsoft.ContainerService.LinuxOSConfig", - "azure.mgmt.containerservice.models.LoadBalancer": "Microsoft.ContainerService.LoadBalancer", - "azure.mgmt.containerservice.models.LoadBalancerProperties": "Microsoft.ContainerService.LoadBalancerProperties", "azure.mgmt.containerservice.models.LocalDNSOverride": "Microsoft.ContainerService.LocalDNSOverride", "azure.mgmt.containerservice.models.LocalDNSProfile": "Microsoft.ContainerService.LocalDNSProfile", "azure.mgmt.containerservice.models.Machine": "Microsoft.ContainerService.Machine", - "azure.mgmt.containerservice.models.MachineBillingProfile": "Microsoft.ContainerService.MachineBillingProfile", - "azure.mgmt.containerservice.models.MachineHardwareProfile": "Microsoft.ContainerService.MachineHardwareProfile", "azure.mgmt.containerservice.models.MachineIpAddress": "Microsoft.ContainerService.MachineIpAddress", - "azure.mgmt.containerservice.models.MachineKubernetesProfile": "Microsoft.ContainerService.MachineKubernetesProfile", "azure.mgmt.containerservice.models.MachineNetworkProperties": "Microsoft.ContainerService.MachineNetworkProperties", - "azure.mgmt.containerservice.models.MachineOSProfile": "Microsoft.ContainerService.MachineOSProfile", - "azure.mgmt.containerservice.models.MachineOSProfileLinuxProfile": "Microsoft.ContainerService.MachineOSProfileLinuxProfile", "azure.mgmt.containerservice.models.MachineProperties": "Microsoft.ContainerService.MachineProperties", - "azure.mgmt.containerservice.models.MachineSecurityProfile": "Microsoft.ContainerService.MachineSecurityProfile", - "azure.mgmt.containerservice.models.MachineStatus": "Microsoft.ContainerService.MachineStatus", "azure.mgmt.containerservice.models.MaintenanceConfiguration": "Microsoft.ContainerService.MaintenanceConfiguration", "azure.mgmt.containerservice.models.MaintenanceConfigurationProperties": "Microsoft.ContainerService.MaintenanceConfigurationProperties", "azure.mgmt.containerservice.models.MaintenanceWindow": "Microsoft.ContainerService.MaintenanceWindow", @@ -120,22 +90,15 @@ "azure.mgmt.containerservice.models.ManagedClusterAzureMonitorProfile": "Microsoft.ContainerService.ManagedClusterAzureMonitorProfile", "azure.mgmt.containerservice.models.ManagedClusterAzureMonitorProfileAppMonitoring": "Microsoft.ContainerService.ManagedClusterAzureMonitorProfileAppMonitoring", "azure.mgmt.containerservice.models.ManagedClusterAzureMonitorProfileAppMonitoringAutoInstrumentation": "Microsoft.ContainerService.ManagedClusterAzureMonitorProfileAppMonitoringAutoInstrumentation", - "azure.mgmt.containerservice.models.ManagedClusterAzureMonitorProfileAppMonitoringOpenTelemetryLogsAndTraces": "Microsoft.ContainerService.ManagedClusterAzureMonitorProfileAppMonitoringOpenTelemetryLogsAndTraces", - "azure.mgmt.containerservice.models.ManagedClusterAzureMonitorProfileAppMonitoringOpenTelemetryMetrics": "Microsoft.ContainerService.ManagedClusterAzureMonitorProfileAppMonitoringOpenTelemetryMetrics", - "azure.mgmt.containerservice.models.ManagedClusterAzureMonitorProfileContainerInsights": "Microsoft.ContainerService.ManagedClusterAzureMonitorProfileContainerInsights", "azure.mgmt.containerservice.models.ManagedClusterAzureMonitorProfileKubeStateMetrics": "Microsoft.ContainerService.ManagedClusterAzureMonitorProfileKubeStateMetrics", "azure.mgmt.containerservice.models.ManagedClusterAzureMonitorProfileMetrics": "Microsoft.ContainerService.ManagedClusterAzureMonitorProfileMetrics", "azure.mgmt.containerservice.models.ManagedClusterAzureMonitorProfileMetricsControlPlane": "Microsoft.ContainerService.ManagedClusterAzureMonitorProfileMetricsControlPlane", "azure.mgmt.containerservice.models.ManagedClusterBootstrapProfile": "Microsoft.ContainerService.ManagedClusterBootstrapProfile", - "azure.mgmt.containerservice.models.ManagedClusterControlPlaneScalingProfile": "Microsoft.ContainerService.ManagedClusterControlPlaneScalingProfile", "azure.mgmt.containerservice.models.ManagedClusterCostAnalysis": "Microsoft.ContainerService.ManagedClusterCostAnalysis", - "azure.mgmt.containerservice.models.ManagedClusterHealthMonitorProfile": "Microsoft.ContainerService.ManagedClusterHealthMonitorProfile", "azure.mgmt.containerservice.models.ManagedClusterHostedSystemProfile": "Microsoft.ContainerService.ManagedClusterHostedSystemProfile", "azure.mgmt.containerservice.models.ManagedClusterHTTPProxyConfig": "Microsoft.ContainerService.ManagedClusterHTTPProxyConfig", "azure.mgmt.containerservice.models.ManagedClusterIdentity": "Microsoft.ContainerService.ManagedClusterIdentity", - "azure.mgmt.containerservice.models.ManagedClusterIngressDefaultDomainProfile": "Microsoft.ContainerService.ManagedClusterIngressDefaultDomainProfile", "azure.mgmt.containerservice.models.ManagedClusterIngressProfile": "Microsoft.ContainerService.ManagedClusterIngressProfile", - "azure.mgmt.containerservice.models.ManagedClusterIngressProfileApplicationLoadBalancer": "Microsoft.ContainerService.ManagedClusterIngressProfileApplicationLoadBalancer", "azure.mgmt.containerservice.models.ManagedClusterIngressProfileGatewayConfiguration": "Microsoft.ContainerService.ManagedClusterIngressProfileGatewayConfiguration", "azure.mgmt.containerservice.models.ManagedClusterIngressProfileNginx": "Microsoft.ContainerService.ManagedClusterIngressProfileNginx", "azure.mgmt.containerservice.models.ManagedClusterIngressProfileWebAppRouting": "Microsoft.ContainerService.ManagedClusterIngressProfileWebAppRouting", @@ -146,8 +109,6 @@ "azure.mgmt.containerservice.models.ManagedClusterManagedOutboundIPProfile": "Microsoft.ContainerService.ManagedClusterManagedOutboundIPProfile", "azure.mgmt.containerservice.models.ManagedClusterMetricsProfile": "Microsoft.ContainerService.ManagedClusterMetricsProfile", "azure.mgmt.containerservice.models.ManagedClusterNATGatewayProfile": "Microsoft.ContainerService.ManagedClusterNATGatewayProfile", - "azure.mgmt.containerservice.models.ManagedClusterNATGatewayProfileOutboundIpPrefixes": "Microsoft.ContainerService.ManagedClusterNATGatewayProfile.outboundIPPrefixes.anonymous", - "azure.mgmt.containerservice.models.ManagedClusterNATGatewayProfileOutboundIPs": "Microsoft.ContainerService.ManagedClusterNATGatewayProfile.outboundIPs.anonymous", "azure.mgmt.containerservice.models.ManagedClusterNodeProvisioningProfile": "Microsoft.ContainerService.ManagedClusterNodeProvisioningProfile", "azure.mgmt.containerservice.models.ManagedClusterNodeResourceGroupProfile": "Microsoft.ContainerService.ManagedClusterNodeResourceGroupProfile", "azure.mgmt.containerservice.models.ManagedClusterOIDCIssuerProfile": "Microsoft.ContainerService.ManagedClusterOIDCIssuerProfile", @@ -161,20 +122,13 @@ "azure.mgmt.containerservice.models.ManagedClusterPoolUpgradeProfileUpgradesItem": "Microsoft.ContainerService.ManagedClusterPoolUpgradeProfileUpgradesItem", "azure.mgmt.containerservice.models.ManagedClusterProperties": "Microsoft.ContainerService.ManagedClusterProperties", "azure.mgmt.containerservice.models.ManagedClusterPropertiesAutoScalerProfile": "Microsoft.ContainerService.ManagedClusterPropertiesAutoScalerProfile", - "azure.mgmt.containerservice.models.ManagedClusterPropertiesForSnapshot": "Microsoft.ContainerService.ManagedClusterPropertiesForSnapshot", "azure.mgmt.containerservice.models.ManagedClusterSecurityProfile": "Microsoft.ContainerService.ManagedClusterSecurityProfile", "azure.mgmt.containerservice.models.ManagedClusterSecurityProfileDefender": "Microsoft.ContainerService.ManagedClusterSecurityProfileDefender", - "azure.mgmt.containerservice.models.ManagedClusterSecurityProfileDefenderSecurityGating": "Microsoft.ContainerService.ManagedClusterSecurityProfileDefenderSecurityGating", - "azure.mgmt.containerservice.models.ManagedClusterSecurityProfileDefenderSecurityGatingIdentitiesItem": "Microsoft.ContainerService.ManagedClusterSecurityProfileDefenderSecurityGatingIdentitiesItem", "azure.mgmt.containerservice.models.ManagedClusterSecurityProfileDefenderSecurityMonitoring": "Microsoft.ContainerService.ManagedClusterSecurityProfileDefenderSecurityMonitoring", "azure.mgmt.containerservice.models.ManagedClusterSecurityProfileImageCleaner": "Microsoft.ContainerService.ManagedClusterSecurityProfileImageCleaner", - "azure.mgmt.containerservice.models.ManagedClusterSecurityProfileImageIntegrity": "Microsoft.ContainerService.ManagedClusterSecurityProfileImageIntegrity", - "azure.mgmt.containerservice.models.ManagedClusterSecurityProfileNodeRestriction": "Microsoft.ContainerService.ManagedClusterSecurityProfileNodeRestriction", "azure.mgmt.containerservice.models.ManagedClusterSecurityProfileWorkloadIdentity": "Microsoft.ContainerService.ManagedClusterSecurityProfileWorkloadIdentity", "azure.mgmt.containerservice.models.ManagedClusterServicePrincipalProfile": "Microsoft.ContainerService.ManagedClusterServicePrincipalProfile", "azure.mgmt.containerservice.models.ManagedClusterSKU": "Microsoft.ContainerService.ManagedClusterSKU", - "azure.mgmt.containerservice.models.ManagedClusterSnapshot": "Microsoft.ContainerService.ManagedClusterSnapshot", - "azure.mgmt.containerservice.models.ManagedClusterSnapshotProperties": "Microsoft.ContainerService.ManagedClusterSnapshotProperties", "azure.mgmt.containerservice.models.ManagedClusterStaticEgressGatewayProfile": "Microsoft.ContainerService.ManagedClusterStaticEgressGatewayProfile", "azure.mgmt.containerservice.models.ManagedClusterStatus": "Microsoft.ContainerService.ManagedClusterStatus", "azure.mgmt.containerservice.models.ManagedClusterStorageProfile": "Microsoft.ContainerService.ManagedClusterStorageProfile", @@ -192,9 +146,6 @@ "azure.mgmt.containerservice.models.ManagedNamespace": "Microsoft.ContainerService.ManagedNamespace", "azure.mgmt.containerservice.models.ManagedServiceIdentityUserAssignedIdentitiesValue": "Microsoft.ContainerService.ManagedServiceIdentityUserAssignedIdentitiesValue", "azure.mgmt.containerservice.models.ManualScaleProfile": "Microsoft.ContainerService.ManualScaleProfile", - "azure.mgmt.containerservice.models.MeshMembership": "Microsoft.ContainerService.MeshMembership", - "azure.mgmt.containerservice.models.MeshMembershipPrivateConnectProfile": "Microsoft.ContainerService.MeshMembershipPrivateConnectProfile", - "azure.mgmt.containerservice.models.MeshMembershipProperties": "Microsoft.ContainerService.MeshMembershipProperties", "azure.mgmt.containerservice.models.MeshRevision": "Microsoft.ContainerService.MeshRevision", "azure.mgmt.containerservice.models.MeshRevisionProfile": "Microsoft.ContainerService.MeshRevisionProfile", "azure.mgmt.containerservice.models.MeshRevisionProfileProperties": "Microsoft.ContainerService.MeshRevisionProfileProperties", @@ -202,17 +153,11 @@ "azure.mgmt.containerservice.models.MeshUpgradeProfileProperties": "Microsoft.ContainerService.MeshUpgradeProfileProperties", "azure.mgmt.containerservice.models.NamespaceProperties": "Microsoft.ContainerService.NamespaceProperties", "azure.mgmt.containerservice.models.NetworkPolicies": "Microsoft.ContainerService.NetworkPolicies", - "azure.mgmt.containerservice.models.NetworkProfileForSnapshot": "Microsoft.ContainerService.NetworkProfileForSnapshot", - "azure.mgmt.containerservice.models.NodeDisruptionProfile": "Microsoft.ContainerService.NodeDisruptionProfile", - "azure.mgmt.containerservice.models.NodeImageVersion": "Microsoft.ContainerService.NodeImageVersion", - "azure.mgmt.containerservice.models.NvidiaGPUProfile": "Microsoft.ContainerService.NvidiaGPUProfile", - "azure.mgmt.containerservice.models.OperationStatusResult": "Azure.ResourceManager.CommonTypes.OperationStatusResult", "azure.mgmt.containerservice.models.OperationValue": "Microsoft.ContainerService.OperationValue", "azure.mgmt.containerservice.models.OperationValueDisplay": "Microsoft.ContainerService.OperationValueDisplay", "azure.mgmt.containerservice.models.OutboundEnvironmentEndpoint": "Microsoft.ContainerService.OutboundEnvironmentEndpoint", "azure.mgmt.containerservice.models.PortRange": "Microsoft.ContainerService.PortRange", "azure.mgmt.containerservice.models.PowerState": "Microsoft.ContainerService.PowerState", - "azure.mgmt.containerservice.models.PreparedImageSpecificationProfile": "Microsoft.ContainerService.PreparedImageSpecificationProfile", "azure.mgmt.containerservice.models.PrivateEndpoint": "Microsoft.ContainerService.PrivateEndpoint", "azure.mgmt.containerservice.models.PrivateEndpointConnection": "Microsoft.ContainerService.PrivateEndpointConnection", "azure.mgmt.containerservice.models.PrivateEndpointConnectionListResult": "Microsoft.ContainerService.PrivateEndpointConnectionListResult", @@ -220,28 +165,13 @@ "azure.mgmt.containerservice.models.PrivateLinkResource": "Microsoft.ContainerService.PrivateLinkResource", "azure.mgmt.containerservice.models.PrivateLinkResourcesListResult": "Microsoft.ContainerService.PrivateLinkResourcesListResult", "azure.mgmt.containerservice.models.PrivateLinkServiceConnectionState": "Microsoft.ContainerService.PrivateLinkServiceConnectionState", - "azure.mgmt.containerservice.models.RebalanceLoadBalancersRequestBody": "Microsoft.ContainerService.RebalanceLoadBalancersRequestBody", "azure.mgmt.containerservice.models.RelativeMonthlySchedule": "Microsoft.ContainerService.RelativeMonthlySchedule", "azure.mgmt.containerservice.models.ResourceQuota": "Microsoft.ContainerService.ResourceQuota", "azure.mgmt.containerservice.models.ResourceReference": "Microsoft.ContainerService.ResourceReference", - "azure.mgmt.containerservice.models.ResourceSku": "Microsoft.ContainerService.ResourceSku", - "azure.mgmt.containerservice.models.ResourceSkuCapabilities": "Microsoft.ContainerService.ResourceSkuCapabilities", - "azure.mgmt.containerservice.models.ResourceSkuCapacity": "Microsoft.ContainerService.ResourceSkuCapacity", - "azure.mgmt.containerservice.models.ResourceSkuCosts": "Microsoft.ContainerService.ResourceSkuCosts", - "azure.mgmt.containerservice.models.ResourceSkuLocationInfo": "Microsoft.ContainerService.ResourceSkuLocationInfo", - "azure.mgmt.containerservice.models.ResourceSkuRestrictionInfo": "Microsoft.ContainerService.ResourceSkuRestrictionInfo", - "azure.mgmt.containerservice.models.ResourceSkuRestrictions": "Microsoft.ContainerService.ResourceSkuRestrictions", - "azure.mgmt.containerservice.models.ResourceSkuZoneDetails": "Microsoft.ContainerService.ResourceSkuZoneDetails", "azure.mgmt.containerservice.models.RunCommandRequest": "Microsoft.ContainerService.RunCommandRequest", "azure.mgmt.containerservice.models.RunCommandResult": "Microsoft.ContainerService.RunCommandResult", - "azure.mgmt.containerservice.models.SafeguardsAvailableVersion": "Microsoft.ContainerService.SafeguardsAvailableVersion", - "azure.mgmt.containerservice.models.SafeguardsAvailableVersionsProperties": "Microsoft.ContainerService.SafeguardsAvailableVersionsProperties", "azure.mgmt.containerservice.models.ScaleProfile": "Microsoft.ContainerService.ScaleProfile", "azure.mgmt.containerservice.models.Schedule": "Microsoft.ContainerService.Schedule", - "azure.mgmt.containerservice.models.SchedulerInstanceProfile": "Microsoft.ContainerService.SchedulerInstanceProfile", - "azure.mgmt.containerservice.models.SchedulerProfile": "Microsoft.ContainerService.SchedulerProfile", - "azure.mgmt.containerservice.models.SchedulerProfileSchedulerInstanceProfiles": "Microsoft.ContainerService.SchedulerProfileSchedulerInstanceProfiles", - "azure.mgmt.containerservice.models.ServiceAccountImagePullProfile": "Microsoft.ContainerService.ServiceAccountImagePullProfile", "azure.mgmt.containerservice.models.ServiceMeshProfile": "Microsoft.ContainerService.ServiceMeshProfile", "azure.mgmt.containerservice.models.Snapshot": "Microsoft.ContainerService.Snapshot", "azure.mgmt.containerservice.models.SnapshotProperties": "Microsoft.ContainerService.SnapshotProperties", @@ -269,20 +199,14 @@ "azure.mgmt.containerservice.models.ScaleDownMode": "Microsoft.ContainerService.ScaleDownMode", "azure.mgmt.containerservice.models.AgentPoolType": "Microsoft.ContainerService.AgentPoolType", "azure.mgmt.containerservice.models.AgentPoolMode": "Microsoft.ContainerService.AgentPoolMode", - "azure.mgmt.containerservice.models.UpgradeStrategy": "Microsoft.ContainerService.UpgradeStrategy", "azure.mgmt.containerservice.models.UndrainableNodeBehavior": "Microsoft.ContainerService.UndrainableNodeBehavior", "azure.mgmt.containerservice.models.Code": "Microsoft.ContainerService.Code", "azure.mgmt.containerservice.models.ScaleSetPriority": "Microsoft.ContainerService.ScaleSetPriority", "azure.mgmt.containerservice.models.ScaleSetEvictionPolicy": "Microsoft.ContainerService.ScaleSetEvictionPolicy", - "azure.mgmt.containerservice.models.SeccompDefault": "Microsoft.ContainerService.SeccompDefault", "azure.mgmt.containerservice.models.GPUInstanceProfile": "Microsoft.ContainerService.GPUInstanceProfile", "azure.mgmt.containerservice.models.Protocol": "Microsoft.ContainerService.Protocol", - "azure.mgmt.containerservice.models.AgentPoolNetworkInterfaceType": "Microsoft.ContainerService.AgentPoolNetworkInterfaceType", "azure.mgmt.containerservice.models.AgentPoolSSHAccess": "Microsoft.ContainerService.AgentPoolSSHAccess", "azure.mgmt.containerservice.models.GPUDriver": "Microsoft.ContainerService.GPUDriver", - "azure.mgmt.containerservice.models.DriverType": "Microsoft.ContainerService.DriverType", - "azure.mgmt.containerservice.models.ManagementMode": "Microsoft.ContainerService.ManagementMode", - "azure.mgmt.containerservice.models.MigStrategy": "Microsoft.ContainerService.MigStrategy", "azure.mgmt.containerservice.models.LocalDNSMode": "Microsoft.ContainerService.LocalDNSMode", "azure.mgmt.containerservice.models.LocalDNSState": "Microsoft.ContainerService.LocalDNSState", "azure.mgmt.containerservice.models.LocalDNSQueryLogging": "Microsoft.ContainerService.LocalDNSQueryLogging", @@ -305,57 +229,37 @@ "azure.mgmt.containerservice.models.OutboundType": "Microsoft.ContainerService.OutboundType", "azure.mgmt.containerservice.models.LoadBalancerSku": "Microsoft.ContainerService.LoadBalancerSku", "azure.mgmt.containerservice.models.BackendPoolType": "Microsoft.ContainerService.BackendPoolType", - "azure.mgmt.containerservice.models.ClusterServiceLoadBalancerHealthProbeMode": "Microsoft.ContainerService.ClusterServiceLoadBalancerHealthProbeMode", "azure.mgmt.containerservice.models.IPFamily": "Microsoft.ContainerService.IPFamily", - "azure.mgmt.containerservice.models.PodLinkLocalAccess": "Microsoft.ContainerService.PodLinkLocalAccess", - "azure.mgmt.containerservice.models.Mode": "Microsoft.ContainerService.Mode", - "azure.mgmt.containerservice.models.IpvsScheduler": "Microsoft.ContainerService.IpvsScheduler", "azure.mgmt.containerservice.models.UpgradeChannel": "Microsoft.ContainerService.UpgradeChannel", "azure.mgmt.containerservice.models.NodeOSUpgradeChannel": "Microsoft.ContainerService.NodeOSUpgradeChannel", "azure.mgmt.containerservice.models.Expander": "Microsoft.ContainerService.Expander", "azure.mgmt.containerservice.models.KeyVaultNetworkAccessTypes": "Microsoft.ContainerService.KeyVaultNetworkAccessTypes", - "azure.mgmt.containerservice.models.InfrastructureEncryption": "Microsoft.ContainerService.InfrastructureEncryption", "azure.mgmt.containerservice.models.GatewayAPIIstioEnabled": "Microsoft.ContainerService.GatewayAPIIstioEnabled", "azure.mgmt.containerservice.models.NginxIngressControllerType": "Microsoft.ContainerService.NginxIngressControllerType", "azure.mgmt.containerservice.models.ManagedGatewayType": "Microsoft.ContainerService.ManagedGatewayType", "azure.mgmt.containerservice.models.PublicNetworkAccess": "Microsoft.ContainerService.PublicNetworkAccess", - "azure.mgmt.containerservice.models.AddonAutoscaling": "Microsoft.ContainerService.AddonAutoscaling", - "azure.mgmt.containerservice.models.ContainerNetworkLogs": "Microsoft.ContainerService.ContainerNetworkLogs", "azure.mgmt.containerservice.models.ServiceMeshMode": "Microsoft.ContainerService.ServiceMeshMode", "azure.mgmt.containerservice.models.IstioIngressGatewayMode": "Microsoft.ContainerService.IstioIngressGatewayMode", "azure.mgmt.containerservice.models.ProxyRedirectionMechanism": "Microsoft.ContainerService.ProxyRedirectionMechanism", "azure.mgmt.containerservice.models.NodeProvisioningMode": "Microsoft.ContainerService.NodeProvisioningMode", "azure.mgmt.containerservice.models.NodeProvisioningDefaultNodePools": "Microsoft.ContainerService.NodeProvisioningDefaultNodePools", "azure.mgmt.containerservice.models.ArtifactSource": "Microsoft.ContainerService.ArtifactSource", - "azure.mgmt.containerservice.models.SchedulerConfigMode": "Microsoft.ContainerService.SchedulerConfigMode", - "azure.mgmt.containerservice.models.ControlPlaneScalingSize": "Microsoft.ContainerService.ControlPlaneScalingSize", - "azure.mgmt.containerservice.models.NodeDisruptionPolicy": "Microsoft.ContainerService.NodeDisruptionPolicy", "azure.mgmt.containerservice.models.ManagedClusterSKUName": "Microsoft.ContainerService.ManagedClusterSKUName", "azure.mgmt.containerservice.models.ManagedClusterSKUTier": "Microsoft.ContainerService.ManagedClusterSKUTier", "azure.mgmt.containerservice.models.ExtendedLocationTypes": "Microsoft.ContainerService.ExtendedLocationTypes", "azure.mgmt.containerservice.models.ResourceIdentityType": "Microsoft.ContainerService.ResourceIdentityType", "azure.mgmt.containerservice.models.Format": "Microsoft.ContainerService.Format", - "azure.mgmt.containerservice.models.GuardrailsSupport": "Microsoft.ContainerService.GuardrailsSupport", - "azure.mgmt.containerservice.models.SafeguardsSupport": "Microsoft.ContainerService.SafeguardsSupport", "azure.mgmt.containerservice.models.WeekDay": "Microsoft.ContainerService.WeekDay", "azure.mgmt.containerservice.models.Type": "Microsoft.ContainerService.Type", "azure.mgmt.containerservice.models.NamespaceProvisioningState": "Microsoft.ContainerService.NamespaceProvisioningState", "azure.mgmt.containerservice.models.PolicyRule": "Microsoft.ContainerService.PolicyRule", "azure.mgmt.containerservice.models.AdoptionPolicy": "Microsoft.ContainerService.AdoptionPolicy", "azure.mgmt.containerservice.models.DeletePolicy": "Microsoft.ContainerService.DeletePolicy", - "azure.mgmt.containerservice.models.DriftAction": "Microsoft.ContainerService.DriftAction", - "azure.mgmt.containerservice.models.VmState": "Microsoft.ContainerService.VmState", "azure.mgmt.containerservice.models.PrivateEndpointConnectionProvisioningState": "Microsoft.ContainerService.PrivateEndpointConnectionProvisioningState", "azure.mgmt.containerservice.models.ConnectionStatus": "Microsoft.ContainerService.ConnectionStatus", "azure.mgmt.containerservice.models.SnapshotType": "Microsoft.ContainerService.SnapshotType", "azure.mgmt.containerservice.models.TrustedAccessRoleBindingProvisioningState": "Microsoft.ContainerService.TrustedAccessRoleBindingProvisioningState", - "azure.mgmt.containerservice.models.Operator": "Microsoft.ContainerService.Operator", "azure.mgmt.containerservice.models.IdentityBindingProvisioningState": "Microsoft.ContainerService.IdentityBindingProvisioningState", - "azure.mgmt.containerservice.models.JWTAuthenticatorProvisioningState": "Microsoft.ContainerService.JWTAuthenticatorProvisioningState", - "azure.mgmt.containerservice.models.MeshMembershipProvisioningState": "Microsoft.ContainerService.MeshMembershipProvisioningState", - "azure.mgmt.containerservice.models.ResourceSkuCapacityScaleType": "Microsoft.ContainerService.ResourceSkuCapacityScaleType", - "azure.mgmt.containerservice.models.ResourceSkuRestrictionsType": "Microsoft.ContainerService.ResourceSkuRestrictionsType", - "azure.mgmt.containerservice.models.ResourceSkuRestrictionsReasonCode": "Microsoft.ContainerService.ResourceSkuRestrictionsReasonCode", "azure.mgmt.containerservice.operations.AgentPoolsOperations.get": "Microsoft.ContainerService.AgentPools.get", "azure.mgmt.containerservice.aio.operations.AgentPoolsOperations.get": "Microsoft.ContainerService.AgentPools.get", "azure.mgmt.containerservice.operations.AgentPoolsOperations.begin_create_or_update": "Microsoft.ContainerService.AgentPools.createOrUpdate", @@ -366,8 +270,6 @@ "azure.mgmt.containerservice.aio.operations.AgentPoolsOperations.list": "Microsoft.ContainerService.AgentPools.list", "azure.mgmt.containerservice.operations.AgentPoolsOperations.begin_abort_latest_operation": "Microsoft.ContainerService.AgentPools.abortLatestOperation", "azure.mgmt.containerservice.aio.operations.AgentPoolsOperations.begin_abort_latest_operation": "Microsoft.ContainerService.AgentPools.abortLatestOperation", - "azure.mgmt.containerservice.operations.AgentPoolsOperations.begin_complete_upgrade": "Microsoft.ContainerService.AgentPools.completeUpgrade", - "azure.mgmt.containerservice.aio.operations.AgentPoolsOperations.begin_complete_upgrade": "Microsoft.ContainerService.AgentPools.completeUpgrade", "azure.mgmt.containerservice.operations.AgentPoolsOperations.begin_delete_machines": "Microsoft.ContainerService.AgentPools.deleteMachines", "azure.mgmt.containerservice.aio.operations.AgentPoolsOperations.begin_delete_machines": "Microsoft.ContainerService.AgentPools.deleteMachines", "azure.mgmt.containerservice.operations.AgentPoolsOperations.begin_upgrade_node_image_version": "Microsoft.ContainerService.AgentPools.upgradeNodeImageVersion", @@ -416,18 +318,8 @@ "azure.mgmt.containerservice.aio.operations.ManagedClustersOperations.get_command_result": "Microsoft.ContainerService.ManagedClusters.getCommandResult", "azure.mgmt.containerservice.operations.ManagedClustersOperations.list_outbound_network_dependencies_endpoints": "Microsoft.ContainerService.ManagedClusters.listOutboundNetworkDependenciesEndpoints", "azure.mgmt.containerservice.aio.operations.ManagedClustersOperations.list_outbound_network_dependencies_endpoints": "Microsoft.ContainerService.ManagedClusters.listOutboundNetworkDependenciesEndpoints", - "azure.mgmt.containerservice.operations.ManagedClustersOperations.begin_rebalance_load_balancers": "Microsoft.ContainerService.ManagedClusters.rebalanceLoadBalancers", - "azure.mgmt.containerservice.aio.operations.ManagedClustersOperations.begin_rebalance_load_balancers": "Microsoft.ContainerService.ManagedClusters.rebalanceLoadBalancers", "azure.mgmt.containerservice.operations.ManagedClustersOperations.get_upgrade_profile": "Microsoft.ContainerService.ManagedClusterUpgradeProfiles.getUpgradeProfile", "azure.mgmt.containerservice.aio.operations.ManagedClustersOperations.get_upgrade_profile": "Microsoft.ContainerService.ManagedClusterUpgradeProfiles.getUpgradeProfile", - "azure.mgmt.containerservice.operations.ManagedClustersOperations.get_guardrails_versions": "Microsoft.ContainerService.GuardrailsAvailableVersions.getGuardrailsVersions", - "azure.mgmt.containerservice.aio.operations.ManagedClustersOperations.get_guardrails_versions": "Microsoft.ContainerService.GuardrailsAvailableVersions.getGuardrailsVersions", - "azure.mgmt.containerservice.operations.ManagedClustersOperations.list_guardrails_versions": "Microsoft.ContainerService.GuardrailsAvailableVersions.listGuardrailsVersions", - "azure.mgmt.containerservice.aio.operations.ManagedClustersOperations.list_guardrails_versions": "Microsoft.ContainerService.GuardrailsAvailableVersions.listGuardrailsVersions", - "azure.mgmt.containerservice.operations.ManagedClustersOperations.get_safeguards_versions": "Microsoft.ContainerService.SafeguardsAvailableVersions.getSafeguardsVersions", - "azure.mgmt.containerservice.aio.operations.ManagedClustersOperations.get_safeguards_versions": "Microsoft.ContainerService.SafeguardsAvailableVersions.getSafeguardsVersions", - "azure.mgmt.containerservice.operations.ManagedClustersOperations.list_safeguards_versions": "Microsoft.ContainerService.SafeguardsAvailableVersions.listSafeguardsVersions", - "azure.mgmt.containerservice.aio.operations.ManagedClustersOperations.list_safeguards_versions": "Microsoft.ContainerService.SafeguardsAvailableVersions.listSafeguardsVersions", "azure.mgmt.containerservice.operations.ManagedClustersOperations.get_mesh_revision_profile": "Microsoft.ContainerService.MeshRevisionProfiles.getMeshRevisionProfile", "azure.mgmt.containerservice.aio.operations.ManagedClustersOperations.get_mesh_revision_profile": "Microsoft.ContainerService.MeshRevisionProfiles.getMeshRevisionProfile", "azure.mgmt.containerservice.operations.ManagedClustersOperations.list_mesh_revision_profiles": "Microsoft.ContainerService.MeshRevisionProfiles.listMeshRevisionProfiles", @@ -460,8 +352,6 @@ "azure.mgmt.containerservice.aio.operations.ManagedNamespacesOperations.list_credential": "Microsoft.ContainerService.ManagedNamespaces.listCredential", "azure.mgmt.containerservice.operations.MachinesOperations.get": "Microsoft.ContainerService.Machines.get", "azure.mgmt.containerservice.aio.operations.MachinesOperations.get": "Microsoft.ContainerService.Machines.get", - "azure.mgmt.containerservice.operations.MachinesOperations.begin_create_or_update": "Microsoft.ContainerService.Machines.createOrUpdate", - "azure.mgmt.containerservice.aio.operations.MachinesOperations.begin_create_or_update": "Microsoft.ContainerService.Machines.createOrUpdate", "azure.mgmt.containerservice.operations.MachinesOperations.list": "Microsoft.ContainerService.Machines.list", "azure.mgmt.containerservice.aio.operations.MachinesOperations.list": "Microsoft.ContainerService.Machines.list", "azure.mgmt.containerservice.operations.PrivateEndpointConnectionsOperations.get": "Microsoft.ContainerService.PrivateEndpointConnections.get", @@ -484,18 +374,6 @@ "azure.mgmt.containerservice.aio.operations.SnapshotsOperations.list_by_resource_group": "Microsoft.ContainerService.Snapshots.listByResourceGroup", "azure.mgmt.containerservice.operations.SnapshotsOperations.list": "Microsoft.ContainerService.Snapshots.list", "azure.mgmt.containerservice.aio.operations.SnapshotsOperations.list": "Microsoft.ContainerService.Snapshots.list", - "azure.mgmt.containerservice.operations.ManagedClusterSnapshotsOperations.get": "Microsoft.ContainerService.ManagedClusterSnapshots.get", - "azure.mgmt.containerservice.aio.operations.ManagedClusterSnapshotsOperations.get": "Microsoft.ContainerService.ManagedClusterSnapshots.get", - "azure.mgmt.containerservice.operations.ManagedClusterSnapshotsOperations.create_or_update": "Microsoft.ContainerService.ManagedClusterSnapshots.createOrUpdate", - "azure.mgmt.containerservice.aio.operations.ManagedClusterSnapshotsOperations.create_or_update": "Microsoft.ContainerService.ManagedClusterSnapshots.createOrUpdate", - "azure.mgmt.containerservice.operations.ManagedClusterSnapshotsOperations.update_tags": "Microsoft.ContainerService.ManagedClusterSnapshots.updateTags", - "azure.mgmt.containerservice.aio.operations.ManagedClusterSnapshotsOperations.update_tags": "Microsoft.ContainerService.ManagedClusterSnapshots.updateTags", - "azure.mgmt.containerservice.operations.ManagedClusterSnapshotsOperations.delete": "Microsoft.ContainerService.ManagedClusterSnapshots.delete", - "azure.mgmt.containerservice.aio.operations.ManagedClusterSnapshotsOperations.delete": "Microsoft.ContainerService.ManagedClusterSnapshots.delete", - "azure.mgmt.containerservice.operations.ManagedClusterSnapshotsOperations.list_by_resource_group": "Microsoft.ContainerService.ManagedClusterSnapshots.listByResourceGroup", - "azure.mgmt.containerservice.aio.operations.ManagedClusterSnapshotsOperations.list_by_resource_group": "Microsoft.ContainerService.ManagedClusterSnapshots.listByResourceGroup", - "azure.mgmt.containerservice.operations.ManagedClusterSnapshotsOperations.list": "Microsoft.ContainerService.ManagedClusterSnapshots.list", - "azure.mgmt.containerservice.aio.operations.ManagedClusterSnapshotsOperations.list": "Microsoft.ContainerService.ManagedClusterSnapshots.list", "azure.mgmt.containerservice.operations.TrustedAccessRoleBindingsOperations.get": "Microsoft.ContainerService.TrustedAccessRoleBindings.get", "azure.mgmt.containerservice.aio.operations.TrustedAccessRoleBindingsOperations.get": "Microsoft.ContainerService.TrustedAccessRoleBindings.get", "azure.mgmt.containerservice.operations.TrustedAccessRoleBindingsOperations.begin_create_or_update": "Microsoft.ContainerService.TrustedAccessRoleBindings.createOrUpdate", @@ -504,14 +382,6 @@ "azure.mgmt.containerservice.aio.operations.TrustedAccessRoleBindingsOperations.begin_delete": "Microsoft.ContainerService.TrustedAccessRoleBindings.delete", "azure.mgmt.containerservice.operations.TrustedAccessRoleBindingsOperations.list": "Microsoft.ContainerService.TrustedAccessRoleBindings.list", "azure.mgmt.containerservice.aio.operations.TrustedAccessRoleBindingsOperations.list": "Microsoft.ContainerService.TrustedAccessRoleBindings.list", - "azure.mgmt.containerservice.operations.LoadBalancersOperations.get": "Microsoft.ContainerService.LoadBalancers.get", - "azure.mgmt.containerservice.aio.operations.LoadBalancersOperations.get": "Microsoft.ContainerService.LoadBalancers.get", - "azure.mgmt.containerservice.operations.LoadBalancersOperations.create_or_update": "Microsoft.ContainerService.LoadBalancers.createOrUpdate", - "azure.mgmt.containerservice.aio.operations.LoadBalancersOperations.create_or_update": "Microsoft.ContainerService.LoadBalancers.createOrUpdate", - "azure.mgmt.containerservice.operations.LoadBalancersOperations.begin_delete": "Microsoft.ContainerService.LoadBalancers.delete", - "azure.mgmt.containerservice.aio.operations.LoadBalancersOperations.begin_delete": "Microsoft.ContainerService.LoadBalancers.delete", - "azure.mgmt.containerservice.operations.LoadBalancersOperations.list_by_managed_cluster": "Microsoft.ContainerService.LoadBalancers.listByManagedCluster", - "azure.mgmt.containerservice.aio.operations.LoadBalancersOperations.list_by_managed_cluster": "Microsoft.ContainerService.LoadBalancers.listByManagedCluster", "azure.mgmt.containerservice.operations.IdentityBindingsOperations.get": "Microsoft.ContainerService.IdentityBindings.get", "azure.mgmt.containerservice.aio.operations.IdentityBindingsOperations.get": "Microsoft.ContainerService.IdentityBindings.get", "azure.mgmt.containerservice.operations.IdentityBindingsOperations.begin_create_or_update": "Microsoft.ContainerService.IdentityBindings.createOrUpdate", @@ -520,40 +390,14 @@ "azure.mgmt.containerservice.aio.operations.IdentityBindingsOperations.begin_delete": "Microsoft.ContainerService.IdentityBindings.delete", "azure.mgmt.containerservice.operations.IdentityBindingsOperations.list_by_managed_cluster": "Microsoft.ContainerService.IdentityBindings.listByManagedCluster", "azure.mgmt.containerservice.aio.operations.IdentityBindingsOperations.list_by_managed_cluster": "Microsoft.ContainerService.IdentityBindings.listByManagedCluster", - "azure.mgmt.containerservice.operations.JWTAuthenticatorsOperations.get": "Microsoft.ContainerService.JWTAuthenticators.get", - "azure.mgmt.containerservice.aio.operations.JWTAuthenticatorsOperations.get": "Microsoft.ContainerService.JWTAuthenticators.get", - "azure.mgmt.containerservice.operations.JWTAuthenticatorsOperations.begin_create_or_update": "Microsoft.ContainerService.JWTAuthenticators.createOrUpdate", - "azure.mgmt.containerservice.aio.operations.JWTAuthenticatorsOperations.begin_create_or_update": "Microsoft.ContainerService.JWTAuthenticators.createOrUpdate", - "azure.mgmt.containerservice.operations.JWTAuthenticatorsOperations.begin_delete": "Microsoft.ContainerService.JWTAuthenticators.delete", - "azure.mgmt.containerservice.aio.operations.JWTAuthenticatorsOperations.begin_delete": "Microsoft.ContainerService.JWTAuthenticators.delete", - "azure.mgmt.containerservice.operations.JWTAuthenticatorsOperations.list_by_managed_cluster": "Microsoft.ContainerService.JWTAuthenticators.listByManagedCluster", - "azure.mgmt.containerservice.aio.operations.JWTAuthenticatorsOperations.list_by_managed_cluster": "Microsoft.ContainerService.JWTAuthenticators.listByManagedCluster", - "azure.mgmt.containerservice.operations.MeshMembershipsOperations.get": "Microsoft.ContainerService.MeshMemberships.get", - "azure.mgmt.containerservice.aio.operations.MeshMembershipsOperations.get": "Microsoft.ContainerService.MeshMemberships.get", - "azure.mgmt.containerservice.operations.MeshMembershipsOperations.begin_create_or_update": "Microsoft.ContainerService.MeshMemberships.createOrUpdate", - "azure.mgmt.containerservice.aio.operations.MeshMembershipsOperations.begin_create_or_update": "Microsoft.ContainerService.MeshMemberships.createOrUpdate", - "azure.mgmt.containerservice.operations.MeshMembershipsOperations.begin_delete": "Microsoft.ContainerService.MeshMemberships.delete", - "azure.mgmt.containerservice.aio.operations.MeshMembershipsOperations.begin_delete": "Microsoft.ContainerService.MeshMemberships.delete", - "azure.mgmt.containerservice.operations.MeshMembershipsOperations.list_by_managed_cluster": "Microsoft.ContainerService.MeshMemberships.listByManagedCluster", - "azure.mgmt.containerservice.aio.operations.MeshMembershipsOperations.list_by_managed_cluster": "Microsoft.ContainerService.MeshMemberships.listByManagedCluster", "azure.mgmt.containerservice.operations.Operations.list": "Microsoft.ContainerService.Operations.list", "azure.mgmt.containerservice.aio.operations.Operations.list": "Microsoft.ContainerService.Operations.list", - "azure.mgmt.containerservice.operations.OperationStatusResultOperations.get_by_agent_pool": "Microsoft.ContainerService.AgentPools.getByAgentPool", - "azure.mgmt.containerservice.aio.operations.OperationStatusResultOperations.get_by_agent_pool": "Microsoft.ContainerService.AgentPools.getByAgentPool", - "azure.mgmt.containerservice.operations.OperationStatusResultOperations.list": "Microsoft.ContainerService.ManagedClusters.operationStatusResultList", - "azure.mgmt.containerservice.aio.operations.OperationStatusResultOperations.list": "Microsoft.ContainerService.ManagedClusters.operationStatusResultList", - "azure.mgmt.containerservice.operations.OperationStatusResultOperations.get": "Microsoft.ContainerService.ManagedClusters.operationStatusResultGet", - "azure.mgmt.containerservice.aio.operations.OperationStatusResultOperations.get": "Microsoft.ContainerService.ManagedClusters.operationStatusResultGet", "azure.mgmt.containerservice.operations.PrivateLinkResourcesOperations.list": "Microsoft.ContainerService.ManagedClusters.privateLinkResourcesList", "azure.mgmt.containerservice.aio.operations.PrivateLinkResourcesOperations.list": "Microsoft.ContainerService.ManagedClusters.privateLinkResourcesList", "azure.mgmt.containerservice.operations.ResolvePrivateLinkServiceIdOperations.post": "Microsoft.ContainerService.ManagedClusters.post", "azure.mgmt.containerservice.aio.operations.ResolvePrivateLinkServiceIdOperations.post": "Microsoft.ContainerService.ManagedClusters.post", "azure.mgmt.containerservice.operations.TrustedAccessRolesOperations.list": "Microsoft.ContainerService.TrustedAccessRolesOperationGroup.list", - "azure.mgmt.containerservice.aio.operations.TrustedAccessRolesOperations.list": "Microsoft.ContainerService.TrustedAccessRolesOperationGroup.list", - "azure.mgmt.containerservice.operations.ContainerServiceOperations.list_node_image_versions": "Microsoft.ContainerService.ContainerServiceOperationGroup.listNodeImageVersions", - "azure.mgmt.containerservice.aio.operations.ContainerServiceOperations.list_node_image_versions": "Microsoft.ContainerService.ContainerServiceOperationGroup.listNodeImageVersions", - "azure.mgmt.containerservice.operations.VmSkusOperations.list": "Microsoft.ContainerService.VmSkusOperationGroup.list", - "azure.mgmt.containerservice.aio.operations.VmSkusOperations.list": "Microsoft.ContainerService.VmSkusOperationGroup.list" + "azure.mgmt.containerservice.aio.operations.TrustedAccessRolesOperations.list": "Microsoft.ContainerService.TrustedAccessRolesOperationGroup.list" }, - "CrossLanguageVersion": "8cca085256ac" + "CrossLanguageVersion": "f3b3811b47fc" } \ No newline at end of file diff --git a/sdk/containerservice/azure-mgmt-containerservice/azure/mgmt/containerservice/_client.py b/sdk/containerservice/azure-mgmt-containerservice/azure/mgmt/containerservice/_client.py index bc89e377f64e..dc697d84b836 100644 --- a/sdk/containerservice/azure-mgmt-containerservice/azure/mgmt/containerservice/_client.py +++ b/sdk/containerservice/azure-mgmt-containerservice/azure/mgmt/containerservice/_client.py @@ -21,17 +21,11 @@ from ._utils.serialization import Deserializer, Serializer from .operations import ( AgentPoolsOperations, - ContainerServiceOperations, IdentityBindingsOperations, - JWTAuthenticatorsOperations, - LoadBalancersOperations, MachinesOperations, MaintenanceConfigurationsOperations, - ManagedClusterSnapshotsOperations, ManagedClustersOperations, ManagedNamespacesOperations, - MeshMembershipsOperations, - OperationStatusResultOperations, Operations, PrivateEndpointConnectionsOperations, PrivateLinkResourcesOperations, @@ -39,7 +33,6 @@ SnapshotsOperations, TrustedAccessRoleBindingsOperations, TrustedAccessRolesOperations, - VmSkusOperations, ) if sys.version_info >= (3, 11): @@ -71,25 +64,13 @@ class ContainerServiceClient: # pylint: disable=too-many-instance-attributes azure.mgmt.containerservice.operations.PrivateEndpointConnectionsOperations :ivar snapshots: SnapshotsOperations operations :vartype snapshots: azure.mgmt.containerservice.operations.SnapshotsOperations - :ivar managed_cluster_snapshots: ManagedClusterSnapshotsOperations operations - :vartype managed_cluster_snapshots: - azure.mgmt.containerservice.operations.ManagedClusterSnapshotsOperations :ivar trusted_access_role_bindings: TrustedAccessRoleBindingsOperations operations :vartype trusted_access_role_bindings: azure.mgmt.containerservice.operations.TrustedAccessRoleBindingsOperations - :ivar load_balancers: LoadBalancersOperations operations - :vartype load_balancers: azure.mgmt.containerservice.operations.LoadBalancersOperations :ivar identity_bindings: IdentityBindingsOperations operations :vartype identity_bindings: azure.mgmt.containerservice.operations.IdentityBindingsOperations - :ivar jwt_authenticators: JWTAuthenticatorsOperations operations - :vartype jwt_authenticators: azure.mgmt.containerservice.operations.JWTAuthenticatorsOperations - :ivar mesh_memberships: MeshMembershipsOperations operations - :vartype mesh_memberships: azure.mgmt.containerservice.operations.MeshMembershipsOperations :ivar operations: Operations operations :vartype operations: azure.mgmt.containerservice.operations.Operations - :ivar operation_status_result: OperationStatusResultOperations operations - :vartype operation_status_result: - azure.mgmt.containerservice.operations.OperationStatusResultOperations :ivar private_link_resources: PrivateLinkResourcesOperations operations :vartype private_link_resources: azure.mgmt.containerservice.operations.PrivateLinkResourcesOperations @@ -99,10 +80,6 @@ class ContainerServiceClient: # pylint: disable=too-many-instance-attributes :ivar trusted_access_roles: TrustedAccessRolesOperations operations :vartype trusted_access_roles: azure.mgmt.containerservice.operations.TrustedAccessRolesOperations - :ivar container_service: ContainerServiceOperations operations - :vartype container_service: azure.mgmt.containerservice.operations.ContainerServiceOperations - :ivar vm_skus: VmSkusOperations operations - :vartype vm_skus: azure.mgmt.containerservice.operations.VmSkusOperations :param credential: Credential used to authenticate requests to the service. Required. :type credential: ~azure.core.credentials.TokenCredential :param subscription_id: The ID of the target subscription. The value must be an UUID. Required. @@ -112,10 +89,9 @@ class ContainerServiceClient: # pylint: disable=too-many-instance-attributes :keyword cloud_setting: The cloud setting for which to get the ARM endpoint. Default value is None. :paramtype cloud_setting: ~azure.core.AzureClouds - :keyword api_version: The API version to use for this operation. Known values are - "2026-03-02-preview" and None. Default value is None. If not set, the operation's default API - version will be used. Note that overriding this default value may result in unsupported - behavior. + :keyword api_version: The API version to use for this operation. Known values are "2026-04-01" + and None. Default value is None. If not set, the operation's default API version will be used. + Note that overriding this default value may result in unsupported behavior. :paramtype api_version: str :keyword int polling_interval: Default waiting time between two polls for LRO operations if no Retry-After header is present. @@ -183,26 +159,13 @@ def __init__( self._client, self._config, self._serialize, self._deserialize ) self.snapshots = SnapshotsOperations(self._client, self._config, self._serialize, self._deserialize) - self.managed_cluster_snapshots = ManagedClusterSnapshotsOperations( - self._client, self._config, self._serialize, self._deserialize - ) self.trusted_access_role_bindings = TrustedAccessRoleBindingsOperations( self._client, self._config, self._serialize, self._deserialize ) - self.load_balancers = LoadBalancersOperations(self._client, self._config, self._serialize, self._deserialize) self.identity_bindings = IdentityBindingsOperations( self._client, self._config, self._serialize, self._deserialize ) - self.jwt_authenticators = JWTAuthenticatorsOperations( - self._client, self._config, self._serialize, self._deserialize - ) - self.mesh_memberships = MeshMembershipsOperations( - self._client, self._config, self._serialize, self._deserialize - ) self.operations = Operations(self._client, self._config, self._serialize, self._deserialize) - self.operation_status_result = OperationStatusResultOperations( - self._client, self._config, self._serialize, self._deserialize - ) self.private_link_resources = PrivateLinkResourcesOperations( self._client, self._config, self._serialize, self._deserialize ) @@ -212,10 +175,6 @@ def __init__( self.trusted_access_roles = TrustedAccessRolesOperations( self._client, self._config, self._serialize, self._deserialize ) - self.container_service = ContainerServiceOperations( - self._client, self._config, self._serialize, self._deserialize - ) - self.vm_skus = VmSkusOperations(self._client, self._config, self._serialize, self._deserialize) def send_request(self, request: HttpRequest, *, stream: bool = False, **kwargs: Any) -> HttpResponse: """Runs the network request through the client's chained policies. diff --git a/sdk/containerservice/azure-mgmt-containerservice/azure/mgmt/containerservice/_configuration.py b/sdk/containerservice/azure-mgmt-containerservice/azure/mgmt/containerservice/_configuration.py index 699fea4440f4..6849a3eae386 100644 --- a/sdk/containerservice/azure-mgmt-containerservice/azure/mgmt/containerservice/_configuration.py +++ b/sdk/containerservice/azure-mgmt-containerservice/azure/mgmt/containerservice/_configuration.py @@ -33,10 +33,9 @@ class ContainerServiceClientConfiguration: # pylint: disable=too-many-instance- :param cloud_setting: The cloud setting for which to get the ARM endpoint. Default value is None. :type cloud_setting: ~azure.core.AzureClouds - :keyword api_version: The API version to use for this operation. Known values are - "2026-03-02-preview" and None. Default value is None. If not set, the operation's default API - version will be used. Note that overriding this default value may result in unsupported - behavior. + :keyword api_version: The API version to use for this operation. Known values are "2026-04-01" + and None. Default value is None. If not set, the operation's default API version will be used. + Note that overriding this default value may result in unsupported behavior. :paramtype api_version: str """ @@ -48,7 +47,7 @@ def __init__( cloud_setting: Optional["AzureClouds"] = None, **kwargs: Any ) -> None: - api_version: str = kwargs.pop("api_version", "2026-03-02-preview") + api_version: str = kwargs.pop("api_version", "2026-04-01") if credential is None: raise ValueError("Parameter 'credential' must not be None.") diff --git a/sdk/containerservice/azure-mgmt-containerservice/azure/mgmt/containerservice/_utils/model_base.py b/sdk/containerservice/azure-mgmt-containerservice/azure/mgmt/containerservice/_utils/model_base.py index 54f247904997..bd5b9caf1022 100644 --- a/sdk/containerservice/azure-mgmt-containerservice/azure/mgmt/containerservice/_utils/model_base.py +++ b/sdk/containerservice/azure-mgmt-containerservice/azure/mgmt/containerservice/_utils/model_base.py @@ -590,6 +590,239 @@ def _create_value(rf: typing.Optional["_RestField"], value: typing.Any) -> typin return _serialize(value, rf._format) +# ============================================================================ +# Fast-path scalar deserializer functions for rest_field(deserializer=...) +# These are referenced from rest_field declarations to bypass the generic +# _deserialize -> _deserialize_with_callable chain. +# Only simple/primitive types — no models or container types. +# ============================================================================ + + +def _xml_deser_str(value): + if isinstance(value, ET.Element): + return value.text or "" + return str(value) if value is not None else None + + +def _xml_deser_int(value): + if isinstance(value, ET.Element): + return int(value.text) if value.text else None + return int(value) if value is not None else None + + +def _xml_deser_float(value): + if isinstance(value, ET.Element): + return float(value.text) if value.text else None + return float(value) if value is not None else None + + +def _xml_deser_bool(value): + if isinstance(value, ET.Element): + text = value.text + else: + text = value + if text is None: + return None + if text in (True, False): + return text + return text.lower() == "true" + + +# pylint: disable=docstring-missing-param +def _xml_deser_bytes(value): + """Deserialize bytes from XML (base64).""" + if isinstance(value, ET.Element): + text = value.text + else: + text = value + if text is None: + return None + return _deserialize_bytes(text) + + +def _xml_deser_bytes_base64url(value): + """Deserialize bytes from XML (base64url).""" + if isinstance(value, ET.Element): + text = value.text + else: + text = value + if text is None: + return None + return _deserialize_bytes_base64(text) + + +def _xml_deser_datetime(value): + """Deserialize a datetime from XML (ISO 8601 / rfc3339).""" + if isinstance(value, ET.Element): + text = value.text + else: + text = value + if text is None: + return None + return _deserialize_datetime(text) + + +def _xml_deser_datetime_rfc7231(value): + """Deserialize a datetime from XML (RFC7231 format).""" + if isinstance(value, ET.Element): + text = value.text + else: + text = value + if text is None: + return None + return _deserialize_datetime_rfc7231(text) + + +def _xml_deser_datetime_unix_timestamp(value): + """Deserialize a datetime from XML (Unix timestamp).""" + if isinstance(value, ET.Element): + text = value.text + else: + text = value + if text is None: + return None + return _deserialize_datetime_unix_timestamp(float(text)) + + +def _xml_deser_date(value): + """Deserialize a date from XML (ISO 8601).""" + if isinstance(value, ET.Element): + text = value.text + else: + text = value + if text is None: + return None + return _deserialize_date(text) + + +def _xml_deser_time(value): + """Deserialize a time from XML (ISO 8601).""" + if isinstance(value, ET.Element): + text = value.text + else: + text = value + if text is None: + return None + return _deserialize_time(text) + + +def _xml_deser_duration(value): + """Deserialize a timedelta from XML (ISO 8601 duration).""" + if isinstance(value, ET.Element): + text = value.text + else: + text = value + if text is None: + return None + return _deserialize_duration(text) + + +def _xml_deser_decimal(value): + """Deserialize a Decimal from XML.""" + if isinstance(value, ET.Element): + text = value.text + else: + text = value + if text is None: + return None + return _deserialize_decimal(text) + + +def _xml_deser_enum_or_str(enum_cls, value): + """Deserialize a Union[EnumType, str] from XML.""" + text = value.text if isinstance(value, ET.Element) else value + if text is None: + return None + try: + return enum_cls(text) + except ValueError: + return text + + +def _extract_xml_model_type(rf_type): + """Extract the concrete Model class from a resolved rf._type partial chain. + + Unwraps ``Optional[Model]`` and ``_deserialize_model(Model, ...)`` + wrappers. Only handles Model and Optional[Model] — other composite + types (List, Dict, Union, etc.) return None and fall through to the + generic ``_deserialize`` path at runtime. + """ + if rf_type is None: + return None + if isinstance(rf_type, type) and _is_model(rf_type): + return rf_type + if not isinstance(rf_type, functools.partial): + return None + func = rf_type.func + args = rf_type.args + if func is _deserialize_with_optional and args: + return _extract_xml_model_type(args[0]) + if func is _deserialize_model and args: + cls = args[0] + return cls if isinstance(cls, type) and _is_model(cls) else None + return None + + +def _build_xml_field_plan( # pylint: disable=docstring-missing-return, docstring-missing-rtype, unused-variable + cls, attr_to_rest_field: dict +) -> list: + """Build a precomputed XML field plan for fast _init_from_xml iteration. + + Called once per model class in __new__. Returns a list of tuples: + (rest_name, xml_name, kind, deser, rf_type, is_optional, items_name) + + kind: 0=wrapped, 1=attribute, 2=unwrapped, 3=text + + For Model and Optional[Model] fields that lack a scalar + ``_deserializer``, this function precomputes the Model class as the + deserializer so ``_init_from_xml`` can call ``ModelClass(element)`` + directly instead of going through the expensive + ``_get_deserialize_callable_from_annotation`` chain at runtime. + """ + model_meta = getattr(cls, "_xml", {}) + model_ns = model_meta.get("ns") or model_meta.get("namespace") + plan = [] + + for rf in attr_to_rest_field.values(): + prop_meta = getattr(rf, "_xml", {}) + deser = rf._deserializer + + xml_name = prop_meta.get("name", rf._rest_name) + xml_ns = _resolve_xml_ns(prop_meta, model_meta) + if xml_ns: + xml_name = "{" + xml_ns + "}" + xml_name + + is_optional = rf._is_optional + + # For Model / Optional[Model] fields without a scalar deserializer, + # precompute the Model class as the deserializer. + if deser is None and rf._type is not None: + model_cls = _extract_xml_model_type(rf._type) + if model_cls is not None: + deser = model_cls + + if prop_meta.get("attribute", False): + plan.append((rf._rest_name, xml_name, 1, deser, rf._type, is_optional, None)) + elif prop_meta.get("unwrapped", False): + items_name = prop_meta.get("itemsName") + if items_name: + items_ns = prop_meta.get("itemsNs") + if items_ns is not None: + xml_ns = items_ns + if xml_ns: + items_name = "{" + xml_ns + "}" + items_name + else: + items_name = xml_name + plan.append((rf._rest_name, xml_name, 2, deser, rf._type, is_optional, items_name)) + elif prop_meta.get("text", False): + plan.append((rf._rest_name, xml_name, 3, deser, rf._type, is_optional, None)) + else: + plan.append((rf._rest_name, xml_name, 0, deser, rf._type, is_optional, None)) + + return plan + + +# pylint: enable=docstring-missing-param class Model(_MyMutableMapping): _is_model = True # label whether current class's _attr_to_rest_field has been calculated @@ -630,7 +863,9 @@ def __init__(self, *args: typing.Any, **kwargs: typing.Any) -> None: dict_to_pass[rf._rest_name] = _create_value(rf, rf._default) super().__init__(dict_to_pass) - def _init_from_xml(self, element: ET.Element) -> dict[str, typing.Any]: + def _init_from_xml( # pylint: disable=too-many-branches, too-many-statements + self, element: ET.Element + ) -> dict[str, typing.Any]: """Deserialize an XML element into a dict mapping rest field names to values. :param ET.Element element: The XML element to deserialize from. @@ -638,53 +873,89 @@ def _init_from_xml(self, element: ET.Element) -> dict[str, typing.Any]: :rtype: dict """ result: dict[str, typing.Any] = {} - model_meta = getattr(self, "_xml", {}) existed_attr_keys: list[str] = [] - for rf in self._attr_to_rest_field.values(): - prop_meta = getattr(rf, "_xml", {}) - xml_name = prop_meta.get("name", rf._rest_name) - xml_ns = _resolve_xml_ns(prop_meta, model_meta) - if xml_ns: - xml_name = "{" + xml_ns + "}" + xml_name - - # attribute - if prop_meta.get("attribute", False) and element.get(xml_name) is not None: - existed_attr_keys.append(xml_name) - result[rf._rest_name] = _deserialize(rf._type, element.get(xml_name)) - continue - - # unwrapped element is array - if prop_meta.get("unwrapped", False): - # unwrapped array could either use prop items meta/prop meta - _items_name = prop_meta.get("itemsName") - if _items_name: - xml_name = _items_name - _items_ns = prop_meta.get("itemsNs") - if _items_ns is not None: - xml_ns = _items_ns - if xml_ns: - xml_name = "{" + xml_ns + "}" + xml_name - items = element.findall(xml_name) # pyright: ignore - if len(items) > 0: + field_plan = getattr(self, "_xml_field_plan", None) + if field_plan: + for rest_name, xml_name, kind, deser, rf_type, is_optional, items_name in field_plan: + if kind == 0: # wrapped element (most common) + item = element.find(xml_name) + if item is not None: + existed_attr_keys.append(xml_name) + if deser: + result[rest_name] = deser(item) + else: + result[rest_name] = _deserialize(rf_type, item) + elif kind == 1: # attribute + attr_val = element.get(xml_name) + if attr_val is not None: + existed_attr_keys.append(xml_name) + if deser: + result[rest_name] = deser(attr_val) + else: + result[rest_name] = attr_val + elif kind == 2: # unwrapped array + items = element.findall(items_name) # pyright: ignore + if len(items) > 0: + existed_attr_keys.append(items_name) + if deser: + result[rest_name] = deser(items) + else: + result[rest_name] = _deserialize(rf_type, items) + elif not is_optional: + existed_attr_keys.append(items_name) + result[rest_name] = [] + elif kind == 3: # text + if element.text is not None: + if deser: + result[rest_name] = deser(element.text) + else: + result[rest_name] = element.text + else: + model_meta = getattr(self, "_xml", {}) + for rf in self._attr_to_rest_field.values(): + prop_meta = getattr(rf, "_xml", {}) + xml_name = prop_meta.get("name", rf._rest_name) + xml_ns = _resolve_xml_ns(prop_meta, model_meta) + if xml_ns: + xml_name = "{" + xml_ns + "}" + xml_name + + # attribute + if prop_meta.get("attribute", False) and element.get(xml_name) is not None: existed_attr_keys.append(xml_name) - result[rf._rest_name] = _deserialize(rf._type, items) - elif not rf._is_optional: + result[rf._rest_name] = _deserialize(rf._type, element.get(xml_name)) + continue + + # unwrapped element is array + if prop_meta.get("unwrapped", False): + _items_name = prop_meta.get("itemsName") + if _items_name: + xml_name = _items_name + _items_ns = prop_meta.get("itemsNs") + if _items_ns is not None: + xml_ns = _items_ns + if xml_ns: + xml_name = "{" + xml_ns + "}" + xml_name + items = element.findall(xml_name) # pyright: ignore + if len(items) > 0: + existed_attr_keys.append(xml_name) + result[rf._rest_name] = _deserialize(rf._type, items) + elif not rf._is_optional: + existed_attr_keys.append(xml_name) + result[rf._rest_name] = [] + continue + + # text element is primitive type + if prop_meta.get("text", False): + if element.text is not None: + result[rf._rest_name] = _deserialize(rf._type, element.text) + continue + + # wrapped element could be normal property or array + item = element.find(xml_name) + if item is not None: existed_attr_keys.append(xml_name) - result[rf._rest_name] = [] - continue - - # text element is primitive type - if prop_meta.get("text", False): - if element.text is not None: - result[rf._rest_name] = _deserialize(rf._type, element.text) - continue - - # wrapped element could be normal property or array, it should only have one element - item = element.find(xml_name) - if item is not None: - existed_attr_keys.append(xml_name) - result[rf._rest_name] = _deserialize(rf._type, item) + result[rf._rest_name] = _deserialize(rf._type, item) # rest thing is additional properties for e in element: @@ -721,6 +992,9 @@ def __new__(cls, *args: typing.Any, **kwargs: typing.Any) -> Self: Model._get_backcompat_attribute_name(cls._attr_to_rest_field, attr): rf for attr, rf in cls._attr_to_rest_field.items() } + # Build XML field plan for fast _init_from_xml (only for XML models) + if getattr(cls, "_xml", None): + cls._xml_field_plan = _build_xml_field_plan(cls, attr_to_rest_field) cls._calculated.add(f"{cls.__module__}.{cls.__qualname__}") return super().__new__(cls) @@ -1105,6 +1379,7 @@ def __init__( format: typing.Optional[str] = None, is_multipart_file_input: bool = False, xml: typing.Optional[dict[str, typing.Any]] = None, + deserializer: typing.Optional[typing.Callable] = None, original_tsp_name: typing.Optional[str] = None, ): self._type = type @@ -1118,6 +1393,7 @@ def __init__( self._format = format self._is_multipart_file_input = is_multipart_file_input self._xml = xml if xml is not None else {} + self._deserializer = deserializer self._original_tsp_name = original_tsp_name @property @@ -1154,7 +1430,11 @@ def __get__(self, obj: Model, type=None): # pylint: disable=redefined-builtin # Return the value from _data directly (it's been deserialized in place) return obj._data.get(self._rest_name) - deserialized = _deserialize(self._type, _serialize(item, self._format), rf=self) + # Fast path: use _deserializer directly (avoids _serialize/_deserialize chain) + if self._deserializer: + deserialized = self._deserializer(item) + else: + deserialized = _deserialize(self._type, _serialize(item, self._format), rf=self) # For mutable types, store the deserialized value back in _data # so mutations directly affect _data @@ -1200,6 +1480,7 @@ def rest_field( format: typing.Optional[str] = None, is_multipart_file_input: bool = False, xml: typing.Optional[dict[str, typing.Any]] = None, + deserializer: typing.Optional[typing.Callable] = None, original_tsp_name: typing.Optional[str] = None, ) -> typing.Any: return _RestField( @@ -1210,6 +1491,7 @@ def rest_field( format=format, is_multipart_file_input=is_multipart_file_input, xml=xml, + deserializer=deserializer, original_tsp_name=original_tsp_name, ) @@ -1444,6 +1726,8 @@ def _deserialize_xml( value: str, ) -> typing.Any: element = ET.fromstring(value) # nosec + if _is_model(deserializer): + return deserializer._deserialize(element, []) return _deserialize(deserializer, element) diff --git a/sdk/containerservice/azure-mgmt-containerservice/azure/mgmt/containerservice/_utils/serialization.py b/sdk/containerservice/azure-mgmt-containerservice/azure/mgmt/containerservice/_utils/serialization.py index 954bf7ebffa7..a088671e9c51 100644 --- a/sdk/containerservice/azure-mgmt-containerservice/azure/mgmt/containerservice/_utils/serialization.py +++ b/sdk/containerservice/azure-mgmt-containerservice/azure/mgmt/containerservice/_utils/serialization.py @@ -1405,7 +1405,7 @@ def __init__(self, classes: Optional[Mapping[str, type]] = None) -> None: # Otherwise, result are unexpected self.additional_properties_detection = True - def __call__(self, target_obj, response_data, content_type=None): + def __call__(self, target_obj, response_data, content_type=None): # pylint: disable=too-many-return-statements """Call the deserializer to process a REST response. :param str target_obj: Target data type to deserialize to. @@ -1415,6 +1415,27 @@ def __call__(self, target_obj, response_data, content_type=None): :return: Deserialized object. :rtype: object """ + # Fast path for header deserialization: response_data is a plain str or None + # and target_obj is a simple scalar type. This avoids the expensive + # _unpack_content → _deserialize → _classify_target → deserialize_data chain. + if response_data is None: + return None + if target_obj == "str" and isinstance(response_data, str): + return response_data + if isinstance(response_data, str): + if target_obj == "int": + return int(response_data) + if target_obj == "bool": + if response_data in ("true", "1", "True"): + return True + if response_data in ("false", "0", "False"): + return False + return bool(response_data) + if target_obj == "rfc-1123": + return Deserializer.deserialize_rfc(response_data) + if target_obj == "bytearray": + return Deserializer.deserialize_bytearray(response_data) + data = self._unpack_content(response_data, content_type) return self._deserialize(target_obj, data) diff --git a/sdk/containerservice/azure-mgmt-containerservice/azure/mgmt/containerservice/_version.py b/sdk/containerservice/azure-mgmt-containerservice/azure/mgmt/containerservice/_version.py index 42499f533a36..50ae0e696783 100644 --- a/sdk/containerservice/azure-mgmt-containerservice/azure/mgmt/containerservice/_version.py +++ b/sdk/containerservice/azure-mgmt-containerservice/azure/mgmt/containerservice/_version.py @@ -6,4 +6,4 @@ # Changes may cause incorrect behavior and will be lost if the code is regenerated. # -------------------------------------------------------------------------- -VERSION = "41.3.0b1" +VERSION = "41.3.0" diff --git a/sdk/containerservice/azure-mgmt-containerservice/azure/mgmt/containerservice/aio/_client.py b/sdk/containerservice/azure-mgmt-containerservice/azure/mgmt/containerservice/aio/_client.py index 7ffcabc09961..95c3a1bf71a8 100644 --- a/sdk/containerservice/azure-mgmt-containerservice/azure/mgmt/containerservice/aio/_client.py +++ b/sdk/containerservice/azure-mgmt-containerservice/azure/mgmt/containerservice/aio/_client.py @@ -21,17 +21,11 @@ from ._configuration import ContainerServiceClientConfiguration from .operations import ( AgentPoolsOperations, - ContainerServiceOperations, IdentityBindingsOperations, - JWTAuthenticatorsOperations, - LoadBalancersOperations, MachinesOperations, MaintenanceConfigurationsOperations, - ManagedClusterSnapshotsOperations, ManagedClustersOperations, ManagedNamespacesOperations, - MeshMembershipsOperations, - OperationStatusResultOperations, Operations, PrivateEndpointConnectionsOperations, PrivateLinkResourcesOperations, @@ -39,7 +33,6 @@ SnapshotsOperations, TrustedAccessRoleBindingsOperations, TrustedAccessRolesOperations, - VmSkusOperations, ) if sys.version_info >= (3, 11): @@ -72,27 +65,14 @@ class ContainerServiceClient: # pylint: disable=too-many-instance-attributes azure.mgmt.containerservice.aio.operations.PrivateEndpointConnectionsOperations :ivar snapshots: SnapshotsOperations operations :vartype snapshots: azure.mgmt.containerservice.aio.operations.SnapshotsOperations - :ivar managed_cluster_snapshots: ManagedClusterSnapshotsOperations operations - :vartype managed_cluster_snapshots: - azure.mgmt.containerservice.aio.operations.ManagedClusterSnapshotsOperations :ivar trusted_access_role_bindings: TrustedAccessRoleBindingsOperations operations :vartype trusted_access_role_bindings: azure.mgmt.containerservice.aio.operations.TrustedAccessRoleBindingsOperations - :ivar load_balancers: LoadBalancersOperations operations - :vartype load_balancers: azure.mgmt.containerservice.aio.operations.LoadBalancersOperations :ivar identity_bindings: IdentityBindingsOperations operations :vartype identity_bindings: azure.mgmt.containerservice.aio.operations.IdentityBindingsOperations - :ivar jwt_authenticators: JWTAuthenticatorsOperations operations - :vartype jwt_authenticators: - azure.mgmt.containerservice.aio.operations.JWTAuthenticatorsOperations - :ivar mesh_memberships: MeshMembershipsOperations operations - :vartype mesh_memberships: azure.mgmt.containerservice.aio.operations.MeshMembershipsOperations :ivar operations: Operations operations :vartype operations: azure.mgmt.containerservice.aio.operations.Operations - :ivar operation_status_result: OperationStatusResultOperations operations - :vartype operation_status_result: - azure.mgmt.containerservice.aio.operations.OperationStatusResultOperations :ivar private_link_resources: PrivateLinkResourcesOperations operations :vartype private_link_resources: azure.mgmt.containerservice.aio.operations.PrivateLinkResourcesOperations @@ -102,11 +82,6 @@ class ContainerServiceClient: # pylint: disable=too-many-instance-attributes :ivar trusted_access_roles: TrustedAccessRolesOperations operations :vartype trusted_access_roles: azure.mgmt.containerservice.aio.operations.TrustedAccessRolesOperations - :ivar container_service: ContainerServiceOperations operations - :vartype container_service: - azure.mgmt.containerservice.aio.operations.ContainerServiceOperations - :ivar vm_skus: VmSkusOperations operations - :vartype vm_skus: azure.mgmt.containerservice.aio.operations.VmSkusOperations :param credential: Credential used to authenticate requests to the service. Required. :type credential: ~azure.core.credentials_async.AsyncTokenCredential :param subscription_id: The ID of the target subscription. The value must be an UUID. Required. @@ -116,10 +91,9 @@ class ContainerServiceClient: # pylint: disable=too-many-instance-attributes :keyword cloud_setting: The cloud setting for which to get the ARM endpoint. Default value is None. :paramtype cloud_setting: ~azure.core.AzureClouds - :keyword api_version: The API version to use for this operation. Known values are - "2026-03-02-preview" and None. Default value is None. If not set, the operation's default API - version will be used. Note that overriding this default value may result in unsupported - behavior. + :keyword api_version: The API version to use for this operation. Known values are "2026-04-01" + and None. Default value is None. If not set, the operation's default API version will be used. + Note that overriding this default value may result in unsupported behavior. :paramtype api_version: str :keyword int polling_interval: Default waiting time between two polls for LRO operations if no Retry-After header is present. @@ -189,26 +163,13 @@ def __init__( self._client, self._config, self._serialize, self._deserialize ) self.snapshots = SnapshotsOperations(self._client, self._config, self._serialize, self._deserialize) - self.managed_cluster_snapshots = ManagedClusterSnapshotsOperations( - self._client, self._config, self._serialize, self._deserialize - ) self.trusted_access_role_bindings = TrustedAccessRoleBindingsOperations( self._client, self._config, self._serialize, self._deserialize ) - self.load_balancers = LoadBalancersOperations(self._client, self._config, self._serialize, self._deserialize) self.identity_bindings = IdentityBindingsOperations( self._client, self._config, self._serialize, self._deserialize ) - self.jwt_authenticators = JWTAuthenticatorsOperations( - self._client, self._config, self._serialize, self._deserialize - ) - self.mesh_memberships = MeshMembershipsOperations( - self._client, self._config, self._serialize, self._deserialize - ) self.operations = Operations(self._client, self._config, self._serialize, self._deserialize) - self.operation_status_result = OperationStatusResultOperations( - self._client, self._config, self._serialize, self._deserialize - ) self.private_link_resources = PrivateLinkResourcesOperations( self._client, self._config, self._serialize, self._deserialize ) @@ -218,10 +179,6 @@ def __init__( self.trusted_access_roles = TrustedAccessRolesOperations( self._client, self._config, self._serialize, self._deserialize ) - self.container_service = ContainerServiceOperations( - self._client, self._config, self._serialize, self._deserialize - ) - self.vm_skus = VmSkusOperations(self._client, self._config, self._serialize, self._deserialize) def send_request( self, request: HttpRequest, *, stream: bool = False, **kwargs: Any diff --git a/sdk/containerservice/azure-mgmt-containerservice/azure/mgmt/containerservice/aio/_configuration.py b/sdk/containerservice/azure-mgmt-containerservice/azure/mgmt/containerservice/aio/_configuration.py index 367d470e1167..c4a7e131dca4 100644 --- a/sdk/containerservice/azure-mgmt-containerservice/azure/mgmt/containerservice/aio/_configuration.py +++ b/sdk/containerservice/azure-mgmt-containerservice/azure/mgmt/containerservice/aio/_configuration.py @@ -33,10 +33,9 @@ class ContainerServiceClientConfiguration: # pylint: disable=too-many-instance- :param cloud_setting: The cloud setting for which to get the ARM endpoint. Default value is None. :type cloud_setting: ~azure.core.AzureClouds - :keyword api_version: The API version to use for this operation. Known values are - "2026-03-02-preview" and None. Default value is None. If not set, the operation's default API - version will be used. Note that overriding this default value may result in unsupported - behavior. + :keyword api_version: The API version to use for this operation. Known values are "2026-04-01" + and None. Default value is None. If not set, the operation's default API version will be used. + Note that overriding this default value may result in unsupported behavior. :paramtype api_version: str """ @@ -48,7 +47,7 @@ def __init__( cloud_setting: Optional["AzureClouds"] = None, **kwargs: Any ) -> None: - api_version: str = kwargs.pop("api_version", "2026-03-02-preview") + api_version: str = kwargs.pop("api_version", "2026-04-01") if credential is None: raise ValueError("Parameter 'credential' must not be None.") diff --git a/sdk/containerservice/azure-mgmt-containerservice/azure/mgmt/containerservice/aio/operations/__init__.py b/sdk/containerservice/azure-mgmt-containerservice/azure/mgmt/containerservice/aio/operations/__init__.py index 49ff26d86c61..69da5e12a363 100644 --- a/sdk/containerservice/azure-mgmt-containerservice/azure/mgmt/containerservice/aio/operations/__init__.py +++ b/sdk/containerservice/azure-mgmt-containerservice/azure/mgmt/containerservice/aio/operations/__init__.py @@ -19,19 +19,12 @@ from ._operations import MachinesOperations # type: ignore from ._operations import PrivateEndpointConnectionsOperations # type: ignore from ._operations import SnapshotsOperations # type: ignore -from ._operations import ManagedClusterSnapshotsOperations # type: ignore from ._operations import TrustedAccessRoleBindingsOperations # type: ignore -from ._operations import LoadBalancersOperations # type: ignore from ._operations import IdentityBindingsOperations # type: ignore -from ._operations import JWTAuthenticatorsOperations # type: ignore -from ._operations import MeshMembershipsOperations # type: ignore from ._operations import Operations # type: ignore -from ._operations import OperationStatusResultOperations # type: ignore from ._operations import PrivateLinkResourcesOperations # type: ignore from ._operations import ResolvePrivateLinkServiceIdOperations # type: ignore from ._operations import TrustedAccessRolesOperations # type: ignore -from ._operations import ContainerServiceOperations # type: ignore -from ._operations import VmSkusOperations # type: ignore from ._patch import __all__ as _patch_all from ._patch import * @@ -45,19 +38,12 @@ "MachinesOperations", "PrivateEndpointConnectionsOperations", "SnapshotsOperations", - "ManagedClusterSnapshotsOperations", "TrustedAccessRoleBindingsOperations", - "LoadBalancersOperations", "IdentityBindingsOperations", - "JWTAuthenticatorsOperations", - "MeshMembershipsOperations", "Operations", - "OperationStatusResultOperations", "PrivateLinkResourcesOperations", "ResolvePrivateLinkServiceIdOperations", "TrustedAccessRolesOperations", - "ContainerServiceOperations", - "VmSkusOperations", ] __all__.extend([p for p in _patch_all if p not in __all__]) # pyright: ignore _patch_sdk() diff --git a/sdk/containerservice/azure-mgmt-containerservice/azure/mgmt/containerservice/aio/operations/_operations.py b/sdk/containerservice/azure-mgmt-containerservice/azure/mgmt/containerservice/aio/operations/_operations.py index 4dc2ca51e548..972828ef98a5 100644 --- a/sdk/containerservice/azure-mgmt-containerservice/azure/mgmt/containerservice/aio/operations/_operations.py +++ b/sdk/containerservice/azure-mgmt-containerservice/azure/mgmt/containerservice/aio/operations/_operations.py @@ -40,7 +40,6 @@ from ..._validation import api_version_validation from ...operations._operations import ( build_agent_pools_abort_latest_operation_request, - build_agent_pools_complete_upgrade_request, build_agent_pools_create_or_update_request, build_agent_pools_delete_machines_request, build_agent_pools_delete_request, @@ -49,55 +48,34 @@ build_agent_pools_get_upgrade_profile_request, build_agent_pools_list_request, build_agent_pools_upgrade_node_image_version_request, - build_container_service_list_node_image_versions_request, build_identity_bindings_create_or_update_request, build_identity_bindings_delete_request, build_identity_bindings_get_request, build_identity_bindings_list_by_managed_cluster_request, - build_jwt_authenticators_create_or_update_request, - build_jwt_authenticators_delete_request, - build_jwt_authenticators_get_request, - build_jwt_authenticators_list_by_managed_cluster_request, - build_load_balancers_create_or_update_request, - build_load_balancers_delete_request, - build_load_balancers_get_request, - build_load_balancers_list_by_managed_cluster_request, - build_machines_create_or_update_request, build_machines_get_request, build_machines_list_request, build_maintenance_configurations_create_or_update_request, build_maintenance_configurations_delete_request, build_maintenance_configurations_get_request, build_maintenance_configurations_list_by_managed_cluster_request, - build_managed_cluster_snapshots_create_or_update_request, - build_managed_cluster_snapshots_delete_request, - build_managed_cluster_snapshots_get_request, - build_managed_cluster_snapshots_list_by_resource_group_request, - build_managed_cluster_snapshots_list_request, - build_managed_cluster_snapshots_update_tags_request, build_managed_clusters_abort_latest_operation_request, build_managed_clusters_create_or_update_request, build_managed_clusters_delete_request, build_managed_clusters_get_access_profile_request, build_managed_clusters_get_command_result_request, - build_managed_clusters_get_guardrails_versions_request, build_managed_clusters_get_mesh_revision_profile_request, build_managed_clusters_get_mesh_upgrade_profile_request, build_managed_clusters_get_request, - build_managed_clusters_get_safeguards_versions_request, build_managed_clusters_get_upgrade_profile_request, build_managed_clusters_list_by_resource_group_request, build_managed_clusters_list_cluster_admin_credentials_request, build_managed_clusters_list_cluster_monitoring_user_credentials_request, build_managed_clusters_list_cluster_user_credentials_request, - build_managed_clusters_list_guardrails_versions_request, build_managed_clusters_list_kubernetes_versions_request, build_managed_clusters_list_mesh_revision_profiles_request, build_managed_clusters_list_mesh_upgrade_profiles_request, build_managed_clusters_list_outbound_network_dependencies_endpoints_request, build_managed_clusters_list_request, - build_managed_clusters_list_safeguards_versions_request, - build_managed_clusters_rebalance_load_balancers_request, build_managed_clusters_reset_aad_profile_request, build_managed_clusters_reset_service_principal_profile_request, build_managed_clusters_rotate_cluster_certificates_request, @@ -112,13 +90,6 @@ build_managed_namespaces_list_by_managed_cluster_request, build_managed_namespaces_list_credential_request, build_managed_namespaces_update_request, - build_mesh_memberships_create_or_update_request, - build_mesh_memberships_delete_request, - build_mesh_memberships_get_request, - build_mesh_memberships_list_by_managed_cluster_request, - build_operation_status_result_get_by_agent_pool_request, - build_operation_status_result_get_request, - build_operation_status_result_list_request, build_operations_list_request, build_private_endpoint_connections_delete_request, build_private_endpoint_connections_get_request, @@ -137,7 +108,6 @@ build_trusted_access_role_bindings_get_request, build_trusted_access_role_bindings_list_request, build_trusted_access_roles_list_request, - build_vm_skus_list_request, ) from .._configuration import ContainerServiceClientConfiguration @@ -926,161 +896,6 @@ def get_long_running_output(pipeline_response): # pylint: disable=inconsistent- ) return AsyncLROPoller[None](self._client, raw_result, get_long_running_output, polling_method) # type: ignore - @api_version_validation( - method_added_on="2026-03-02-preview", - params_added_on={ - "2026-03-02-preview": [ - "api_version", - "subscription_id", - "resource_group_name", - "resource_name", - "agent_pool_name", - ] - }, - api_versions_list=["2026-03-02-preview"], - ) - async def _complete_upgrade_initial( - self, resource_group_name: str, resource_name: str, agent_pool_name: str, **kwargs: Any - ) -> AsyncIterator[bytes]: - error_map: MutableMapping = { - 401: ClientAuthenticationError, - 404: ResourceNotFoundError, - 409: ResourceExistsError, - 304: ResourceNotModifiedError, - } - error_map.update(kwargs.pop("error_map", {}) or {}) - - _headers = kwargs.pop("headers", {}) or {} - _params = kwargs.pop("params", {}) or {} - - cls: ClsType[AsyncIterator[bytes]] = kwargs.pop("cls", None) - - _request = build_agent_pools_complete_upgrade_request( - resource_group_name=resource_group_name, - resource_name=resource_name, - agent_pool_name=agent_pool_name, - subscription_id=self._config.subscription_id, - api_version=self._config.api_version, - headers=_headers, - params=_params, - ) - path_format_arguments = { - "endpoint": self._serialize.url("self._config.base_url", self._config.base_url, "str", skip_quote=True), - } - _request.url = self._client.format_url(_request.url, **path_format_arguments) - - _decompress = kwargs.pop("decompress", True) - _stream = True - pipeline_response: PipelineResponse = await self._client._pipeline.run( # pylint: disable=protected-access - _request, stream=_stream, **kwargs - ) - - response = pipeline_response.http_response - - if response.status_code not in [202, 204]: - try: - await response.read() # Load the body in memory and close the socket - except (StreamConsumedError, StreamClosedError): - pass - map_error(status_code=response.status_code, response=response, error_map=error_map) - error = _failsafe_deserialize( - _models.ErrorResponse, - response, - ) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - - response_headers = {} - if response.status_code == 202: - response_headers["Azure-AsyncOperation"] = self._deserialize( - "str", response.headers.get("Azure-AsyncOperation") - ) - response_headers["Location"] = self._deserialize("str", response.headers.get("Location")) - response_headers["Retry-After"] = self._deserialize("int", response.headers.get("Retry-After")) - - deserialized = response.iter_bytes() if _decompress else response.iter_raw() - - if cls: - return cls(pipeline_response, deserialized, response_headers) # type: ignore - - return deserialized # type: ignore - - @distributed_trace_async - @api_version_validation( - method_added_on="2026-03-02-preview", - params_added_on={ - "2026-03-02-preview": [ - "api_version", - "subscription_id", - "resource_group_name", - "resource_name", - "agent_pool_name", - ] - }, - api_versions_list=["2026-03-02-preview"], - ) - async def begin_complete_upgrade( - self, resource_group_name: str, resource_name: str, agent_pool_name: str, **kwargs: Any - ) -> AsyncLROPoller[None]: - """Completes the upgrade of an agent pool. - - Completes the upgrade operation for the specified agent pool. - - :param resource_group_name: The name of the resource group. The name is case insensitive. - Required. - :type resource_group_name: str - :param resource_name: The name of the managed cluster resource. Required. - :type resource_name: str - :param agent_pool_name: The name of the agent pool. Required. - :type agent_pool_name: str - :return: An instance of AsyncLROPoller that returns None - :rtype: ~azure.core.polling.AsyncLROPoller[None] - :raises ~azure.core.exceptions.HttpResponseError: - """ - _headers = kwargs.pop("headers", {}) or {} - _params = kwargs.pop("params", {}) or {} - - cls: ClsType[None] = kwargs.pop("cls", None) - polling: Union[bool, AsyncPollingMethod] = kwargs.pop("polling", True) - lro_delay = kwargs.pop("polling_interval", self._config.polling_interval) - cont_token: Optional[str] = kwargs.pop("continuation_token", None) - if cont_token is None: - raw_result = await self._complete_upgrade_initial( - resource_group_name=resource_group_name, - resource_name=resource_name, - agent_pool_name=agent_pool_name, - cls=lambda x, y, z: x, - headers=_headers, - params=_params, - **kwargs - ) - await raw_result.http_response.read() # type: ignore - kwargs.pop("error_map", None) - - def get_long_running_output(pipeline_response): # pylint: disable=inconsistent-return-statements - if cls: - return cls(pipeline_response, None, {}) # type: ignore - - path_format_arguments = { - "endpoint": self._serialize.url("self._config.base_url", self._config.base_url, "str", skip_quote=True), - } - - if polling is True: - polling_method: AsyncPollingMethod = cast( - AsyncPollingMethod, AsyncARMPolling(lro_delay, path_format_arguments=path_format_arguments, **kwargs) - ) - elif polling is False: - polling_method = cast(AsyncPollingMethod, AsyncNoPolling()) - else: - polling_method = polling - if cont_token: - return AsyncLROPoller[None].from_continuation_token( - polling_method=polling_method, - continuation_token=cont_token, - client=self._client, - deserialization_callback=get_long_running_output, - ) - return AsyncLROPoller[None](self._client, raw_result, get_long_running_output, polling_method) # type: ignore - async def _delete_machines_initial( self, resource_group_name: str, @@ -2253,16 +2068,11 @@ def get_long_running_output(pipeline_response): self._client, raw_result, get_long_running_output, polling_method # type: ignore ) - @api_version_validation( - params_added_on={"2026-03-02-preview": ["ignore_pod_disruption_budget"]}, - api_versions_list=["2025-10-01", "2026-01-01", "2026-02-01", "2026-03-01", "2026-03-02-preview"], - ) async def _delete_initial( self, resource_group_name: str, resource_name: str, *, - ignore_pod_disruption_budget: Optional[bool] = None, etag: Optional[str] = None, match_condition: Optional[MatchConditions] = None, **kwargs: Any @@ -2290,7 +2100,6 @@ async def _delete_initial( resource_group_name=resource_group_name, resource_name=resource_name, subscription_id=self._config.subscription_id, - ignore_pod_disruption_budget=ignore_pod_disruption_budget, etag=etag, match_condition=match_condition, api_version=self._config.api_version, @@ -2338,16 +2147,11 @@ async def _delete_initial( return deserialized # type: ignore @distributed_trace_async - @api_version_validation( - params_added_on={"2026-03-02-preview": ["ignore_pod_disruption_budget"]}, - api_versions_list=["2025-10-01", "2026-01-01", "2026-02-01", "2026-03-01", "2026-03-02-preview"], - ) async def begin_delete( self, resource_group_name: str, resource_name: str, *, - ignore_pod_disruption_budget: Optional[bool] = None, etag: Optional[str] = None, match_condition: Optional[MatchConditions] = None, **kwargs: Any @@ -2359,9 +2163,6 @@ async def begin_delete( :type resource_group_name: str :param resource_name: The name of the managed cluster resource. Required. :type resource_name: str - :keyword ignore_pod_disruption_budget: ignore-pod-disruption-budget=true to delete those pods - on a node without considering Pod Disruption Budget. Default value is None. - :paramtype ignore_pod_disruption_budget: bool :keyword etag: check if resource is changed. Set None to skip checking etag. Default value is None. :paramtype etag: str @@ -2382,7 +2183,6 @@ async def begin_delete( raw_result = await self._delete_initial( resource_group_name=resource_group_name, resource_name=resource_name, - ignore_pod_disruption_budget=ignore_pod_disruption_budget, etag=etag, match_condition=match_condition, cls=lambda x, y, z: x, @@ -4460,26 +4260,22 @@ async def get_next(next_link=None): return AsyncItemPaged(get_next, extract_data) - @api_version_validation( - method_added_on="2026-03-02-preview", - params_added_on={ - "2026-03-02-preview": [ - "api_version", - "subscription_id", - "resource_group_name", - "resource_name", - "content_type", - ] - }, - api_versions_list=["2026-03-02-preview"], - ) - async def _rebalance_load_balancers_initial( - self, - resource_group_name: str, - resource_name: str, - parameters: Union[_models.RebalanceLoadBalancersRequestBody, JSON, IO[bytes]], - **kwargs: Any - ) -> AsyncIterator[bytes]: + @distributed_trace_async + async def get_upgrade_profile( + self, resource_group_name: str, resource_name: str, **kwargs: Any + ) -> _models.ManagedClusterUpgradeProfile: + """Gets the upgrade profile of a managed cluster. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param resource_name: The name of the managed cluster resource. Required. + :type resource_name: str + :return: ManagedClusterUpgradeProfile. The ManagedClusterUpgradeProfile is compatible with + MutableMapping + :rtype: ~azure.mgmt.containerservice.models.ManagedClusterUpgradeProfile + :raises ~azure.core.exceptions.HttpResponseError: + """ error_map: MutableMapping = { 401: ClientAuthenticationError, 404: ResourceNotFoundError, @@ -4488,26 +4284,16 @@ async def _rebalance_load_balancers_initial( } error_map.update(kwargs.pop("error_map", {}) or {}) - _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) + _headers = kwargs.pop("headers", {}) or {} _params = kwargs.pop("params", {}) or {} - content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) - cls: ClsType[AsyncIterator[bytes]] = kwargs.pop("cls", None) - - content_type = content_type or "application/json" - _content = None - if isinstance(parameters, (IOBase, bytes)): - _content = parameters - else: - _content = json.dumps(parameters, cls=SdkJSONEncoder, exclude_readonly=True) # type: ignore + cls: ClsType[_models.ManagedClusterUpgradeProfile] = kwargs.pop("cls", None) - _request = build_managed_clusters_rebalance_load_balancers_request( + _request = build_managed_clusters_get_upgrade_profile_request( resource_group_name=resource_group_name, resource_name=resource_name, subscription_id=self._config.subscription_id, - content_type=content_type, api_version=self._config.api_version, - content=_content, headers=_headers, params=_params, ) @@ -4517,18 +4303,19 @@ async def _rebalance_load_balancers_initial( _request.url = self._client.format_url(_request.url, **path_format_arguments) _decompress = kwargs.pop("decompress", True) - _stream = True + _stream = kwargs.pop("stream", False) pipeline_response: PipelineResponse = await self._client._pipeline.run( # pylint: disable=protected-access _request, stream=_stream, **kwargs ) response = pipeline_response.http_response - if response.status_code not in [202, 204]: - try: - await response.read() # Load the body in memory and close the socket - except (StreamConsumedError, StreamClosedError): - pass + if response.status_code not in [200]: + if _stream: + try: + await response.read() # Load the body in memory and close the socket + except (StreamConsumedError, StreamClosedError): + pass map_error(status_code=response.status_code, response=response, error_map=error_map) error = _failsafe_deserialize( _models.ErrorResponse, @@ -4536,277 +4323,29 @@ async def _rebalance_load_balancers_initial( ) raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - response_headers = {} - if response.status_code == 202: - response_headers["Azure-AsyncOperation"] = self._deserialize( - "str", response.headers.get("Azure-AsyncOperation") - ) - response_headers["Location"] = self._deserialize("str", response.headers.get("Location")) - response_headers["Retry-After"] = self._deserialize("int", response.headers.get("Retry-After")) - - deserialized = response.iter_bytes() if _decompress else response.iter_raw() + if _stream: + deserialized = response.iter_bytes() if _decompress else response.iter_raw() + else: + deserialized = _deserialize(_models.ManagedClusterUpgradeProfile, response.json()) if cls: - return cls(pipeline_response, deserialized, response_headers) # type: ignore + return cls(pipeline_response, deserialized, {}) # type: ignore return deserialized # type: ignore - @overload - async def begin_rebalance_load_balancers( - self, - resource_group_name: str, - resource_name: str, - parameters: _models.RebalanceLoadBalancersRequestBody, - *, - content_type: str = "application/json", - **kwargs: Any - ) -> AsyncLROPoller[None]: - """Rebalance nodes across specific load balancers. + @distributed_trace_async + async def get_mesh_revision_profile(self, location: str, mode: str, **kwargs: Any) -> _models.MeshRevisionProfile: + """Gets a mesh revision profile for a specified mesh in the specified location. - :param resource_group_name: The name of the resource group. The name is case insensitive. - Required. - :type resource_group_name: str - :param resource_name: The name of the managed cluster resource. Required. - :type resource_name: str - :param parameters: The names of the load balancers to be rebalanced. If set to empty, all load - balancers will be rebalanced. Required. - :type parameters: ~azure.mgmt.containerservice.models.RebalanceLoadBalancersRequestBody - :keyword content_type: Body Parameter content-type. Content type parameter for JSON body. - Default value is "application/json". - :paramtype content_type: str - :return: An instance of AsyncLROPoller that returns None - :rtype: ~azure.core.polling.AsyncLROPoller[None] - :raises ~azure.core.exceptions.HttpResponseError: - """ - - @overload - async def begin_rebalance_load_balancers( - self, - resource_group_name: str, - resource_name: str, - parameters: JSON, - *, - content_type: str = "application/json", - **kwargs: Any - ) -> AsyncLROPoller[None]: - """Rebalance nodes across specific load balancers. - - :param resource_group_name: The name of the resource group. The name is case insensitive. - Required. - :type resource_group_name: str - :param resource_name: The name of the managed cluster resource. Required. - :type resource_name: str - :param parameters: The names of the load balancers to be rebalanced. If set to empty, all load - balancers will be rebalanced. Required. - :type parameters: JSON - :keyword content_type: Body Parameter content-type. Content type parameter for JSON body. - Default value is "application/json". - :paramtype content_type: str - :return: An instance of AsyncLROPoller that returns None - :rtype: ~azure.core.polling.AsyncLROPoller[None] - :raises ~azure.core.exceptions.HttpResponseError: - """ - - @overload - async def begin_rebalance_load_balancers( - self, - resource_group_name: str, - resource_name: str, - parameters: IO[bytes], - *, - content_type: str = "application/json", - **kwargs: Any - ) -> AsyncLROPoller[None]: - """Rebalance nodes across specific load balancers. - - :param resource_group_name: The name of the resource group. The name is case insensitive. - Required. - :type resource_group_name: str - :param resource_name: The name of the managed cluster resource. Required. - :type resource_name: str - :param parameters: The names of the load balancers to be rebalanced. If set to empty, all load - balancers will be rebalanced. Required. - :type parameters: IO[bytes] - :keyword content_type: Body Parameter content-type. Content type parameter for binary body. - Default value is "application/json". - :paramtype content_type: str - :return: An instance of AsyncLROPoller that returns None - :rtype: ~azure.core.polling.AsyncLROPoller[None] - :raises ~azure.core.exceptions.HttpResponseError: - """ - - @distributed_trace_async - @api_version_validation( - method_added_on="2026-03-02-preview", - params_added_on={ - "2026-03-02-preview": [ - "api_version", - "subscription_id", - "resource_group_name", - "resource_name", - "content_type", - ] - }, - api_versions_list=["2026-03-02-preview"], - ) - async def begin_rebalance_load_balancers( - self, - resource_group_name: str, - resource_name: str, - parameters: Union[_models.RebalanceLoadBalancersRequestBody, JSON, IO[bytes]], - **kwargs: Any - ) -> AsyncLROPoller[None]: - """Rebalance nodes across specific load balancers. - - :param resource_group_name: The name of the resource group. The name is case insensitive. - Required. - :type resource_group_name: str - :param resource_name: The name of the managed cluster resource. Required. - :type resource_name: str - :param parameters: The names of the load balancers to be rebalanced. If set to empty, all load - balancers will be rebalanced. Is one of the following types: RebalanceLoadBalancersRequestBody, - JSON, IO[bytes] Required. - :type parameters: ~azure.mgmt.containerservice.models.RebalanceLoadBalancersRequestBody or JSON - or IO[bytes] - :return: An instance of AsyncLROPoller that returns None - :rtype: ~azure.core.polling.AsyncLROPoller[None] - :raises ~azure.core.exceptions.HttpResponseError: - """ - _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) - _params = kwargs.pop("params", {}) or {} - - content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) - cls: ClsType[None] = kwargs.pop("cls", None) - polling: Union[bool, AsyncPollingMethod] = kwargs.pop("polling", True) - lro_delay = kwargs.pop("polling_interval", self._config.polling_interval) - cont_token: Optional[str] = kwargs.pop("continuation_token", None) - if cont_token is None: - raw_result = await self._rebalance_load_balancers_initial( - resource_group_name=resource_group_name, - resource_name=resource_name, - parameters=parameters, - content_type=content_type, - cls=lambda x, y, z: x, - headers=_headers, - params=_params, - **kwargs - ) - await raw_result.http_response.read() # type: ignore - kwargs.pop("error_map", None) - - def get_long_running_output(pipeline_response): # pylint: disable=inconsistent-return-statements - if cls: - return cls(pipeline_response, None, {}) # type: ignore - - path_format_arguments = { - "endpoint": self._serialize.url("self._config.base_url", self._config.base_url, "str", skip_quote=True), - } - - if polling is True: - polling_method: AsyncPollingMethod = cast( - AsyncPollingMethod, AsyncARMPolling(lro_delay, path_format_arguments=path_format_arguments, **kwargs) - ) - elif polling is False: - polling_method = cast(AsyncPollingMethod, AsyncNoPolling()) - else: - polling_method = polling - if cont_token: - return AsyncLROPoller[None].from_continuation_token( - polling_method=polling_method, - continuation_token=cont_token, - client=self._client, - deserialization_callback=get_long_running_output, - ) - return AsyncLROPoller[None](self._client, raw_result, get_long_running_output, polling_method) # type: ignore - - @distributed_trace_async - async def get_upgrade_profile( - self, resource_group_name: str, resource_name: str, **kwargs: Any - ) -> _models.ManagedClusterUpgradeProfile: - """Gets the upgrade profile of a managed cluster. - - :param resource_group_name: The name of the resource group. The name is case insensitive. - Required. - :type resource_group_name: str - :param resource_name: The name of the managed cluster resource. Required. - :type resource_name: str - :return: ManagedClusterUpgradeProfile. The ManagedClusterUpgradeProfile is compatible with - MutableMapping - :rtype: ~azure.mgmt.containerservice.models.ManagedClusterUpgradeProfile - :raises ~azure.core.exceptions.HttpResponseError: - """ - error_map: MutableMapping = { - 401: ClientAuthenticationError, - 404: ResourceNotFoundError, - 409: ResourceExistsError, - 304: ResourceNotModifiedError, - } - error_map.update(kwargs.pop("error_map", {}) or {}) - - _headers = kwargs.pop("headers", {}) or {} - _params = kwargs.pop("params", {}) or {} - - cls: ClsType[_models.ManagedClusterUpgradeProfile] = kwargs.pop("cls", None) - - _request = build_managed_clusters_get_upgrade_profile_request( - resource_group_name=resource_group_name, - resource_name=resource_name, - subscription_id=self._config.subscription_id, - api_version=self._config.api_version, - headers=_headers, - params=_params, - ) - path_format_arguments = { - "endpoint": self._serialize.url("self._config.base_url", self._config.base_url, "str", skip_quote=True), - } - _request.url = self._client.format_url(_request.url, **path_format_arguments) - - _decompress = kwargs.pop("decompress", True) - _stream = kwargs.pop("stream", False) - pipeline_response: PipelineResponse = await self._client._pipeline.run( # pylint: disable=protected-access - _request, stream=_stream, **kwargs - ) - - response = pipeline_response.http_response - - if response.status_code not in [200]: - if _stream: - try: - await response.read() # Load the body in memory and close the socket - except (StreamConsumedError, StreamClosedError): - pass - map_error(status_code=response.status_code, response=response, error_map=error_map) - error = _failsafe_deserialize( - _models.ErrorResponse, - response, - ) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - - if _stream: - deserialized = response.iter_bytes() if _decompress else response.iter_raw() - else: - deserialized = _deserialize(_models.ManagedClusterUpgradeProfile, response.json()) - - if cls: - return cls(pipeline_response, deserialized, {}) # type: ignore - - return deserialized # type: ignore - - @distributed_trace_async - async def get_guardrails_versions( - self, location: str, version: str, **kwargs: Any - ) -> _models.GuardrailsAvailableVersion: - """Gets supported Guardrails version in the specified subscription and location. - - Contains Guardrails version along with its support info and whether it is a default version. - - :param location: The name of the Azure region. Required. - :type location: str - :param version: Safeguards version. Required. - :type version: str - :return: GuardrailsAvailableVersion. The GuardrailsAvailableVersion is compatible with - MutableMapping - :rtype: ~azure.mgmt.containerservice.models.GuardrailsAvailableVersion + Contains extra metadata on the revision, including supported revisions, cluster compatibility + and available upgrades. + + :param location: The name of the Azure region. Required. + :type location: str + :param mode: The mode of the mesh. Required. + :type mode: str + :return: MeshRevisionProfile. The MeshRevisionProfile is compatible with MutableMapping + :rtype: ~azure.mgmt.containerservice.models.MeshRevisionProfile :raises ~azure.core.exceptions.HttpResponseError: """ error_map: MutableMapping = { @@ -4820,11 +4359,11 @@ async def get_guardrails_versions( _headers = kwargs.pop("headers", {}) or {} _params = kwargs.pop("params", {}) or {} - cls: ClsType[_models.GuardrailsAvailableVersion] = kwargs.pop("cls", None) + cls: ClsType[_models.MeshRevisionProfile] = kwargs.pop("cls", None) - _request = build_managed_clusters_get_guardrails_versions_request( + _request = build_managed_clusters_get_mesh_revision_profile_request( location=location, - version=version, + mode=mode, subscription_id=self._config.subscription_id, api_version=self._config.api_version, headers=_headers, @@ -4859,7 +4398,7 @@ async def get_guardrails_versions( if _stream: deserialized = response.iter_bytes() if _decompress else response.iter_raw() else: - deserialized = _deserialize(_models.GuardrailsAvailableVersion, response.json()) + deserialized = _deserialize(_models.MeshRevisionProfile, response.json()) if cls: return cls(pipeline_response, deserialized, {}) # type: ignore @@ -4867,25 +4406,25 @@ async def get_guardrails_versions( return deserialized # type: ignore @distributed_trace - def list_guardrails_versions( + def list_mesh_revision_profiles( self, location: str, **kwargs: Any - ) -> AsyncItemPaged["_models.GuardrailsAvailableVersion"]: - """Gets a list of supported Guardrails versions in the specified subscription and location. + ) -> AsyncItemPaged["_models.MeshRevisionProfile"]: + """Lists mesh revision profiles for all meshes in the specified location. - Contains list of Guardrails version along with its support info and whether it is a default - version. + Contains extra metadata on each revision, including supported revisions, cluster compatibility + and available upgrades. :param location: The name of the Azure region. Required. :type location: str - :return: An iterator like instance of GuardrailsAvailableVersion + :return: An iterator like instance of MeshRevisionProfile :rtype: - ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.containerservice.models.GuardrailsAvailableVersion] + ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.containerservice.models.MeshRevisionProfile] :raises ~azure.core.exceptions.HttpResponseError: """ _headers = kwargs.pop("headers", {}) or {} _params = kwargs.pop("params", {}) or {} - cls: ClsType[List[_models.GuardrailsAvailableVersion]] = kwargs.pop("cls", None) + cls: ClsType[List[_models.MeshRevisionProfile]] = kwargs.pop("cls", None) error_map: MutableMapping = { 401: ClientAuthenticationError, @@ -4898,7 +4437,7 @@ def list_guardrails_versions( def prepare_request(next_link=None): if not next_link: - _request = build_managed_clusters_list_guardrails_versions_request( + _request = build_managed_clusters_list_mesh_revision_profiles_request( location=location, subscription_id=self._config.subscription_id, api_version=self._config.api_version, @@ -4940,7 +4479,7 @@ def prepare_request(next_link=None): async def extract_data(pipeline_response): deserialized = pipeline_response.http_response.json() list_of_elem = _deserialize( - List[_models.GuardrailsAvailableVersion], + List[_models.MeshRevisionProfile], deserialized.get("value", []), ) if cls: @@ -4969,20 +4508,20 @@ async def get_next(next_link=None): return AsyncItemPaged(get_next, extract_data) @distributed_trace_async - async def get_safeguards_versions( - self, location: str, version: str, **kwargs: Any - ) -> _models.SafeguardsAvailableVersion: - """Gets supported Safeguards version in the specified subscription and location. - - Contains Safeguards version along with its support info and whether it is a default version. + async def get_mesh_upgrade_profile( + self, resource_group_name: str, resource_name: str, mode: str, **kwargs: Any + ) -> _models.MeshUpgradeProfile: + """Gets available upgrades for a service mesh in a cluster. - :param location: The name of the Azure region. Required. - :type location: str - :param version: Safeguards version. Required. - :type version: str - :return: SafeguardsAvailableVersion. The SafeguardsAvailableVersion is compatible with - MutableMapping - :rtype: ~azure.mgmt.containerservice.models.SafeguardsAvailableVersion + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param resource_name: The name of the managed cluster resource. Required. + :type resource_name: str + :param mode: The mode of the mesh. Required. + :type mode: str + :return: MeshUpgradeProfile. The MeshUpgradeProfile is compatible with MutableMapping + :rtype: ~azure.mgmt.containerservice.models.MeshUpgradeProfile :raises ~azure.core.exceptions.HttpResponseError: """ error_map: MutableMapping = { @@ -4996,11 +4535,12 @@ async def get_safeguards_versions( _headers = kwargs.pop("headers", {}) or {} _params = kwargs.pop("params", {}) or {} - cls: ClsType[_models.SafeguardsAvailableVersion] = kwargs.pop("cls", None) + cls: ClsType[_models.MeshUpgradeProfile] = kwargs.pop("cls", None) - _request = build_managed_clusters_get_safeguards_versions_request( - location=location, - version=version, + _request = build_managed_clusters_get_mesh_upgrade_profile_request( + resource_group_name=resource_group_name, + resource_name=resource_name, + mode=mode, subscription_id=self._config.subscription_id, api_version=self._config.api_version, headers=_headers, @@ -5035,7 +4575,7 @@ async def get_safeguards_versions( if _stream: deserialized = response.iter_bytes() if _decompress else response.iter_raw() else: - deserialized = _deserialize(_models.SafeguardsAvailableVersion, response.json()) + deserialized = _deserialize(_models.MeshUpgradeProfile, response.json()) if cls: return cls(pipeline_response, deserialized, {}) # type: ignore @@ -5043,25 +4583,25 @@ async def get_safeguards_versions( return deserialized # type: ignore @distributed_trace - def list_safeguards_versions( - self, location: str, **kwargs: Any - ) -> AsyncItemPaged["_models.SafeguardsAvailableVersion"]: - """Gets a list of supported Safeguards versions in the specified subscription and location. - - Contains list of Safeguards version along with its support info and whether it is a default - version. + def list_mesh_upgrade_profiles( + self, resource_group_name: str, resource_name: str, **kwargs: Any + ) -> AsyncItemPaged["_models.MeshUpgradeProfile"]: + """Lists available upgrades for all service meshes in a specific cluster. - :param location: The name of the Azure region. Required. - :type location: str - :return: An iterator like instance of SafeguardsAvailableVersion + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param resource_name: The name of the managed cluster resource. Required. + :type resource_name: str + :return: An iterator like instance of MeshUpgradeProfile :rtype: - ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.containerservice.models.SafeguardsAvailableVersion] + ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.containerservice.models.MeshUpgradeProfile] :raises ~azure.core.exceptions.HttpResponseError: """ _headers = kwargs.pop("headers", {}) or {} _params = kwargs.pop("params", {}) or {} - cls: ClsType[List[_models.SafeguardsAvailableVersion]] = kwargs.pop("cls", None) + cls: ClsType[List[_models.MeshUpgradeProfile]] = kwargs.pop("cls", None) error_map: MutableMapping = { 401: ClientAuthenticationError, @@ -5074,8 +4614,9 @@ def list_safeguards_versions( def prepare_request(next_link=None): if not next_link: - _request = build_managed_clusters_list_safeguards_versions_request( - location=location, + _request = build_managed_clusters_list_mesh_upgrade_profiles_request( + resource_group_name=resource_group_name, + resource_name=resource_name, subscription_id=self._config.subscription_id, api_version=self._config.api_version, headers=_headers, @@ -5116,7 +4657,7 @@ def prepare_request(next_link=None): async def extract_data(pipeline_response): deserialized = pipeline_response.http_response.json() list_of_elem = _deserialize( - List[_models.SafeguardsAvailableVersion], + List[_models.MeshUpgradeProfile], deserialized.get("value", []), ) if cls: @@ -5145,18 +4686,17 @@ async def get_next(next_link=None): return AsyncItemPaged(get_next, extract_data) @distributed_trace_async - async def get_mesh_revision_profile(self, location: str, mode: str, **kwargs: Any) -> _models.MeshRevisionProfile: - """Gets a mesh revision profile for a specified mesh in the specified location. + async def list_kubernetes_versions(self, location: str, **kwargs: Any) -> _models.KubernetesVersionListResult: + """Gets a list of supported Kubernetes versions in the specified subscription. - Contains extra metadata on the revision, including supported revisions, cluster compatibility - and available upgrades. + Contains extra metadata on the version, including supported patch versions, capabilities, + available upgrades, and details on preview status of the version. :param location: The name of the Azure region. Required. :type location: str - :param mode: The mode of the mesh. Required. - :type mode: str - :return: MeshRevisionProfile. The MeshRevisionProfile is compatible with MutableMapping - :rtype: ~azure.mgmt.containerservice.models.MeshRevisionProfile + :return: KubernetesVersionListResult. The KubernetesVersionListResult is compatible with + MutableMapping + :rtype: ~azure.mgmt.containerservice.models.KubernetesVersionListResult :raises ~azure.core.exceptions.HttpResponseError: """ error_map: MutableMapping = { @@ -5170,11 +4710,10 @@ async def get_mesh_revision_profile(self, location: str, mode: str, **kwargs: An _headers = kwargs.pop("headers", {}) or {} _params = kwargs.pop("params", {}) or {} - cls: ClsType[_models.MeshRevisionProfile] = kwargs.pop("cls", None) + cls: ClsType[_models.KubernetesVersionListResult] = kwargs.pop("cls", None) - _request = build_managed_clusters_get_mesh_revision_profile_request( + _request = build_managed_clusters_list_kubernetes_versions_request( location=location, - mode=mode, subscription_id=self._config.subscription_id, api_version=self._config.api_version, headers=_headers, @@ -5209,130 +4748,48 @@ async def get_mesh_revision_profile(self, location: str, mode: str, **kwargs: An if _stream: deserialized = response.iter_bytes() if _decompress else response.iter_raw() else: - deserialized = _deserialize(_models.MeshRevisionProfile, response.json()) + deserialized = _deserialize(_models.KubernetesVersionListResult, response.json()) if cls: return cls(pipeline_response, deserialized, {}) # type: ignore return deserialized # type: ignore - @distributed_trace - def list_mesh_revision_profiles( - self, location: str, **kwargs: Any - ) -> AsyncItemPaged["_models.MeshRevisionProfile"]: - """Lists mesh revision profiles for all meshes in the specified location. - - Contains extra metadata on each revision, including supported revisions, cluster compatibility - and available upgrades. - - :param location: The name of the Azure region. Required. - :type location: str - :return: An iterator like instance of MeshRevisionProfile - :rtype: - ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.containerservice.models.MeshRevisionProfile] - :raises ~azure.core.exceptions.HttpResponseError: - """ - _headers = kwargs.pop("headers", {}) or {} - _params = kwargs.pop("params", {}) or {} - - cls: ClsType[List[_models.MeshRevisionProfile]] = kwargs.pop("cls", None) - - error_map: MutableMapping = { - 401: ClientAuthenticationError, - 404: ResourceNotFoundError, - 409: ResourceExistsError, - 304: ResourceNotModifiedError, - } - error_map.update(kwargs.pop("error_map", {}) or {}) - - def prepare_request(next_link=None): - if not next_link: - - _request = build_managed_clusters_list_mesh_revision_profiles_request( - location=location, - subscription_id=self._config.subscription_id, - api_version=self._config.api_version, - headers=_headers, - params=_params, - ) - path_format_arguments = { - "endpoint": self._serialize.url( - "self._config.base_url", self._config.base_url, "str", skip_quote=True - ), - } - _request.url = self._client.format_url(_request.url, **path_format_arguments) - - else: - # make call to next link with the client's api-version - _parsed_next_link = urllib.parse.urlparse(next_link) - _next_request_params = case_insensitive_dict( - { - key: [urllib.parse.quote(v) for v in value] - for key, value in urllib.parse.parse_qs(_parsed_next_link.query).items() - } - ) - _next_request_params["api-version"] = self._config.api_version - _request = HttpRequest( - "GET", - urllib.parse.urljoin(next_link, _parsed_next_link.path), - headers=_headers, - params=_next_request_params, - ) - path_format_arguments = { - "endpoint": self._serialize.url( - "self._config.base_url", self._config.base_url, "str", skip_quote=True - ), - } - _request.url = self._client.format_url(_request.url, **path_format_arguments) - - return _request - - async def extract_data(pipeline_response): - deserialized = pipeline_response.http_response.json() - list_of_elem = _deserialize( - List[_models.MeshRevisionProfile], - deserialized.get("value", []), - ) - if cls: - list_of_elem = cls(list_of_elem) # type: ignore - return deserialized.get("nextLink") or None, AsyncList(list_of_elem) - - async def get_next(next_link=None): - _request = prepare_request(next_link) - - _stream = False - pipeline_response: PipelineResponse = await self._client._pipeline.run( # pylint: disable=protected-access - _request, stream=_stream, **kwargs - ) - response = pipeline_response.http_response - if response.status_code not in [200]: - map_error(status_code=response.status_code, response=response, error_map=error_map) - error = _failsafe_deserialize( - _models.ErrorResponse, - response, - ) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) +class MaintenanceConfigurationsOperations: + """ + .. warning:: + **DO NOT** instantiate this class directly. - return pipeline_response + Instead, you should access the following operations through + :class:`~azure.mgmt.containerservice.aio.ContainerServiceClient`'s + :attr:`maintenance_configurations` attribute. + """ - return AsyncItemPaged(get_next, extract_data) + def __init__(self, *args, **kwargs) -> None: + input_args = list(args) + self._client: AsyncPipelineClient = input_args.pop(0) if input_args else kwargs.pop("client") + self._config: ContainerServiceClientConfiguration = input_args.pop(0) if input_args else kwargs.pop("config") + self._serialize: Serializer = input_args.pop(0) if input_args else kwargs.pop("serializer") + self._deserialize: Deserializer = input_args.pop(0) if input_args else kwargs.pop("deserializer") @distributed_trace_async - async def get_mesh_upgrade_profile( - self, resource_group_name: str, resource_name: str, mode: str, **kwargs: Any - ) -> _models.MeshUpgradeProfile: - """Gets available upgrades for a service mesh in a cluster. + async def get( + self, resource_group_name: str, resource_name: str, config_name: str, **kwargs: Any + ) -> _models.MaintenanceConfiguration: + """Gets the specified maintenance configuration of a managed cluster. :param resource_group_name: The name of the resource group. The name is case insensitive. Required. :type resource_group_name: str :param resource_name: The name of the managed cluster resource. Required. :type resource_name: str - :param mode: The mode of the mesh. Required. - :type mode: str - :return: MeshUpgradeProfile. The MeshUpgradeProfile is compatible with MutableMapping - :rtype: ~azure.mgmt.containerservice.models.MeshUpgradeProfile + :param config_name: The name of the maintenance configuration. Supported values are 'default', + 'aksManagedAutoUpgradeSchedule', or 'aksManagedNodeOSUpgradeSchedule'. Required. + :type config_name: str + :return: MaintenanceConfiguration. The MaintenanceConfiguration is compatible with + MutableMapping + :rtype: ~azure.mgmt.containerservice.models.MaintenanceConfiguration :raises ~azure.core.exceptions.HttpResponseError: """ error_map: MutableMapping = { @@ -5346,12 +4803,12 @@ async def get_mesh_upgrade_profile( _headers = kwargs.pop("headers", {}) or {} _params = kwargs.pop("params", {}) or {} - cls: ClsType[_models.MeshUpgradeProfile] = kwargs.pop("cls", None) + cls: ClsType[_models.MaintenanceConfiguration] = kwargs.pop("cls", None) - _request = build_managed_clusters_get_mesh_upgrade_profile_request( + _request = build_maintenance_configurations_get_request( resource_group_name=resource_group_name, resource_name=resource_name, - mode=mode, + config_name=config_name, subscription_id=self._config.subscription_id, api_version=self._config.api_version, headers=_headers, @@ -5386,128 +4843,135 @@ async def get_mesh_upgrade_profile( if _stream: deserialized = response.iter_bytes() if _decompress else response.iter_raw() else: - deserialized = _deserialize(_models.MeshUpgradeProfile, response.json()) + deserialized = _deserialize(_models.MaintenanceConfiguration, response.json()) if cls: return cls(pipeline_response, deserialized, {}) # type: ignore return deserialized # type: ignore - @distributed_trace - def list_mesh_upgrade_profiles( - self, resource_group_name: str, resource_name: str, **kwargs: Any - ) -> AsyncItemPaged["_models.MeshUpgradeProfile"]: - """Lists available upgrades for all service meshes in a specific cluster. + @overload + async def create_or_update( + self, + resource_group_name: str, + resource_name: str, + config_name: str, + parameters: _models.MaintenanceConfiguration, + *, + content_type: str = "application/json", + **kwargs: Any + ) -> _models.MaintenanceConfiguration: + """Creates or updates a maintenance configuration in the specified managed cluster. :param resource_group_name: The name of the resource group. The name is case insensitive. Required. :type resource_group_name: str :param resource_name: The name of the managed cluster resource. Required. :type resource_name: str - :return: An iterator like instance of MeshUpgradeProfile - :rtype: - ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.containerservice.models.MeshUpgradeProfile] + :param config_name: The name of the maintenance configuration. Supported values are 'default', + 'aksManagedAutoUpgradeSchedule', or 'aksManagedNodeOSUpgradeSchedule'. Required. + :type config_name: str + :param parameters: The maintenance configuration to create or update. Required. + :type parameters: ~azure.mgmt.containerservice.models.MaintenanceConfiguration + :keyword content_type: Body Parameter content-type. Content type parameter for JSON body. + Default value is "application/json". + :paramtype content_type: str + :return: MaintenanceConfiguration. The MaintenanceConfiguration is compatible with + MutableMapping + :rtype: ~azure.mgmt.containerservice.models.MaintenanceConfiguration :raises ~azure.core.exceptions.HttpResponseError: """ - _headers = kwargs.pop("headers", {}) or {} - _params = kwargs.pop("params", {}) or {} - cls: ClsType[List[_models.MeshUpgradeProfile]] = kwargs.pop("cls", None) + @overload + async def create_or_update( + self, + resource_group_name: str, + resource_name: str, + config_name: str, + parameters: JSON, + *, + content_type: str = "application/json", + **kwargs: Any + ) -> _models.MaintenanceConfiguration: + """Creates or updates a maintenance configuration in the specified managed cluster. - error_map: MutableMapping = { - 401: ClientAuthenticationError, - 404: ResourceNotFoundError, - 409: ResourceExistsError, - 304: ResourceNotModifiedError, - } - error_map.update(kwargs.pop("error_map", {}) or {}) + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param resource_name: The name of the managed cluster resource. Required. + :type resource_name: str + :param config_name: The name of the maintenance configuration. Supported values are 'default', + 'aksManagedAutoUpgradeSchedule', or 'aksManagedNodeOSUpgradeSchedule'. Required. + :type config_name: str + :param parameters: The maintenance configuration to create or update. Required. + :type parameters: JSON + :keyword content_type: Body Parameter content-type. Content type parameter for JSON body. + Default value is "application/json". + :paramtype content_type: str + :return: MaintenanceConfiguration. The MaintenanceConfiguration is compatible with + MutableMapping + :rtype: ~azure.mgmt.containerservice.models.MaintenanceConfiguration + :raises ~azure.core.exceptions.HttpResponseError: + """ - def prepare_request(next_link=None): - if not next_link: + @overload + async def create_or_update( + self, + resource_group_name: str, + resource_name: str, + config_name: str, + parameters: IO[bytes], + *, + content_type: str = "application/json", + **kwargs: Any + ) -> _models.MaintenanceConfiguration: + """Creates or updates a maintenance configuration in the specified managed cluster. - _request = build_managed_clusters_list_mesh_upgrade_profiles_request( - resource_group_name=resource_group_name, - resource_name=resource_name, - subscription_id=self._config.subscription_id, - api_version=self._config.api_version, - headers=_headers, - params=_params, - ) - path_format_arguments = { - "endpoint": self._serialize.url( - "self._config.base_url", self._config.base_url, "str", skip_quote=True - ), - } - _request.url = self._client.format_url(_request.url, **path_format_arguments) - - else: - # make call to next link with the client's api-version - _parsed_next_link = urllib.parse.urlparse(next_link) - _next_request_params = case_insensitive_dict( - { - key: [urllib.parse.quote(v) for v in value] - for key, value in urllib.parse.parse_qs(_parsed_next_link.query).items() - } - ) - _next_request_params["api-version"] = self._config.api_version - _request = HttpRequest( - "GET", - urllib.parse.urljoin(next_link, _parsed_next_link.path), - headers=_headers, - params=_next_request_params, - ) - path_format_arguments = { - "endpoint": self._serialize.url( - "self._config.base_url", self._config.base_url, "str", skip_quote=True - ), - } - _request.url = self._client.format_url(_request.url, **path_format_arguments) - - return _request - - async def extract_data(pipeline_response): - deserialized = pipeline_response.http_response.json() - list_of_elem = _deserialize( - List[_models.MeshUpgradeProfile], - deserialized.get("value", []), - ) - if cls: - list_of_elem = cls(list_of_elem) # type: ignore - return deserialized.get("nextLink") or None, AsyncList(list_of_elem) - - async def get_next(next_link=None): - _request = prepare_request(next_link) - - _stream = False - pipeline_response: PipelineResponse = await self._client._pipeline.run( # pylint: disable=protected-access - _request, stream=_stream, **kwargs - ) - response = pipeline_response.http_response - - if response.status_code not in [200]: - map_error(status_code=response.status_code, response=response, error_map=error_map) - error = _failsafe_deserialize( - _models.ErrorResponse, - response, - ) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - - return pipeline_response - - return AsyncItemPaged(get_next, extract_data) + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param resource_name: The name of the managed cluster resource. Required. + :type resource_name: str + :param config_name: The name of the maintenance configuration. Supported values are 'default', + 'aksManagedAutoUpgradeSchedule', or 'aksManagedNodeOSUpgradeSchedule'. Required. + :type config_name: str + :param parameters: The maintenance configuration to create or update. Required. + :type parameters: IO[bytes] + :keyword content_type: Body Parameter content-type. Content type parameter for binary body. + Default value is "application/json". + :paramtype content_type: str + :return: MaintenanceConfiguration. The MaintenanceConfiguration is compatible with + MutableMapping + :rtype: ~azure.mgmt.containerservice.models.MaintenanceConfiguration + :raises ~azure.core.exceptions.HttpResponseError: + """ @distributed_trace_async - async def list_kubernetes_versions(self, location: str, **kwargs: Any) -> _models.KubernetesVersionListResult: - """Gets a list of supported Kubernetes versions in the specified subscription. - - Contains extra metadata on the version, including supported patch versions, capabilities, - available upgrades, and details on preview status of the version. + async def create_or_update( + self, + resource_group_name: str, + resource_name: str, + config_name: str, + parameters: Union[_models.MaintenanceConfiguration, JSON, IO[bytes]], + **kwargs: Any + ) -> _models.MaintenanceConfiguration: + """Creates or updates a maintenance configuration in the specified managed cluster. - :param location: The name of the Azure region. Required. - :type location: str - :return: KubernetesVersionListResult. The KubernetesVersionListResult is compatible with + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param resource_name: The name of the managed cluster resource. Required. + :type resource_name: str + :param config_name: The name of the maintenance configuration. Supported values are 'default', + 'aksManagedAutoUpgradeSchedule', or 'aksManagedNodeOSUpgradeSchedule'. Required. + :type config_name: str + :param parameters: The maintenance configuration to create or update. Is one of the following + types: MaintenanceConfiguration, JSON, IO[bytes] Required. + :type parameters: ~azure.mgmt.containerservice.models.MaintenanceConfiguration or JSON or + IO[bytes] + :return: MaintenanceConfiguration. The MaintenanceConfiguration is compatible with MutableMapping - :rtype: ~azure.mgmt.containerservice.models.KubernetesVersionListResult + :rtype: ~azure.mgmt.containerservice.models.MaintenanceConfiguration :raises ~azure.core.exceptions.HttpResponseError: """ error_map: MutableMapping = { @@ -5518,15 +4982,27 @@ async def list_kubernetes_versions(self, location: str, **kwargs: Any) -> _model } error_map.update(kwargs.pop("error_map", {}) or {}) - _headers = kwargs.pop("headers", {}) or {} + _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) _params = kwargs.pop("params", {}) or {} - cls: ClsType[_models.KubernetesVersionListResult] = kwargs.pop("cls", None) + content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) + cls: ClsType[_models.MaintenanceConfiguration] = kwargs.pop("cls", None) - _request = build_managed_clusters_list_kubernetes_versions_request( - location=location, + content_type = content_type or "application/json" + _content = None + if isinstance(parameters, (IOBase, bytes)): + _content = parameters + else: + _content = json.dumps(parameters, cls=SdkJSONEncoder, exclude_readonly=True) # type: ignore + + _request = build_maintenance_configurations_create_or_update_request( + resource_group_name=resource_group_name, + resource_name=resource_name, + config_name=config_name, subscription_id=self._config.subscription_id, + content_type=content_type, api_version=self._config.api_version, + content=_content, headers=_headers, params=_params, ) @@ -5543,7 +5019,7 @@ async def list_kubernetes_versions(self, location: str, **kwargs: Any) -> _model response = pipeline_response.http_response - if response.status_code not in [200]: + if response.status_code not in [200, 201]: if _stream: try: await response.read() # Load the body in memory and close the socket @@ -5559,36 +5035,16 @@ async def list_kubernetes_versions(self, location: str, **kwargs: Any) -> _model if _stream: deserialized = response.iter_bytes() if _decompress else response.iter_raw() else: - deserialized = _deserialize(_models.KubernetesVersionListResult, response.json()) + deserialized = _deserialize(_models.MaintenanceConfiguration, response.json()) if cls: return cls(pipeline_response, deserialized, {}) # type: ignore return deserialized # type: ignore - -class MaintenanceConfigurationsOperations: - """ - .. warning:: - **DO NOT** instantiate this class directly. - - Instead, you should access the following operations through - :class:`~azure.mgmt.containerservice.aio.ContainerServiceClient`'s - :attr:`maintenance_configurations` attribute. - """ - - def __init__(self, *args, **kwargs) -> None: - input_args = list(args) - self._client: AsyncPipelineClient = input_args.pop(0) if input_args else kwargs.pop("client") - self._config: ContainerServiceClientConfiguration = input_args.pop(0) if input_args else kwargs.pop("config") - self._serialize: Serializer = input_args.pop(0) if input_args else kwargs.pop("serializer") - self._deserialize: Deserializer = input_args.pop(0) if input_args else kwargs.pop("deserializer") - @distributed_trace_async - async def get( - self, resource_group_name: str, resource_name: str, config_name: str, **kwargs: Any - ) -> _models.MaintenanceConfiguration: - """Gets the specified maintenance configuration of a managed cluster. + async def delete(self, resource_group_name: str, resource_name: str, config_name: str, **kwargs: Any) -> None: + """Deletes a maintenance configuration. :param resource_group_name: The name of the resource group. The name is case insensitive. Required. @@ -5598,9 +5054,8 @@ async def get( :param config_name: The name of the maintenance configuration. Supported values are 'default', 'aksManagedAutoUpgradeSchedule', or 'aksManagedNodeOSUpgradeSchedule'. Required. :type config_name: str - :return: MaintenanceConfiguration. The MaintenanceConfiguration is compatible with - MutableMapping - :rtype: ~azure.mgmt.containerservice.models.MaintenanceConfiguration + :return: None + :rtype: None :raises ~azure.core.exceptions.HttpResponseError: """ error_map: MutableMapping = { @@ -5614,9 +5069,9 @@ async def get( _headers = kwargs.pop("headers", {}) or {} _params = kwargs.pop("params", {}) or {} - cls: ClsType[_models.MaintenanceConfiguration] = kwargs.pop("cls", None) + cls: ClsType[None] = kwargs.pop("cls", None) - _request = build_maintenance_configurations_get_request( + _request = build_maintenance_configurations_delete_request( resource_group_name=resource_group_name, resource_name=resource_name, config_name=config_name, @@ -5630,20 +5085,14 @@ async def get( } _request.url = self._client.format_url(_request.url, **path_format_arguments) - _decompress = kwargs.pop("decompress", True) - _stream = kwargs.pop("stream", False) + _stream = False pipeline_response: PipelineResponse = await self._client._pipeline.run( # pylint: disable=protected-access _request, stream=_stream, **kwargs ) response = pipeline_response.http_response - if response.status_code not in [200]: - if _stream: - try: - await response.read() # Load the body in memory and close the socket - except (StreamConsumedError, StreamClosedError): - pass + if response.status_code not in [200, 204]: map_error(status_code=response.status_code, response=response, error_map=error_map) error = _failsafe_deserialize( _models.ErrorResponse, @@ -5651,289 +5100,29 @@ async def get( ) raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - if _stream: - deserialized = response.iter_bytes() if _decompress else response.iter_raw() - else: - deserialized = _deserialize(_models.MaintenanceConfiguration, response.json()) - if cls: - return cls(pipeline_response, deserialized, {}) # type: ignore - - return deserialized # type: ignore + return cls(pipeline_response, None, {}) # type: ignore - @overload - async def create_or_update( - self, - resource_group_name: str, - resource_name: str, - config_name: str, - parameters: _models.MaintenanceConfiguration, - *, - content_type: str = "application/json", - **kwargs: Any - ) -> _models.MaintenanceConfiguration: - """Creates or updates a maintenance configuration in the specified managed cluster. + @distributed_trace + def list_by_managed_cluster( + self, resource_group_name: str, resource_name: str, **kwargs: Any + ) -> AsyncItemPaged["_models.MaintenanceConfiguration"]: + """Gets a list of maintenance configurations in the specified managed cluster. :param resource_group_name: The name of the resource group. The name is case insensitive. Required. :type resource_group_name: str :param resource_name: The name of the managed cluster resource. Required. :type resource_name: str - :param config_name: The name of the maintenance configuration. Supported values are 'default', - 'aksManagedAutoUpgradeSchedule', or 'aksManagedNodeOSUpgradeSchedule'. Required. - :type config_name: str - :param parameters: The maintenance configuration to create or update. Required. - :type parameters: ~azure.mgmt.containerservice.models.MaintenanceConfiguration - :keyword content_type: Body Parameter content-type. Content type parameter for JSON body. - Default value is "application/json". - :paramtype content_type: str - :return: MaintenanceConfiguration. The MaintenanceConfiguration is compatible with - MutableMapping - :rtype: ~azure.mgmt.containerservice.models.MaintenanceConfiguration + :return: An iterator like instance of MaintenanceConfiguration + :rtype: + ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.containerservice.models.MaintenanceConfiguration] :raises ~azure.core.exceptions.HttpResponseError: """ + _headers = kwargs.pop("headers", {}) or {} + _params = kwargs.pop("params", {}) or {} - @overload - async def create_or_update( - self, - resource_group_name: str, - resource_name: str, - config_name: str, - parameters: JSON, - *, - content_type: str = "application/json", - **kwargs: Any - ) -> _models.MaintenanceConfiguration: - """Creates or updates a maintenance configuration in the specified managed cluster. - - :param resource_group_name: The name of the resource group. The name is case insensitive. - Required. - :type resource_group_name: str - :param resource_name: The name of the managed cluster resource. Required. - :type resource_name: str - :param config_name: The name of the maintenance configuration. Supported values are 'default', - 'aksManagedAutoUpgradeSchedule', or 'aksManagedNodeOSUpgradeSchedule'. Required. - :type config_name: str - :param parameters: The maintenance configuration to create or update. Required. - :type parameters: JSON - :keyword content_type: Body Parameter content-type. Content type parameter for JSON body. - Default value is "application/json". - :paramtype content_type: str - :return: MaintenanceConfiguration. The MaintenanceConfiguration is compatible with - MutableMapping - :rtype: ~azure.mgmt.containerservice.models.MaintenanceConfiguration - :raises ~azure.core.exceptions.HttpResponseError: - """ - - @overload - async def create_or_update( - self, - resource_group_name: str, - resource_name: str, - config_name: str, - parameters: IO[bytes], - *, - content_type: str = "application/json", - **kwargs: Any - ) -> _models.MaintenanceConfiguration: - """Creates or updates a maintenance configuration in the specified managed cluster. - - :param resource_group_name: The name of the resource group. The name is case insensitive. - Required. - :type resource_group_name: str - :param resource_name: The name of the managed cluster resource. Required. - :type resource_name: str - :param config_name: The name of the maintenance configuration. Supported values are 'default', - 'aksManagedAutoUpgradeSchedule', or 'aksManagedNodeOSUpgradeSchedule'. Required. - :type config_name: str - :param parameters: The maintenance configuration to create or update. Required. - :type parameters: IO[bytes] - :keyword content_type: Body Parameter content-type. Content type parameter for binary body. - Default value is "application/json". - :paramtype content_type: str - :return: MaintenanceConfiguration. The MaintenanceConfiguration is compatible with - MutableMapping - :rtype: ~azure.mgmt.containerservice.models.MaintenanceConfiguration - :raises ~azure.core.exceptions.HttpResponseError: - """ - - @distributed_trace_async - async def create_or_update( - self, - resource_group_name: str, - resource_name: str, - config_name: str, - parameters: Union[_models.MaintenanceConfiguration, JSON, IO[bytes]], - **kwargs: Any - ) -> _models.MaintenanceConfiguration: - """Creates or updates a maintenance configuration in the specified managed cluster. - - :param resource_group_name: The name of the resource group. The name is case insensitive. - Required. - :type resource_group_name: str - :param resource_name: The name of the managed cluster resource. Required. - :type resource_name: str - :param config_name: The name of the maintenance configuration. Supported values are 'default', - 'aksManagedAutoUpgradeSchedule', or 'aksManagedNodeOSUpgradeSchedule'. Required. - :type config_name: str - :param parameters: The maintenance configuration to create or update. Is one of the following - types: MaintenanceConfiguration, JSON, IO[bytes] Required. - :type parameters: ~azure.mgmt.containerservice.models.MaintenanceConfiguration or JSON or - IO[bytes] - :return: MaintenanceConfiguration. The MaintenanceConfiguration is compatible with - MutableMapping - :rtype: ~azure.mgmt.containerservice.models.MaintenanceConfiguration - :raises ~azure.core.exceptions.HttpResponseError: - """ - error_map: MutableMapping = { - 401: ClientAuthenticationError, - 404: ResourceNotFoundError, - 409: ResourceExistsError, - 304: ResourceNotModifiedError, - } - error_map.update(kwargs.pop("error_map", {}) or {}) - - _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) - _params = kwargs.pop("params", {}) or {} - - content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) - cls: ClsType[_models.MaintenanceConfiguration] = kwargs.pop("cls", None) - - content_type = content_type or "application/json" - _content = None - if isinstance(parameters, (IOBase, bytes)): - _content = parameters - else: - _content = json.dumps(parameters, cls=SdkJSONEncoder, exclude_readonly=True) # type: ignore - - _request = build_maintenance_configurations_create_or_update_request( - resource_group_name=resource_group_name, - resource_name=resource_name, - config_name=config_name, - subscription_id=self._config.subscription_id, - content_type=content_type, - api_version=self._config.api_version, - content=_content, - headers=_headers, - params=_params, - ) - path_format_arguments = { - "endpoint": self._serialize.url("self._config.base_url", self._config.base_url, "str", skip_quote=True), - } - _request.url = self._client.format_url(_request.url, **path_format_arguments) - - _decompress = kwargs.pop("decompress", True) - _stream = kwargs.pop("stream", False) - pipeline_response: PipelineResponse = await self._client._pipeline.run( # pylint: disable=protected-access - _request, stream=_stream, **kwargs - ) - - response = pipeline_response.http_response - - if response.status_code not in [200, 201]: - if _stream: - try: - await response.read() # Load the body in memory and close the socket - except (StreamConsumedError, StreamClosedError): - pass - map_error(status_code=response.status_code, response=response, error_map=error_map) - error = _failsafe_deserialize( - _models.ErrorResponse, - response, - ) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - - if _stream: - deserialized = response.iter_bytes() if _decompress else response.iter_raw() - else: - deserialized = _deserialize(_models.MaintenanceConfiguration, response.json()) - - if cls: - return cls(pipeline_response, deserialized, {}) # type: ignore - - return deserialized # type: ignore - - @distributed_trace_async - async def delete(self, resource_group_name: str, resource_name: str, config_name: str, **kwargs: Any) -> None: - """Deletes a maintenance configuration. - - :param resource_group_name: The name of the resource group. The name is case insensitive. - Required. - :type resource_group_name: str - :param resource_name: The name of the managed cluster resource. Required. - :type resource_name: str - :param config_name: The name of the maintenance configuration. Supported values are 'default', - 'aksManagedAutoUpgradeSchedule', or 'aksManagedNodeOSUpgradeSchedule'. Required. - :type config_name: str - :return: None - :rtype: None - :raises ~azure.core.exceptions.HttpResponseError: - """ - error_map: MutableMapping = { - 401: ClientAuthenticationError, - 404: ResourceNotFoundError, - 409: ResourceExistsError, - 304: ResourceNotModifiedError, - } - error_map.update(kwargs.pop("error_map", {}) or {}) - - _headers = kwargs.pop("headers", {}) or {} - _params = kwargs.pop("params", {}) or {} - - cls: ClsType[None] = kwargs.pop("cls", None) - - _request = build_maintenance_configurations_delete_request( - resource_group_name=resource_group_name, - resource_name=resource_name, - config_name=config_name, - subscription_id=self._config.subscription_id, - api_version=self._config.api_version, - headers=_headers, - params=_params, - ) - path_format_arguments = { - "endpoint": self._serialize.url("self._config.base_url", self._config.base_url, "str", skip_quote=True), - } - _request.url = self._client.format_url(_request.url, **path_format_arguments) - - _stream = False - pipeline_response: PipelineResponse = await self._client._pipeline.run( # pylint: disable=protected-access - _request, stream=_stream, **kwargs - ) - - response = pipeline_response.http_response - - if response.status_code not in [200, 204]: - map_error(status_code=response.status_code, response=response, error_map=error_map) - error = _failsafe_deserialize( - _models.ErrorResponse, - response, - ) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - - if cls: - return cls(pipeline_response, None, {}) # type: ignore - - @distributed_trace - def list_by_managed_cluster( - self, resource_group_name: str, resource_name: str, **kwargs: Any - ) -> AsyncItemPaged["_models.MaintenanceConfiguration"]: - """Gets a list of maintenance configurations in the specified managed cluster. - - :param resource_group_name: The name of the resource group. The name is case insensitive. - Required. - :type resource_group_name: str - :param resource_name: The name of the managed cluster resource. Required. - :type resource_name: str - :return: An iterator like instance of MaintenanceConfiguration - :rtype: - ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.containerservice.models.MaintenanceConfiguration] - :raises ~azure.core.exceptions.HttpResponseError: - """ - _headers = kwargs.pop("headers", {}) or {} - _params = kwargs.pop("params", {}) or {} - - cls: ClsType[List[_models.MaintenanceConfiguration]] = kwargs.pop("cls", None) + cls: ClsType[List[_models.MaintenanceConfiguration]] = kwargs.pop("cls", None) error_map: MutableMapping = { 401: ClientAuthenticationError, @@ -6960,74 +6149,170 @@ async def get( return deserialized # type: ignore - @api_version_validation( - method_added_on="2026-03-02-preview", - params_added_on={ - "2026-03-02-preview": [ - "api_version", - "subscription_id", - "resource_group_name", - "resource_name", - "agent_pool_name", - "machine_name", - "content_type", - "accept", - "etag", - "match_condition", - ] - }, - api_versions_list=["2026-03-02-preview"], - ) - async def _create_or_update_initial( - self, - resource_group_name: str, - resource_name: str, - agent_pool_name: str, - machine_name: str, - parameters: Union[_models.Machine, JSON, IO[bytes]], - *, - etag: Optional[str] = None, - match_condition: Optional[MatchConditions] = None, - **kwargs: Any - ) -> AsyncIterator[bytes]: + @distributed_trace + def list( + self, resource_group_name: str, resource_name: str, agent_pool_name: str, **kwargs: Any + ) -> AsyncItemPaged["_models.Machine"]: + """Gets a list of machines in the specified agent pool. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param resource_name: The name of the managed cluster resource. Required. + :type resource_name: str + :param agent_pool_name: The name of the agent pool. Required. + :type agent_pool_name: str + :return: An iterator like instance of Machine + :rtype: ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.containerservice.models.Machine] + :raises ~azure.core.exceptions.HttpResponseError: + """ + _headers = kwargs.pop("headers", {}) or {} + _params = kwargs.pop("params", {}) or {} + + cls: ClsType[List[_models.Machine]] = kwargs.pop("cls", None) + error_map: MutableMapping = { 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError, 304: ResourceNotModifiedError, } - if match_condition == MatchConditions.IfNotModified: - error_map[412] = ResourceModifiedError - elif match_condition == MatchConditions.IfPresent: - error_map[412] = ResourceNotFoundError - elif match_condition == MatchConditions.IfMissing: - error_map[412] = ResourceExistsError error_map.update(kwargs.pop("error_map", {}) or {}) - _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) - _params = kwargs.pop("params", {}) or {} + def prepare_request(next_link=None): + if not next_link: - content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) - cls: ClsType[AsyncIterator[bytes]] = kwargs.pop("cls", None) + _request = build_machines_list_request( + resource_group_name=resource_group_name, + resource_name=resource_name, + agent_pool_name=agent_pool_name, + subscription_id=self._config.subscription_id, + api_version=self._config.api_version, + headers=_headers, + params=_params, + ) + path_format_arguments = { + "endpoint": self._serialize.url( + "self._config.base_url", self._config.base_url, "str", skip_quote=True + ), + } + _request.url = self._client.format_url(_request.url, **path_format_arguments) - content_type = content_type or "application/json" - _content = None - if isinstance(parameters, (IOBase, bytes)): - _content = parameters - else: - _content = json.dumps(parameters, cls=SdkJSONEncoder, exclude_readonly=True) # type: ignore + else: + # make call to next link with the client's api-version + _parsed_next_link = urllib.parse.urlparse(next_link) + _next_request_params = case_insensitive_dict( + { + key: [urllib.parse.quote(v) for v in value] + for key, value in urllib.parse.parse_qs(_parsed_next_link.query).items() + } + ) + _next_request_params["api-version"] = self._config.api_version + _request = HttpRequest( + "GET", + urllib.parse.urljoin(next_link, _parsed_next_link.path), + headers=_headers, + params=_next_request_params, + ) + path_format_arguments = { + "endpoint": self._serialize.url( + "self._config.base_url", self._config.base_url, "str", skip_quote=True + ), + } + _request.url = self._client.format_url(_request.url, **path_format_arguments) + + return _request + + async def extract_data(pipeline_response): + deserialized = pipeline_response.http_response.json() + list_of_elem = _deserialize( + List[_models.Machine], + deserialized.get("value", []), + ) + if cls: + list_of_elem = cls(list_of_elem) # type: ignore + return deserialized.get("nextLink") or None, AsyncList(list_of_elem) + + async def get_next(next_link=None): + _request = prepare_request(next_link) + + _stream = False + pipeline_response: PipelineResponse = await self._client._pipeline.run( # pylint: disable=protected-access + _request, stream=_stream, **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + error = _failsafe_deserialize( + _models.ErrorResponse, + response, + ) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + return pipeline_response + + return AsyncItemPaged(get_next, extract_data) + + +class PrivateEndpointConnectionsOperations: + """ + .. warning:: + **DO NOT** instantiate this class directly. + + Instead, you should access the following operations through + :class:`~azure.mgmt.containerservice.aio.ContainerServiceClient`'s + :attr:`private_endpoint_connections` attribute. + """ + + def __init__(self, *args, **kwargs) -> None: + input_args = list(args) + self._client: AsyncPipelineClient = input_args.pop(0) if input_args else kwargs.pop("client") + self._config: ContainerServiceClientConfiguration = input_args.pop(0) if input_args else kwargs.pop("config") + self._serialize: Serializer = input_args.pop(0) if input_args else kwargs.pop("serializer") + self._deserialize: Deserializer = input_args.pop(0) if input_args else kwargs.pop("deserializer") + + @distributed_trace_async + async def get( + self, resource_group_name: str, resource_name: str, private_endpoint_connection_name: str, **kwargs: Any + ) -> _models.PrivateEndpointConnection: + """Gets the specified private endpoint connection. + + To learn more about private clusters, see: + `https://docs.microsoft.com/azure/aks/private-clusters + `_. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param resource_name: The name of the managed cluster resource. Required. + :type resource_name: str + :param private_endpoint_connection_name: The name of the private endpoint connection. Required. + :type private_endpoint_connection_name: str + :return: PrivateEndpointConnection. The PrivateEndpointConnection is compatible with + MutableMapping + :rtype: ~azure.mgmt.containerservice.models.PrivateEndpointConnection + :raises ~azure.core.exceptions.HttpResponseError: + """ + error_map: MutableMapping = { + 401: ClientAuthenticationError, + 404: ResourceNotFoundError, + 409: ResourceExistsError, + 304: ResourceNotModifiedError, + } + error_map.update(kwargs.pop("error_map", {}) or {}) + + _headers = kwargs.pop("headers", {}) or {} + _params = kwargs.pop("params", {}) or {} - _request = build_machines_create_or_update_request( + cls: ClsType[_models.PrivateEndpointConnection] = kwargs.pop("cls", None) + + _request = build_private_endpoint_connections_get_request( resource_group_name=resource_group_name, resource_name=resource_name, - agent_pool_name=agent_pool_name, - machine_name=machine_name, + private_endpoint_connection_name=private_endpoint_connection_name, subscription_id=self._config.subscription_id, - etag=etag, - match_condition=match_condition, - content_type=content_type, api_version=self._config.api_version, - content=_content, headers=_headers, params=_params, ) @@ -7037,18 +6322,19 @@ async def _create_or_update_initial( _request.url = self._client.format_url(_request.url, **path_format_arguments) _decompress = kwargs.pop("decompress", True) - _stream = True + _stream = kwargs.pop("stream", False) pipeline_response: PipelineResponse = await self._client._pipeline.run( # pylint: disable=protected-access _request, stream=_stream, **kwargs ) response = pipeline_response.http_response - if response.status_code not in [200, 201]: - try: - await response.read() # Load the body in memory and close the socket - except (StreamConsumedError, StreamClosedError): - pass + if response.status_code not in [200]: + if _stream: + try: + await response.read() # Load the body in memory and close the socket + except (StreamConsumedError, StreamClosedError): + pass map_error(status_code=response.status_code, response=response, error_map=error_map) error = _failsafe_deserialize( _models.ErrorResponse, @@ -7056,386 +6342,119 @@ async def _create_or_update_initial( ) raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - response_headers = {} - if response.status_code == 201: - response_headers["Azure-AsyncOperation"] = self._deserialize( - "str", response.headers.get("Azure-AsyncOperation") - ) - response_headers["Retry-After"] = self._deserialize("int", response.headers.get("Retry-After")) - - deserialized = response.iter_bytes() if _decompress else response.iter_raw() + if _stream: + deserialized = response.iter_bytes() if _decompress else response.iter_raw() + else: + deserialized = _deserialize(_models.PrivateEndpointConnection, response.json()) if cls: - return cls(pipeline_response, deserialized, response_headers) # type: ignore + return cls(pipeline_response, deserialized, {}) # type: ignore return deserialized # type: ignore @overload - async def begin_create_or_update( + async def update( self, resource_group_name: str, resource_name: str, - agent_pool_name: str, - machine_name: str, - parameters: _models.Machine, + private_endpoint_connection_name: str, + parameters: _models.PrivateEndpointConnection, *, content_type: str = "application/json", - etag: Optional[str] = None, - match_condition: Optional[MatchConditions] = None, **kwargs: Any - ) -> AsyncLROPoller[_models.Machine]: - """Creates or updates a machine in the specified agent pool. + ) -> _models.PrivateEndpointConnection: + """Updates a private endpoint connection. :param resource_group_name: The name of the resource group. The name is case insensitive. Required. :type resource_group_name: str :param resource_name: The name of the managed cluster resource. Required. :type resource_name: str - :param agent_pool_name: The name of the agent pool. Required. - :type agent_pool_name: str - :param machine_name: Host name of the machine. Required. - :type machine_name: str - :param parameters: The machine to create or update. Required. - :type parameters: ~azure.mgmt.containerservice.models.Machine + :param private_endpoint_connection_name: The name of the private endpoint connection. Required. + :type private_endpoint_connection_name: str + :param parameters: The updated private endpoint connection. Required. + :type parameters: ~azure.mgmt.containerservice.models.PrivateEndpointConnection :keyword content_type: Body Parameter content-type. Content type parameter for JSON body. Default value is "application/json". :paramtype content_type: str - :keyword etag: check if resource is changed. Set None to skip checking etag. Default value is - None. - :paramtype etag: str - :keyword match_condition: The match condition to use upon the etag. Default value is None. - :paramtype match_condition: ~azure.core.MatchConditions - :return: An instance of AsyncLROPoller that returns Machine. The Machine is compatible with + :return: PrivateEndpointConnection. The PrivateEndpointConnection is compatible with MutableMapping - :rtype: ~azure.core.polling.AsyncLROPoller[~azure.mgmt.containerservice.models.Machine] + :rtype: ~azure.mgmt.containerservice.models.PrivateEndpointConnection :raises ~azure.core.exceptions.HttpResponseError: """ @overload - async def begin_create_or_update( + async def update( self, resource_group_name: str, resource_name: str, - agent_pool_name: str, - machine_name: str, + private_endpoint_connection_name: str, parameters: JSON, *, content_type: str = "application/json", - etag: Optional[str] = None, - match_condition: Optional[MatchConditions] = None, **kwargs: Any - ) -> AsyncLROPoller[_models.Machine]: - """Creates or updates a machine in the specified agent pool. + ) -> _models.PrivateEndpointConnection: + """Updates a private endpoint connection. :param resource_group_name: The name of the resource group. The name is case insensitive. Required. :type resource_group_name: str :param resource_name: The name of the managed cluster resource. Required. :type resource_name: str - :param agent_pool_name: The name of the agent pool. Required. - :type agent_pool_name: str - :param machine_name: Host name of the machine. Required. - :type machine_name: str - :param parameters: The machine to create or update. Required. + :param private_endpoint_connection_name: The name of the private endpoint connection. Required. + :type private_endpoint_connection_name: str + :param parameters: The updated private endpoint connection. Required. :type parameters: JSON :keyword content_type: Body Parameter content-type. Content type parameter for JSON body. Default value is "application/json". :paramtype content_type: str - :keyword etag: check if resource is changed. Set None to skip checking etag. Default value is - None. - :paramtype etag: str - :keyword match_condition: The match condition to use upon the etag. Default value is None. - :paramtype match_condition: ~azure.core.MatchConditions - :return: An instance of AsyncLROPoller that returns Machine. The Machine is compatible with + :return: PrivateEndpointConnection. The PrivateEndpointConnection is compatible with MutableMapping - :rtype: ~azure.core.polling.AsyncLROPoller[~azure.mgmt.containerservice.models.Machine] + :rtype: ~azure.mgmt.containerservice.models.PrivateEndpointConnection :raises ~azure.core.exceptions.HttpResponseError: """ @overload - async def begin_create_or_update( + async def update( self, resource_group_name: str, resource_name: str, - agent_pool_name: str, - machine_name: str, + private_endpoint_connection_name: str, parameters: IO[bytes], *, content_type: str = "application/json", - etag: Optional[str] = None, - match_condition: Optional[MatchConditions] = None, **kwargs: Any - ) -> AsyncLROPoller[_models.Machine]: - """Creates or updates a machine in the specified agent pool. + ) -> _models.PrivateEndpointConnection: + """Updates a private endpoint connection. :param resource_group_name: The name of the resource group. The name is case insensitive. Required. :type resource_group_name: str :param resource_name: The name of the managed cluster resource. Required. :type resource_name: str - :param agent_pool_name: The name of the agent pool. Required. - :type agent_pool_name: str - :param machine_name: Host name of the machine. Required. - :type machine_name: str - :param parameters: The machine to create or update. Required. + :param private_endpoint_connection_name: The name of the private endpoint connection. Required. + :type private_endpoint_connection_name: str + :param parameters: The updated private endpoint connection. Required. :type parameters: IO[bytes] :keyword content_type: Body Parameter content-type. Content type parameter for binary body. Default value is "application/json". :paramtype content_type: str - :keyword etag: check if resource is changed. Set None to skip checking etag. Default value is - None. - :paramtype etag: str - :keyword match_condition: The match condition to use upon the etag. Default value is None. - :paramtype match_condition: ~azure.core.MatchConditions - :return: An instance of AsyncLROPoller that returns Machine. The Machine is compatible with + :return: PrivateEndpointConnection. The PrivateEndpointConnection is compatible with MutableMapping - :rtype: ~azure.core.polling.AsyncLROPoller[~azure.mgmt.containerservice.models.Machine] + :rtype: ~azure.mgmt.containerservice.models.PrivateEndpointConnection :raises ~azure.core.exceptions.HttpResponseError: """ @distributed_trace_async - @api_version_validation( - method_added_on="2026-03-02-preview", - params_added_on={ - "2026-03-02-preview": [ - "api_version", - "subscription_id", - "resource_group_name", - "resource_name", - "agent_pool_name", - "machine_name", - "content_type", - "accept", - "etag", - "match_condition", - ] - }, - api_versions_list=["2026-03-02-preview"], - ) - async def begin_create_or_update( + async def update( self, resource_group_name: str, resource_name: str, - agent_pool_name: str, - machine_name: str, - parameters: Union[_models.Machine, JSON, IO[bytes]], - *, - etag: Optional[str] = None, - match_condition: Optional[MatchConditions] = None, + private_endpoint_connection_name: str, + parameters: Union[_models.PrivateEndpointConnection, JSON, IO[bytes]], **kwargs: Any - ) -> AsyncLROPoller[_models.Machine]: - """Creates or updates a machine in the specified agent pool. - - :param resource_group_name: The name of the resource group. The name is case insensitive. - Required. - :type resource_group_name: str - :param resource_name: The name of the managed cluster resource. Required. - :type resource_name: str - :param agent_pool_name: The name of the agent pool. Required. - :type agent_pool_name: str - :param machine_name: Host name of the machine. Required. - :type machine_name: str - :param parameters: The machine to create or update. Is one of the following types: Machine, - JSON, IO[bytes] Required. - :type parameters: ~azure.mgmt.containerservice.models.Machine or JSON or IO[bytes] - :keyword etag: check if resource is changed. Set None to skip checking etag. Default value is - None. - :paramtype etag: str - :keyword match_condition: The match condition to use upon the etag. Default value is None. - :paramtype match_condition: ~azure.core.MatchConditions - :return: An instance of AsyncLROPoller that returns Machine. The Machine is compatible with - MutableMapping - :rtype: ~azure.core.polling.AsyncLROPoller[~azure.mgmt.containerservice.models.Machine] - :raises ~azure.core.exceptions.HttpResponseError: - """ - _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) - _params = kwargs.pop("params", {}) or {} - - content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) - cls: ClsType[_models.Machine] = kwargs.pop("cls", None) - polling: Union[bool, AsyncPollingMethod] = kwargs.pop("polling", True) - lro_delay = kwargs.pop("polling_interval", self._config.polling_interval) - cont_token: Optional[str] = kwargs.pop("continuation_token", None) - if cont_token is None: - raw_result = await self._create_or_update_initial( - resource_group_name=resource_group_name, - resource_name=resource_name, - agent_pool_name=agent_pool_name, - machine_name=machine_name, - parameters=parameters, - etag=etag, - match_condition=match_condition, - content_type=content_type, - cls=lambda x, y, z: x, - headers=_headers, - params=_params, - **kwargs - ) - await raw_result.http_response.read() # type: ignore - kwargs.pop("error_map", None) - - def get_long_running_output(pipeline_response): - response = pipeline_response.http_response - deserialized = _deserialize(_models.Machine, response.json()) - if cls: - return cls(pipeline_response, deserialized, {}) # type: ignore - return deserialized - - path_format_arguments = { - "endpoint": self._serialize.url("self._config.base_url", self._config.base_url, "str", skip_quote=True), - } - - if polling is True: - polling_method: AsyncPollingMethod = cast( - AsyncPollingMethod, AsyncARMPolling(lro_delay, path_format_arguments=path_format_arguments, **kwargs) - ) - elif polling is False: - polling_method = cast(AsyncPollingMethod, AsyncNoPolling()) - else: - polling_method = polling - if cont_token: - return AsyncLROPoller[_models.Machine].from_continuation_token( - polling_method=polling_method, - continuation_token=cont_token, - client=self._client, - deserialization_callback=get_long_running_output, - ) - return AsyncLROPoller[_models.Machine]( - self._client, raw_result, get_long_running_output, polling_method # type: ignore - ) - - @distributed_trace - def list( - self, resource_group_name: str, resource_name: str, agent_pool_name: str, **kwargs: Any - ) -> AsyncItemPaged["_models.Machine"]: - """Gets a list of machines in the specified agent pool. - - :param resource_group_name: The name of the resource group. The name is case insensitive. - Required. - :type resource_group_name: str - :param resource_name: The name of the managed cluster resource. Required. - :type resource_name: str - :param agent_pool_name: The name of the agent pool. Required. - :type agent_pool_name: str - :return: An iterator like instance of Machine - :rtype: ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.containerservice.models.Machine] - :raises ~azure.core.exceptions.HttpResponseError: - """ - _headers = kwargs.pop("headers", {}) or {} - _params = kwargs.pop("params", {}) or {} - - cls: ClsType[List[_models.Machine]] = kwargs.pop("cls", None) - - error_map: MutableMapping = { - 401: ClientAuthenticationError, - 404: ResourceNotFoundError, - 409: ResourceExistsError, - 304: ResourceNotModifiedError, - } - error_map.update(kwargs.pop("error_map", {}) or {}) - - def prepare_request(next_link=None): - if not next_link: - - _request = build_machines_list_request( - resource_group_name=resource_group_name, - resource_name=resource_name, - agent_pool_name=agent_pool_name, - subscription_id=self._config.subscription_id, - api_version=self._config.api_version, - headers=_headers, - params=_params, - ) - path_format_arguments = { - "endpoint": self._serialize.url( - "self._config.base_url", self._config.base_url, "str", skip_quote=True - ), - } - _request.url = self._client.format_url(_request.url, **path_format_arguments) - - else: - # make call to next link with the client's api-version - _parsed_next_link = urllib.parse.urlparse(next_link) - _next_request_params = case_insensitive_dict( - { - key: [urllib.parse.quote(v) for v in value] - for key, value in urllib.parse.parse_qs(_parsed_next_link.query).items() - } - ) - _next_request_params["api-version"] = self._config.api_version - _request = HttpRequest( - "GET", - urllib.parse.urljoin(next_link, _parsed_next_link.path), - headers=_headers, - params=_next_request_params, - ) - path_format_arguments = { - "endpoint": self._serialize.url( - "self._config.base_url", self._config.base_url, "str", skip_quote=True - ), - } - _request.url = self._client.format_url(_request.url, **path_format_arguments) - - return _request - - async def extract_data(pipeline_response): - deserialized = pipeline_response.http_response.json() - list_of_elem = _deserialize( - List[_models.Machine], - deserialized.get("value", []), - ) - if cls: - list_of_elem = cls(list_of_elem) # type: ignore - return deserialized.get("nextLink") or None, AsyncList(list_of_elem) - - async def get_next(next_link=None): - _request = prepare_request(next_link) - - _stream = False - pipeline_response: PipelineResponse = await self._client._pipeline.run( # pylint: disable=protected-access - _request, stream=_stream, **kwargs - ) - response = pipeline_response.http_response - - if response.status_code not in [200]: - map_error(status_code=response.status_code, response=response, error_map=error_map) - error = _failsafe_deserialize( - _models.ErrorResponse, - response, - ) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - - return pipeline_response - - return AsyncItemPaged(get_next, extract_data) - - -class PrivateEndpointConnectionsOperations: - """ - .. warning:: - **DO NOT** instantiate this class directly. - - Instead, you should access the following operations through - :class:`~azure.mgmt.containerservice.aio.ContainerServiceClient`'s - :attr:`private_endpoint_connections` attribute. - """ - - def __init__(self, *args, **kwargs) -> None: - input_args = list(args) - self._client: AsyncPipelineClient = input_args.pop(0) if input_args else kwargs.pop("client") - self._config: ContainerServiceClientConfiguration = input_args.pop(0) if input_args else kwargs.pop("config") - self._serialize: Serializer = input_args.pop(0) if input_args else kwargs.pop("serializer") - self._deserialize: Deserializer = input_args.pop(0) if input_args else kwargs.pop("deserializer") - - @distributed_trace_async - async def get( - self, resource_group_name: str, resource_name: str, private_endpoint_connection_name: str, **kwargs: Any ) -> _models.PrivateEndpointConnection: - """Gets the specified private endpoint connection. - - To learn more about private clusters, see: - `https://docs.microsoft.com/azure/aks/private-clusters - `_. + """Updates a private endpoint connection. :param resource_group_name: The name of the resource group. The name is case insensitive. Required. @@ -7444,6 +6463,10 @@ async def get( :type resource_name: str :param private_endpoint_connection_name: The name of the private endpoint connection. Required. :type private_endpoint_connection_name: str + :param parameters: The updated private endpoint connection. Is one of the following types: + PrivateEndpointConnection, JSON, IO[bytes] Required. + :type parameters: ~azure.mgmt.containerservice.models.PrivateEndpointConnection or JSON or + IO[bytes] :return: PrivateEndpointConnection. The PrivateEndpointConnection is compatible with MutableMapping :rtype: ~azure.mgmt.containerservice.models.PrivateEndpointConnection @@ -7457,17 +6480,27 @@ async def get( } error_map.update(kwargs.pop("error_map", {}) or {}) - _headers = kwargs.pop("headers", {}) or {} + _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) _params = kwargs.pop("params", {}) or {} + content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) cls: ClsType[_models.PrivateEndpointConnection] = kwargs.pop("cls", None) - _request = build_private_endpoint_connections_get_request( + content_type = content_type or "application/json" + _content = None + if isinstance(parameters, (IOBase, bytes)): + _content = parameters + else: + _content = json.dumps(parameters, cls=SdkJSONEncoder, exclude_readonly=True) # type: ignore + + _request = build_private_endpoint_connections_update_request( resource_group_name=resource_group_name, resource_name=resource_name, private_endpoint_connection_name=private_endpoint_connection_name, subscription_id=self._config.subscription_id, + content_type=content_type, api_version=self._config.api_version, + content=_content, headers=_headers, params=_params, ) @@ -7484,7 +6517,7 @@ async def get( response = pipeline_response.http_response - if response.status_code not in [200]: + if response.status_code not in [200, 201]: if _stream: try: await response.read() # Load the body in memory and close the socket @@ -7507,204 +6540,16 @@ async def get( return deserialized # type: ignore - @overload - async def update( - self, - resource_group_name: str, - resource_name: str, - private_endpoint_connection_name: str, - parameters: _models.PrivateEndpointConnection, - *, - content_type: str = "application/json", - **kwargs: Any - ) -> _models.PrivateEndpointConnection: - """Updates a private endpoint connection. - - :param resource_group_name: The name of the resource group. The name is case insensitive. - Required. - :type resource_group_name: str - :param resource_name: The name of the managed cluster resource. Required. - :type resource_name: str - :param private_endpoint_connection_name: The name of the private endpoint connection. Required. - :type private_endpoint_connection_name: str - :param parameters: The updated private endpoint connection. Required. - :type parameters: ~azure.mgmt.containerservice.models.PrivateEndpointConnection - :keyword content_type: Body Parameter content-type. Content type parameter for JSON body. - Default value is "application/json". - :paramtype content_type: str - :return: PrivateEndpointConnection. The PrivateEndpointConnection is compatible with - MutableMapping - :rtype: ~azure.mgmt.containerservice.models.PrivateEndpointConnection - :raises ~azure.core.exceptions.HttpResponseError: - """ - - @overload - async def update( - self, - resource_group_name: str, - resource_name: str, - private_endpoint_connection_name: str, - parameters: JSON, - *, - content_type: str = "application/json", - **kwargs: Any - ) -> _models.PrivateEndpointConnection: - """Updates a private endpoint connection. - - :param resource_group_name: The name of the resource group. The name is case insensitive. - Required. - :type resource_group_name: str - :param resource_name: The name of the managed cluster resource. Required. - :type resource_name: str - :param private_endpoint_connection_name: The name of the private endpoint connection. Required. - :type private_endpoint_connection_name: str - :param parameters: The updated private endpoint connection. Required. - :type parameters: JSON - :keyword content_type: Body Parameter content-type. Content type parameter for JSON body. - Default value is "application/json". - :paramtype content_type: str - :return: PrivateEndpointConnection. The PrivateEndpointConnection is compatible with - MutableMapping - :rtype: ~azure.mgmt.containerservice.models.PrivateEndpointConnection - :raises ~azure.core.exceptions.HttpResponseError: - """ - - @overload - async def update( - self, - resource_group_name: str, - resource_name: str, - private_endpoint_connection_name: str, - parameters: IO[bytes], - *, - content_type: str = "application/json", - **kwargs: Any - ) -> _models.PrivateEndpointConnection: - """Updates a private endpoint connection. - - :param resource_group_name: The name of the resource group. The name is case insensitive. - Required. - :type resource_group_name: str - :param resource_name: The name of the managed cluster resource. Required. - :type resource_name: str - :param private_endpoint_connection_name: The name of the private endpoint connection. Required. - :type private_endpoint_connection_name: str - :param parameters: The updated private endpoint connection. Required. - :type parameters: IO[bytes] - :keyword content_type: Body Parameter content-type. Content type parameter for binary body. - Default value is "application/json". - :paramtype content_type: str - :return: PrivateEndpointConnection. The PrivateEndpointConnection is compatible with - MutableMapping - :rtype: ~azure.mgmt.containerservice.models.PrivateEndpointConnection - :raises ~azure.core.exceptions.HttpResponseError: - """ - - @distributed_trace_async - async def update( - self, - resource_group_name: str, - resource_name: str, - private_endpoint_connection_name: str, - parameters: Union[_models.PrivateEndpointConnection, JSON, IO[bytes]], - **kwargs: Any - ) -> _models.PrivateEndpointConnection: - """Updates a private endpoint connection. - - :param resource_group_name: The name of the resource group. The name is case insensitive. - Required. - :type resource_group_name: str - :param resource_name: The name of the managed cluster resource. Required. - :type resource_name: str - :param private_endpoint_connection_name: The name of the private endpoint connection. Required. - :type private_endpoint_connection_name: str - :param parameters: The updated private endpoint connection. Is one of the following types: - PrivateEndpointConnection, JSON, IO[bytes] Required. - :type parameters: ~azure.mgmt.containerservice.models.PrivateEndpointConnection or JSON or - IO[bytes] - :return: PrivateEndpointConnection. The PrivateEndpointConnection is compatible with - MutableMapping - :rtype: ~azure.mgmt.containerservice.models.PrivateEndpointConnection - :raises ~azure.core.exceptions.HttpResponseError: - """ - error_map: MutableMapping = { - 401: ClientAuthenticationError, - 404: ResourceNotFoundError, - 409: ResourceExistsError, - 304: ResourceNotModifiedError, - } - error_map.update(kwargs.pop("error_map", {}) or {}) - - _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) - _params = kwargs.pop("params", {}) or {} - - content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) - cls: ClsType[_models.PrivateEndpointConnection] = kwargs.pop("cls", None) - - content_type = content_type or "application/json" - _content = None - if isinstance(parameters, (IOBase, bytes)): - _content = parameters - else: - _content = json.dumps(parameters, cls=SdkJSONEncoder, exclude_readonly=True) # type: ignore - - _request = build_private_endpoint_connections_update_request( - resource_group_name=resource_group_name, - resource_name=resource_name, - private_endpoint_connection_name=private_endpoint_connection_name, - subscription_id=self._config.subscription_id, - content_type=content_type, - api_version=self._config.api_version, - content=_content, - headers=_headers, - params=_params, - ) - path_format_arguments = { - "endpoint": self._serialize.url("self._config.base_url", self._config.base_url, "str", skip_quote=True), - } - _request.url = self._client.format_url(_request.url, **path_format_arguments) - - _decompress = kwargs.pop("decompress", True) - _stream = kwargs.pop("stream", False) - pipeline_response: PipelineResponse = await self._client._pipeline.run( # pylint: disable=protected-access - _request, stream=_stream, **kwargs - ) - - response = pipeline_response.http_response - - if response.status_code not in [200, 201]: - if _stream: - try: - await response.read() # Load the body in memory and close the socket - except (StreamConsumedError, StreamClosedError): - pass - map_error(status_code=response.status_code, response=response, error_map=error_map) - error = _failsafe_deserialize( - _models.ErrorResponse, - response, - ) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - - if _stream: - deserialized = response.iter_bytes() if _decompress else response.iter_raw() - else: - deserialized = _deserialize(_models.PrivateEndpointConnection, response.json()) - - if cls: - return cls(pipeline_response, deserialized, {}) # type: ignore - - return deserialized # type: ignore - - async def _delete_initial( - self, resource_group_name: str, resource_name: str, private_endpoint_connection_name: str, **kwargs: Any - ) -> AsyncIterator[bytes]: - error_map: MutableMapping = { - 401: ClientAuthenticationError, - 404: ResourceNotFoundError, - 409: ResourceExistsError, - 304: ResourceNotModifiedError, - } - error_map.update(kwargs.pop("error_map", {}) or {}) + async def _delete_initial( + self, resource_group_name: str, resource_name: str, private_endpoint_connection_name: str, **kwargs: Any + ) -> AsyncIterator[bytes]: + error_map: MutableMapping = { + 401: ClientAuthenticationError, + 404: ResourceNotFoundError, + 409: ResourceExistsError, + 304: ResourceNotModifiedError, + } + error_map.update(kwargs.pop("error_map", {}) or {}) _headers = kwargs.pop("headers", {}) or {} _params = kwargs.pop("params", {}) or {} @@ -8574,14 +7419,14 @@ async def get_next(next_link=None): return AsyncItemPaged(get_next, extract_data) -class ManagedClusterSnapshotsOperations: +class TrustedAccessRoleBindingsOperations: """ .. warning:: **DO NOT** instantiate this class directly. Instead, you should access the following operations through :class:`~azure.mgmt.containerservice.aio.ContainerServiceClient`'s - :attr:`managed_cluster_snapshots` attribute. + :attr:`trusted_access_role_bindings` attribute. """ def __init__(self, *args, **kwargs) -> None: @@ -8592,23 +7437,21 @@ def __init__(self, *args, **kwargs) -> None: self._deserialize: Deserializer = input_args.pop(0) if input_args else kwargs.pop("deserializer") @distributed_trace_async - @api_version_validation( - method_added_on="2026-03-02-preview", - params_added_on={ - "2026-03-02-preview": ["api_version", "subscription_id", "resource_group_name", "resource_name", "accept"] - }, - api_versions_list=["2026-03-02-preview"], - ) - async def get(self, resource_group_name: str, resource_name: str, **kwargs: Any) -> _models.ManagedClusterSnapshot: - """Gets a managed cluster snapshot. + async def get( + self, resource_group_name: str, resource_name: str, trusted_access_role_binding_name: str, **kwargs: Any + ) -> _models.TrustedAccessRoleBinding: + """Get a trusted access role binding. :param resource_group_name: The name of the resource group. The name is case insensitive. Required. :type resource_group_name: str :param resource_name: The name of the managed cluster resource. Required. :type resource_name: str - :return: ManagedClusterSnapshot. The ManagedClusterSnapshot is compatible with MutableMapping - :rtype: ~azure.mgmt.containerservice.models.ManagedClusterSnapshot + :param trusted_access_role_binding_name: The name of trusted access role binding. Required. + :type trusted_access_role_binding_name: str + :return: TrustedAccessRoleBinding. The TrustedAccessRoleBinding is compatible with + MutableMapping + :rtype: ~azure.mgmt.containerservice.models.TrustedAccessRoleBinding :raises ~azure.core.exceptions.HttpResponseError: """ error_map: MutableMapping = { @@ -8622,11 +7465,12 @@ async def get(self, resource_group_name: str, resource_name: str, **kwargs: Any) _headers = kwargs.pop("headers", {}) or {} _params = kwargs.pop("params", {}) or {} - cls: ClsType[_models.ManagedClusterSnapshot] = kwargs.pop("cls", None) + cls: ClsType[_models.TrustedAccessRoleBinding] = kwargs.pop("cls", None) - _request = build_managed_cluster_snapshots_get_request( + _request = build_trusted_access_role_bindings_get_request( resource_group_name=resource_group_name, resource_name=resource_name, + trusted_access_role_binding_name=trusted_access_role_binding_name, subscription_id=self._config.subscription_id, api_version=self._config.api_version, headers=_headers, @@ -8661,155 +7505,46 @@ async def get(self, resource_group_name: str, resource_name: str, **kwargs: Any) if _stream: deserialized = response.iter_bytes() if _decompress else response.iter_raw() else: - deserialized = _deserialize(_models.ManagedClusterSnapshot, response.json()) + deserialized = _deserialize(_models.TrustedAccessRoleBinding, response.json()) if cls: return cls(pipeline_response, deserialized, {}) # type: ignore return deserialized # type: ignore - @overload - async def create_or_update( + async def _create_or_update_initial( self, resource_group_name: str, resource_name: str, - parameters: _models.ManagedClusterSnapshot, - *, - content_type: str = "application/json", + trusted_access_role_binding_name: str, + trusted_access_role_binding: Union[_models.TrustedAccessRoleBinding, JSON, IO[bytes]], **kwargs: Any - ) -> _models.ManagedClusterSnapshot: - """Creates or updates a managed cluster snapshot. + ) -> AsyncIterator[bytes]: + error_map: MutableMapping = { + 401: ClientAuthenticationError, + 404: ResourceNotFoundError, + 409: ResourceExistsError, + 304: ResourceNotModifiedError, + } + error_map.update(kwargs.pop("error_map", {}) or {}) - :param resource_group_name: The name of the resource group. The name is case insensitive. - Required. - :type resource_group_name: str - :param resource_name: The name of the managed cluster resource. Required. - :type resource_name: str - :param parameters: The managed cluster snapshot to create or update. Required. - :type parameters: ~azure.mgmt.containerservice.models.ManagedClusterSnapshot - :keyword content_type: Body Parameter content-type. Content type parameter for JSON body. - Default value is "application/json". - :paramtype content_type: str - :return: ManagedClusterSnapshot. The ManagedClusterSnapshot is compatible with MutableMapping - :rtype: ~azure.mgmt.containerservice.models.ManagedClusterSnapshot - :raises ~azure.core.exceptions.HttpResponseError: - """ + _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) + _params = kwargs.pop("params", {}) or {} - @overload - async def create_or_update( - self, - resource_group_name: str, - resource_name: str, - parameters: JSON, - *, - content_type: str = "application/json", - **kwargs: Any - ) -> _models.ManagedClusterSnapshot: - """Creates or updates a managed cluster snapshot. + content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) + cls: ClsType[AsyncIterator[bytes]] = kwargs.pop("cls", None) - :param resource_group_name: The name of the resource group. The name is case insensitive. - Required. - :type resource_group_name: str - :param resource_name: The name of the managed cluster resource. Required. - :type resource_name: str - :param parameters: The managed cluster snapshot to create or update. Required. - :type parameters: JSON - :keyword content_type: Body Parameter content-type. Content type parameter for JSON body. - Default value is "application/json". - :paramtype content_type: str - :return: ManagedClusterSnapshot. The ManagedClusterSnapshot is compatible with MutableMapping - :rtype: ~azure.mgmt.containerservice.models.ManagedClusterSnapshot - :raises ~azure.core.exceptions.HttpResponseError: - """ + content_type = content_type or "application/json" + _content = None + if isinstance(trusted_access_role_binding, (IOBase, bytes)): + _content = trusted_access_role_binding + else: + _content = json.dumps(trusted_access_role_binding, cls=SdkJSONEncoder, exclude_readonly=True) # type: ignore - @overload - async def create_or_update( - self, - resource_group_name: str, - resource_name: str, - parameters: IO[bytes], - *, - content_type: str = "application/json", - **kwargs: Any - ) -> _models.ManagedClusterSnapshot: - """Creates or updates a managed cluster snapshot. - - :param resource_group_name: The name of the resource group. The name is case insensitive. - Required. - :type resource_group_name: str - :param resource_name: The name of the managed cluster resource. Required. - :type resource_name: str - :param parameters: The managed cluster snapshot to create or update. Required. - :type parameters: IO[bytes] - :keyword content_type: Body Parameter content-type. Content type parameter for binary body. - Default value is "application/json". - :paramtype content_type: str - :return: ManagedClusterSnapshot. The ManagedClusterSnapshot is compatible with MutableMapping - :rtype: ~azure.mgmt.containerservice.models.ManagedClusterSnapshot - :raises ~azure.core.exceptions.HttpResponseError: - """ - - @distributed_trace_async - @api_version_validation( - method_added_on="2026-03-02-preview", - params_added_on={ - "2026-03-02-preview": [ - "api_version", - "subscription_id", - "resource_group_name", - "resource_name", - "content_type", - "accept", - ] - }, - api_versions_list=["2026-03-02-preview"], - ) - async def create_or_update( - self, - resource_group_name: str, - resource_name: str, - parameters: Union[_models.ManagedClusterSnapshot, JSON, IO[bytes]], - **kwargs: Any - ) -> _models.ManagedClusterSnapshot: - """Creates or updates a managed cluster snapshot. - - :param resource_group_name: The name of the resource group. The name is case insensitive. - Required. - :type resource_group_name: str - :param resource_name: The name of the managed cluster resource. Required. - :type resource_name: str - :param parameters: The managed cluster snapshot to create or update. Is one of the following - types: ManagedClusterSnapshot, JSON, IO[bytes] Required. - :type parameters: ~azure.mgmt.containerservice.models.ManagedClusterSnapshot or JSON or - IO[bytes] - :return: ManagedClusterSnapshot. The ManagedClusterSnapshot is compatible with MutableMapping - :rtype: ~azure.mgmt.containerservice.models.ManagedClusterSnapshot - :raises ~azure.core.exceptions.HttpResponseError: - """ - error_map: MutableMapping = { - 401: ClientAuthenticationError, - 404: ResourceNotFoundError, - 409: ResourceExistsError, - 304: ResourceNotModifiedError, - } - error_map.update(kwargs.pop("error_map", {}) or {}) - - _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) - _params = kwargs.pop("params", {}) or {} - - content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) - cls: ClsType[_models.ManagedClusterSnapshot] = kwargs.pop("cls", None) - - content_type = content_type or "application/json" - _content = None - if isinstance(parameters, (IOBase, bytes)): - _content = parameters - else: - _content = json.dumps(parameters, cls=SdkJSONEncoder, exclude_readonly=True) # type: ignore - - _request = build_managed_cluster_snapshots_create_or_update_request( + _request = build_trusted_access_role_bindings_create_or_update_request( resource_group_name=resource_group_name, resource_name=resource_name, + trusted_access_role_binding_name=trusted_access_role_binding_name, subscription_id=self._config.subscription_id, content_type=content_type, api_version=self._config.api_version, @@ -8823,7 +7558,7 @@ async def create_or_update( _request.url = self._client.format_url(_request.url, **path_format_arguments) _decompress = kwargs.pop("decompress", True) - _stream = kwargs.pop("stream", False) + _stream = True pipeline_response: PipelineResponse = await self._client._pipeline.run( # pylint: disable=protected-access _request, stream=_stream, **kwargs ) @@ -8831,11 +7566,10 @@ async def create_or_update( response = pipeline_response.http_response if response.status_code not in [200, 201]: - if _stream: - try: - await response.read() # Load the body in memory and close the socket - except (StreamConsumedError, StreamClosedError): - pass + try: + await response.read() # Load the body in memory and close the socket + except (StreamConsumedError, StreamClosedError): + pass map_error(status_code=response.status_code, response=response, error_map=error_map) error = _failsafe_deserialize( _models.ErrorResponse, @@ -8843,136 +7577,200 @@ async def create_or_update( ) raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - if _stream: - deserialized = response.iter_bytes() if _decompress else response.iter_raw() - else: - deserialized = _deserialize(_models.ManagedClusterSnapshot, response.json()) + response_headers = {} + if response.status_code == 201: + response_headers["Azure-AsyncOperation"] = self._deserialize( + "str", response.headers.get("Azure-AsyncOperation") + ) + response_headers["Retry-After"] = self._deserialize("int", response.headers.get("Retry-After")) + + deserialized = response.iter_bytes() if _decompress else response.iter_raw() if cls: - return cls(pipeline_response, deserialized, {}) # type: ignore + return cls(pipeline_response, deserialized, response_headers) # type: ignore return deserialized # type: ignore @overload - async def update_tags( + async def begin_create_or_update( self, resource_group_name: str, resource_name: str, - parameters: _models.TagsObject, + trusted_access_role_binding_name: str, + trusted_access_role_binding: _models.TrustedAccessRoleBinding, *, content_type: str = "application/json", **kwargs: Any - ) -> _models.ManagedClusterSnapshot: - """Updates tags on a managed cluster snapshot. + ) -> AsyncLROPoller[_models.TrustedAccessRoleBinding]: + """Create or update a trusted access role binding. :param resource_group_name: The name of the resource group. The name is case insensitive. Required. :type resource_group_name: str :param resource_name: The name of the managed cluster resource. Required. :type resource_name: str - :param parameters: Parameters supplied to the Update managed cluster snapshot Tags operation. - Required. - :type parameters: ~azure.mgmt.containerservice.models.TagsObject + :param trusted_access_role_binding_name: The name of trusted access role binding. Required. + :type trusted_access_role_binding_name: str + :param trusted_access_role_binding: A trusted access role binding. Required. + :type trusted_access_role_binding: ~azure.mgmt.containerservice.models.TrustedAccessRoleBinding :keyword content_type: Body Parameter content-type. Content type parameter for JSON body. Default value is "application/json". :paramtype content_type: str - :return: ManagedClusterSnapshot. The ManagedClusterSnapshot is compatible with MutableMapping - :rtype: ~azure.mgmt.containerservice.models.ManagedClusterSnapshot + :return: An instance of AsyncLROPoller that returns TrustedAccessRoleBinding. The + TrustedAccessRoleBinding is compatible with MutableMapping + :rtype: + ~azure.core.polling.AsyncLROPoller[~azure.mgmt.containerservice.models.TrustedAccessRoleBinding] :raises ~azure.core.exceptions.HttpResponseError: """ @overload - async def update_tags( + async def begin_create_or_update( self, resource_group_name: str, resource_name: str, - parameters: JSON, + trusted_access_role_binding_name: str, + trusted_access_role_binding: JSON, *, content_type: str = "application/json", **kwargs: Any - ) -> _models.ManagedClusterSnapshot: - """Updates tags on a managed cluster snapshot. + ) -> AsyncLROPoller[_models.TrustedAccessRoleBinding]: + """Create or update a trusted access role binding. :param resource_group_name: The name of the resource group. The name is case insensitive. Required. :type resource_group_name: str :param resource_name: The name of the managed cluster resource. Required. :type resource_name: str - :param parameters: Parameters supplied to the Update managed cluster snapshot Tags operation. - Required. - :type parameters: JSON + :param trusted_access_role_binding_name: The name of trusted access role binding. Required. + :type trusted_access_role_binding_name: str + :param trusted_access_role_binding: A trusted access role binding. Required. + :type trusted_access_role_binding: JSON :keyword content_type: Body Parameter content-type. Content type parameter for JSON body. Default value is "application/json". :paramtype content_type: str - :return: ManagedClusterSnapshot. The ManagedClusterSnapshot is compatible with MutableMapping - :rtype: ~azure.mgmt.containerservice.models.ManagedClusterSnapshot + :return: An instance of AsyncLROPoller that returns TrustedAccessRoleBinding. The + TrustedAccessRoleBinding is compatible with MutableMapping + :rtype: + ~azure.core.polling.AsyncLROPoller[~azure.mgmt.containerservice.models.TrustedAccessRoleBinding] :raises ~azure.core.exceptions.HttpResponseError: """ @overload - async def update_tags( + async def begin_create_or_update( self, resource_group_name: str, resource_name: str, - parameters: IO[bytes], + trusted_access_role_binding_name: str, + trusted_access_role_binding: IO[bytes], *, content_type: str = "application/json", **kwargs: Any - ) -> _models.ManagedClusterSnapshot: - """Updates tags on a managed cluster snapshot. + ) -> AsyncLROPoller[_models.TrustedAccessRoleBinding]: + """Create or update a trusted access role binding. :param resource_group_name: The name of the resource group. The name is case insensitive. Required. :type resource_group_name: str :param resource_name: The name of the managed cluster resource. Required. :type resource_name: str - :param parameters: Parameters supplied to the Update managed cluster snapshot Tags operation. - Required. - :type parameters: IO[bytes] + :param trusted_access_role_binding_name: The name of trusted access role binding. Required. + :type trusted_access_role_binding_name: str + :param trusted_access_role_binding: A trusted access role binding. Required. + :type trusted_access_role_binding: IO[bytes] :keyword content_type: Body Parameter content-type. Content type parameter for binary body. Default value is "application/json". :paramtype content_type: str - :return: ManagedClusterSnapshot. The ManagedClusterSnapshot is compatible with MutableMapping - :rtype: ~azure.mgmt.containerservice.models.ManagedClusterSnapshot + :return: An instance of AsyncLROPoller that returns TrustedAccessRoleBinding. The + TrustedAccessRoleBinding is compatible with MutableMapping + :rtype: + ~azure.core.polling.AsyncLROPoller[~azure.mgmt.containerservice.models.TrustedAccessRoleBinding] :raises ~azure.core.exceptions.HttpResponseError: """ @distributed_trace_async - @api_version_validation( - method_added_on="2026-03-02-preview", - params_added_on={ - "2026-03-02-preview": [ - "api_version", - "subscription_id", - "resource_group_name", - "resource_name", - "content_type", - "accept", - ] - }, - api_versions_list=["2026-03-02-preview"], - ) - async def update_tags( + async def begin_create_or_update( self, resource_group_name: str, resource_name: str, - parameters: Union[_models.TagsObject, JSON, IO[bytes]], + trusted_access_role_binding_name: str, + trusted_access_role_binding: Union[_models.TrustedAccessRoleBinding, JSON, IO[bytes]], **kwargs: Any - ) -> _models.ManagedClusterSnapshot: - """Updates tags on a managed cluster snapshot. + ) -> AsyncLROPoller[_models.TrustedAccessRoleBinding]: + """Create or update a trusted access role binding. :param resource_group_name: The name of the resource group. The name is case insensitive. Required. :type resource_group_name: str :param resource_name: The name of the managed cluster resource. Required. :type resource_name: str - :param parameters: Parameters supplied to the Update managed cluster snapshot Tags operation. - Is one of the following types: TagsObject, JSON, IO[bytes] Required. - :type parameters: ~azure.mgmt.containerservice.models.TagsObject or JSON or IO[bytes] - :return: ManagedClusterSnapshot. The ManagedClusterSnapshot is compatible with MutableMapping - :rtype: ~azure.mgmt.containerservice.models.ManagedClusterSnapshot + :param trusted_access_role_binding_name: The name of trusted access role binding. Required. + :type trusted_access_role_binding_name: str + :param trusted_access_role_binding: A trusted access role binding. Is one of the following + types: TrustedAccessRoleBinding, JSON, IO[bytes] Required. + :type trusted_access_role_binding: ~azure.mgmt.containerservice.models.TrustedAccessRoleBinding + or JSON or IO[bytes] + :return: An instance of AsyncLROPoller that returns TrustedAccessRoleBinding. The + TrustedAccessRoleBinding is compatible with MutableMapping + :rtype: + ~azure.core.polling.AsyncLROPoller[~azure.mgmt.containerservice.models.TrustedAccessRoleBinding] :raises ~azure.core.exceptions.HttpResponseError: """ + _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) + _params = kwargs.pop("params", {}) or {} + + content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) + cls: ClsType[_models.TrustedAccessRoleBinding] = kwargs.pop("cls", None) + polling: Union[bool, AsyncPollingMethod] = kwargs.pop("polling", True) + lro_delay = kwargs.pop("polling_interval", self._config.polling_interval) + cont_token: Optional[str] = kwargs.pop("continuation_token", None) + if cont_token is None: + raw_result = await self._create_or_update_initial( + resource_group_name=resource_group_name, + resource_name=resource_name, + trusted_access_role_binding_name=trusted_access_role_binding_name, + trusted_access_role_binding=trusted_access_role_binding, + content_type=content_type, + cls=lambda x, y, z: x, + headers=_headers, + params=_params, + **kwargs + ) + await raw_result.http_response.read() # type: ignore + kwargs.pop("error_map", None) + + def get_long_running_output(pipeline_response): + response = pipeline_response.http_response + deserialized = _deserialize(_models.TrustedAccessRoleBinding, response.json()) + if cls: + return cls(pipeline_response, deserialized, {}) # type: ignore + return deserialized + + path_format_arguments = { + "endpoint": self._serialize.url("self._config.base_url", self._config.base_url, "str", skip_quote=True), + } + + if polling is True: + polling_method: AsyncPollingMethod = cast( + AsyncPollingMethod, AsyncARMPolling(lro_delay, path_format_arguments=path_format_arguments, **kwargs) + ) + elif polling is False: + polling_method = cast(AsyncPollingMethod, AsyncNoPolling()) + else: + polling_method = polling + if cont_token: + return AsyncLROPoller[_models.TrustedAccessRoleBinding].from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output, + ) + return AsyncLROPoller[_models.TrustedAccessRoleBinding]( + self._client, raw_result, get_long_running_output, polling_method # type: ignore + ) + + async def _delete_initial( + self, resource_group_name: str, resource_name: str, trusted_access_role_binding_name: str, **kwargs: Any + ) -> AsyncIterator[bytes]: error_map: MutableMapping = { 401: ClientAuthenticationError, 404: ResourceNotFoundError, @@ -8981,26 +7779,17 @@ async def update_tags( } error_map.update(kwargs.pop("error_map", {}) or {}) - _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) + _headers = kwargs.pop("headers", {}) or {} _params = kwargs.pop("params", {}) or {} - content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) - cls: ClsType[_models.ManagedClusterSnapshot] = kwargs.pop("cls", None) - - content_type = content_type or "application/json" - _content = None - if isinstance(parameters, (IOBase, bytes)): - _content = parameters - else: - _content = json.dumps(parameters, cls=SdkJSONEncoder, exclude_readonly=True) # type: ignore + cls: ClsType[AsyncIterator[bytes]] = kwargs.pop("cls", None) - _request = build_managed_cluster_snapshots_update_tags_request( + _request = build_trusted_access_role_bindings_delete_request( resource_group_name=resource_group_name, resource_name=resource_name, + trusted_access_role_binding_name=trusted_access_role_binding_name, subscription_id=self._config.subscription_id, - content_type=content_type, api_version=self._config.api_version, - content=_content, headers=_headers, params=_params, ) @@ -9010,19 +7799,18 @@ async def update_tags( _request.url = self._client.format_url(_request.url, **path_format_arguments) _decompress = kwargs.pop("decompress", True) - _stream = kwargs.pop("stream", False) + _stream = True pipeline_response: PipelineResponse = await self._client._pipeline.run( # pylint: disable=protected-access _request, stream=_stream, **kwargs ) response = pipeline_response.http_response - if response.status_code not in [200]: - if _stream: - try: - await response.read() # Load the body in memory and close the socket - except (StreamConsumedError, StreamClosedError): - pass + if response.status_code not in [202, 204]: + try: + await response.read() # Load the body in memory and close the socket + except (StreamConsumedError, StreamClosedError): + pass map_error(status_code=response.status_code, response=response, error_map=error_map) error = _failsafe_deserialize( _models.ErrorResponse, @@ -9030,103 +7818,103 @@ async def update_tags( ) raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - if _stream: - deserialized = response.iter_bytes() if _decompress else response.iter_raw() - else: - deserialized = _deserialize(_models.ManagedClusterSnapshot, response.json()) + response_headers = {} + if response.status_code == 202: + response_headers["Azure-AsyncOperation"] = self._deserialize( + "str", response.headers.get("Azure-AsyncOperation") + ) + response_headers["Location"] = self._deserialize("str", response.headers.get("Location")) + response_headers["Retry-After"] = self._deserialize("int", response.headers.get("Retry-After")) + + deserialized = response.iter_bytes() if _decompress else response.iter_raw() if cls: - return cls(pipeline_response, deserialized, {}) # type: ignore + return cls(pipeline_response, deserialized, response_headers) # type: ignore return deserialized # type: ignore @distributed_trace_async - @api_version_validation( - method_added_on="2026-03-02-preview", - params_added_on={ - "2026-03-02-preview": ["api_version", "subscription_id", "resource_group_name", "resource_name"] - }, - api_versions_list=["2026-03-02-preview"], - ) - async def delete(self, resource_group_name: str, resource_name: str, **kwargs: Any) -> None: - """Deletes a managed cluster snapshot. + async def begin_delete( + self, resource_group_name: str, resource_name: str, trusted_access_role_binding_name: str, **kwargs: Any + ) -> AsyncLROPoller[None]: + """Delete a trusted access role binding. :param resource_group_name: The name of the resource group. The name is case insensitive. Required. :type resource_group_name: str :param resource_name: The name of the managed cluster resource. Required. :type resource_name: str - :return: None - :rtype: None + :param trusted_access_role_binding_name: The name of trusted access role binding. Required. + :type trusted_access_role_binding_name: str + :return: An instance of AsyncLROPoller that returns None + :rtype: ~azure.core.polling.AsyncLROPoller[None] :raises ~azure.core.exceptions.HttpResponseError: """ - error_map: MutableMapping = { - 401: ClientAuthenticationError, - 404: ResourceNotFoundError, - 409: ResourceExistsError, - 304: ResourceNotModifiedError, - } - error_map.update(kwargs.pop("error_map", {}) or {}) - _headers = kwargs.pop("headers", {}) or {} _params = kwargs.pop("params", {}) or {} cls: ClsType[None] = kwargs.pop("cls", None) + polling: Union[bool, AsyncPollingMethod] = kwargs.pop("polling", True) + lro_delay = kwargs.pop("polling_interval", self._config.polling_interval) + cont_token: Optional[str] = kwargs.pop("continuation_token", None) + if cont_token is None: + raw_result = await self._delete_initial( + resource_group_name=resource_group_name, + resource_name=resource_name, + trusted_access_role_binding_name=trusted_access_role_binding_name, + cls=lambda x, y, z: x, + headers=_headers, + params=_params, + **kwargs + ) + await raw_result.http_response.read() # type: ignore + kwargs.pop("error_map", None) + + def get_long_running_output(pipeline_response): # pylint: disable=inconsistent-return-statements + if cls: + return cls(pipeline_response, None, {}) # type: ignore - _request = build_managed_cluster_snapshots_delete_request( - resource_group_name=resource_group_name, - resource_name=resource_name, - subscription_id=self._config.subscription_id, - api_version=self._config.api_version, - headers=_headers, - params=_params, - ) path_format_arguments = { "endpoint": self._serialize.url("self._config.base_url", self._config.base_url, "str", skip_quote=True), } - _request.url = self._client.format_url(_request.url, **path_format_arguments) - _stream = False - pipeline_response: PipelineResponse = await self._client._pipeline.run( # pylint: disable=protected-access - _request, stream=_stream, **kwargs - ) - - response = pipeline_response.http_response - - if response.status_code not in [200, 204]: - map_error(status_code=response.status_code, response=response, error_map=error_map) - error = _failsafe_deserialize( - _models.ErrorResponse, - response, + if polling is True: + polling_method: AsyncPollingMethod = cast( + AsyncPollingMethod, AsyncARMPolling(lro_delay, path_format_arguments=path_format_arguments, **kwargs) ) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - - if cls: - return cls(pipeline_response, None, {}) # type: ignore + elif polling is False: + polling_method = cast(AsyncPollingMethod, AsyncNoPolling()) + else: + polling_method = polling + if cont_token: + return AsyncLROPoller[None].from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output, + ) + return AsyncLROPoller[None](self._client, raw_result, get_long_running_output, polling_method) # type: ignore @distributed_trace - @api_version_validation( - method_added_on="2026-03-02-preview", - params_added_on={"2026-03-02-preview": ["api_version", "subscription_id", "resource_group_name", "accept"]}, - api_versions_list=["2026-03-02-preview"], - ) - def list_by_resource_group( - self, resource_group_name: str, **kwargs: Any - ) -> AsyncItemPaged["_models.ManagedClusterSnapshot"]: - """Lists managed cluster snapshots in the specified subscription and resource group. + def list( + self, resource_group_name: str, resource_name: str, **kwargs: Any + ) -> AsyncItemPaged["_models.TrustedAccessRoleBinding"]: + """List trusted access role bindings. :param resource_group_name: The name of the resource group. The name is case insensitive. Required. :type resource_group_name: str - :return: An iterator like instance of ManagedClusterSnapshot + :param resource_name: The name of the managed cluster resource. Required. + :type resource_name: str + :return: An iterator like instance of TrustedAccessRoleBinding :rtype: - ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.containerservice.models.ManagedClusterSnapshot] + ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.containerservice.models.TrustedAccessRoleBinding] :raises ~azure.core.exceptions.HttpResponseError: """ _headers = kwargs.pop("headers", {}) or {} _params = kwargs.pop("params", {}) or {} - cls: ClsType[List[_models.ManagedClusterSnapshot]] = kwargs.pop("cls", None) + cls: ClsType[List[_models.TrustedAccessRoleBinding]] = kwargs.pop("cls", None) error_map: MutableMapping = { 401: ClientAuthenticationError, @@ -9139,8 +7927,9 @@ def list_by_resource_group( def prepare_request(next_link=None): if not next_link: - _request = build_managed_cluster_snapshots_list_by_resource_group_request( + _request = build_trusted_access_role_bindings_list_request( resource_group_name=resource_group_name, + resource_name=resource_name, subscription_id=self._config.subscription_id, api_version=self._config.api_version, headers=_headers, @@ -9181,106 +7970,7 @@ def prepare_request(next_link=None): async def extract_data(pipeline_response): deserialized = pipeline_response.http_response.json() list_of_elem = _deserialize( - List[_models.ManagedClusterSnapshot], - deserialized.get("value", []), - ) - if cls: - list_of_elem = cls(list_of_elem) # type: ignore - return deserialized.get("nextLink") or None, AsyncList(list_of_elem) - - async def get_next(next_link=None): - _request = prepare_request(next_link) - - _stream = False - pipeline_response: PipelineResponse = await self._client._pipeline.run( # pylint: disable=protected-access - _request, stream=_stream, **kwargs - ) - response = pipeline_response.http_response - - if response.status_code not in [200]: - map_error(status_code=response.status_code, response=response, error_map=error_map) - error = _failsafe_deserialize( - _models.ErrorResponse, - response, - ) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - - return pipeline_response - - return AsyncItemPaged(get_next, extract_data) - - @distributed_trace - @api_version_validation( - method_added_on="2026-03-02-preview", - params_added_on={"2026-03-02-preview": ["api_version", "subscription_id", "accept"]}, - api_versions_list=["2026-03-02-preview"], - ) - def list(self, **kwargs: Any) -> AsyncItemPaged["_models.ManagedClusterSnapshot"]: - """Gets a list of managed cluster snapshots in the specified subscription. - - :return: An iterator like instance of ManagedClusterSnapshot - :rtype: - ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.containerservice.models.ManagedClusterSnapshot] - :raises ~azure.core.exceptions.HttpResponseError: - """ - _headers = kwargs.pop("headers", {}) or {} - _params = kwargs.pop("params", {}) or {} - - cls: ClsType[List[_models.ManagedClusterSnapshot]] = kwargs.pop("cls", None) - - error_map: MutableMapping = { - 401: ClientAuthenticationError, - 404: ResourceNotFoundError, - 409: ResourceExistsError, - 304: ResourceNotModifiedError, - } - error_map.update(kwargs.pop("error_map", {}) or {}) - - def prepare_request(next_link=None): - if not next_link: - - _request = build_managed_cluster_snapshots_list_request( - subscription_id=self._config.subscription_id, - api_version=self._config.api_version, - headers=_headers, - params=_params, - ) - path_format_arguments = { - "endpoint": self._serialize.url( - "self._config.base_url", self._config.base_url, "str", skip_quote=True - ), - } - _request.url = self._client.format_url(_request.url, **path_format_arguments) - - else: - # make call to next link with the client's api-version - _parsed_next_link = urllib.parse.urlparse(next_link) - _next_request_params = case_insensitive_dict( - { - key: [urllib.parse.quote(v) for v in value] - for key, value in urllib.parse.parse_qs(_parsed_next_link.query).items() - } - ) - _next_request_params["api-version"] = self._config.api_version - _request = HttpRequest( - "GET", - urllib.parse.urljoin(next_link, _parsed_next_link.path), - headers=_headers, - params=_next_request_params, - ) - path_format_arguments = { - "endpoint": self._serialize.url( - "self._config.base_url", self._config.base_url, "str", skip_quote=True - ), - } - _request.url = self._client.format_url(_request.url, **path_format_arguments) - - return _request - - async def extract_data(pipeline_response): - deserialized = pipeline_response.http_response.json() - list_of_elem = _deserialize( - List[_models.ManagedClusterSnapshot], + List[_models.TrustedAccessRoleBinding], deserialized.get("value", []), ) if cls: @@ -9309,14 +7999,14 @@ async def get_next(next_link=None): return AsyncItemPaged(get_next, extract_data) -class TrustedAccessRoleBindingsOperations: +class IdentityBindingsOperations: """ .. warning:: **DO NOT** instantiate this class directly. Instead, you should access the following operations through :class:`~azure.mgmt.containerservice.aio.ContainerServiceClient`'s - :attr:`trusted_access_role_bindings` attribute. + :attr:`identity_bindings` attribute. """ def __init__(self, *args, **kwargs) -> None: @@ -9327,21 +8017,34 @@ def __init__(self, *args, **kwargs) -> None: self._deserialize: Deserializer = input_args.pop(0) if input_args else kwargs.pop("deserializer") @distributed_trace_async + @api_version_validation( + method_added_on="2026-04-01", + params_added_on={ + "2026-04-01": [ + "api_version", + "subscription_id", + "resource_group_name", + "resource_name", + "identity_binding_name", + "accept", + ] + }, + api_versions_list=["2026-04-01"], + ) async def get( - self, resource_group_name: str, resource_name: str, trusted_access_role_binding_name: str, **kwargs: Any - ) -> _models.TrustedAccessRoleBinding: - """Get a trusted access role binding. + self, resource_group_name: str, resource_name: str, identity_binding_name: str, **kwargs: Any + ) -> _models.IdentityBinding: + """Gets the specified Identity Binding. :param resource_group_name: The name of the resource group. The name is case insensitive. Required. :type resource_group_name: str :param resource_name: The name of the managed cluster resource. Required. :type resource_name: str - :param trusted_access_role_binding_name: The name of trusted access role binding. Required. - :type trusted_access_role_binding_name: str - :return: TrustedAccessRoleBinding. The TrustedAccessRoleBinding is compatible with - MutableMapping - :rtype: ~azure.mgmt.containerservice.models.TrustedAccessRoleBinding + :param identity_binding_name: The name of the identity binding. Required. + :type identity_binding_name: str + :return: IdentityBinding. The IdentityBinding is compatible with MutableMapping + :rtype: ~azure.mgmt.containerservice.models.IdentityBinding :raises ~azure.core.exceptions.HttpResponseError: """ error_map: MutableMapping = { @@ -9355,12 +8058,12 @@ async def get( _headers = kwargs.pop("headers", {}) or {} _params = kwargs.pop("params", {}) or {} - cls: ClsType[_models.TrustedAccessRoleBinding] = kwargs.pop("cls", None) + cls: ClsType[_models.IdentityBinding] = kwargs.pop("cls", None) - _request = build_trusted_access_role_bindings_get_request( + _request = build_identity_bindings_get_request( resource_group_name=resource_group_name, resource_name=resource_name, - trusted_access_role_binding_name=trusted_access_role_binding_name, + identity_binding_name=identity_binding_name, subscription_id=self._config.subscription_id, api_version=self._config.api_version, headers=_headers, @@ -9395,19 +8098,34 @@ async def get( if _stream: deserialized = response.iter_bytes() if _decompress else response.iter_raw() else: - deserialized = _deserialize(_models.TrustedAccessRoleBinding, response.json()) + deserialized = _deserialize(_models.IdentityBinding, response.json()) if cls: return cls(pipeline_response, deserialized, {}) # type: ignore return deserialized # type: ignore + @api_version_validation( + method_added_on="2026-04-01", + params_added_on={ + "2026-04-01": [ + "api_version", + "subscription_id", + "resource_group_name", + "resource_name", + "identity_binding_name", + "content_type", + "accept", + ] + }, + api_versions_list=["2026-04-01"], + ) async def _create_or_update_initial( self, resource_group_name: str, resource_name: str, - trusted_access_role_binding_name: str, - trusted_access_role_binding: Union[_models.TrustedAccessRoleBinding, JSON, IO[bytes]], + identity_binding_name: str, + parameters: Union[_models.IdentityBinding, JSON, IO[bytes]], **kwargs: Any ) -> AsyncIterator[bytes]: error_map: MutableMapping = { @@ -9426,15 +8144,15 @@ async def _create_or_update_initial( content_type = content_type or "application/json" _content = None - if isinstance(trusted_access_role_binding, (IOBase, bytes)): - _content = trusted_access_role_binding + if isinstance(parameters, (IOBase, bytes)): + _content = parameters else: - _content = json.dumps(trusted_access_role_binding, cls=SdkJSONEncoder, exclude_readonly=True) # type: ignore + _content = json.dumps(parameters, cls=SdkJSONEncoder, exclude_readonly=True) # type: ignore - _request = build_trusted_access_role_bindings_create_or_update_request( + _request = build_identity_bindings_create_or_update_request( resource_group_name=resource_group_name, resource_name=resource_name, - trusted_access_role_binding_name=trusted_access_role_binding_name, + identity_binding_name=identity_binding_name, subscription_id=self._config.subscription_id, content_type=content_type, api_version=self._config.api_version, @@ -9472,6 +8190,7 @@ async def _create_or_update_initial( response_headers["Azure-AsyncOperation"] = self._deserialize( "str", response.headers.get("Azure-AsyncOperation") ) + response_headers["Location"] = self._deserialize("str", response.headers.get("Location")) response_headers["Retry-After"] = self._deserialize("int", response.headers.get("Retry-After")) deserialized = response.iter_bytes() if _decompress else response.iter_raw() @@ -9486,30 +8205,29 @@ async def begin_create_or_update( self, resource_group_name: str, resource_name: str, - trusted_access_role_binding_name: str, - trusted_access_role_binding: _models.TrustedAccessRoleBinding, + identity_binding_name: str, + parameters: _models.IdentityBinding, *, content_type: str = "application/json", **kwargs: Any - ) -> AsyncLROPoller[_models.TrustedAccessRoleBinding]: - """Create or update a trusted access role binding. + ) -> AsyncLROPoller[_models.IdentityBinding]: + """Creates or updates an identity binding in the specified managed cluster. :param resource_group_name: The name of the resource group. The name is case insensitive. Required. :type resource_group_name: str :param resource_name: The name of the managed cluster resource. Required. :type resource_name: str - :param trusted_access_role_binding_name: The name of trusted access role binding. Required. - :type trusted_access_role_binding_name: str - :param trusted_access_role_binding: A trusted access role binding. Required. - :type trusted_access_role_binding: ~azure.mgmt.containerservice.models.TrustedAccessRoleBinding + :param identity_binding_name: The name of the identity binding. Required. + :type identity_binding_name: str + :param parameters: The identity binding to create or update. Required. + :type parameters: ~azure.mgmt.containerservice.models.IdentityBinding :keyword content_type: Body Parameter content-type. Content type parameter for JSON body. Default value is "application/json". :paramtype content_type: str - :return: An instance of AsyncLROPoller that returns TrustedAccessRoleBinding. The - TrustedAccessRoleBinding is compatible with MutableMapping - :rtype: - ~azure.core.polling.AsyncLROPoller[~azure.mgmt.containerservice.models.TrustedAccessRoleBinding] + :return: An instance of AsyncLROPoller that returns IdentityBinding. The IdentityBinding is + compatible with MutableMapping + :rtype: ~azure.core.polling.AsyncLROPoller[~azure.mgmt.containerservice.models.IdentityBinding] :raises ~azure.core.exceptions.HttpResponseError: """ @@ -9518,30 +8236,29 @@ async def begin_create_or_update( self, resource_group_name: str, resource_name: str, - trusted_access_role_binding_name: str, - trusted_access_role_binding: JSON, + identity_binding_name: str, + parameters: JSON, *, content_type: str = "application/json", **kwargs: Any - ) -> AsyncLROPoller[_models.TrustedAccessRoleBinding]: - """Create or update a trusted access role binding. + ) -> AsyncLROPoller[_models.IdentityBinding]: + """Creates or updates an identity binding in the specified managed cluster. :param resource_group_name: The name of the resource group. The name is case insensitive. Required. :type resource_group_name: str :param resource_name: The name of the managed cluster resource. Required. :type resource_name: str - :param trusted_access_role_binding_name: The name of trusted access role binding. Required. - :type trusted_access_role_binding_name: str - :param trusted_access_role_binding: A trusted access role binding. Required. - :type trusted_access_role_binding: JSON + :param identity_binding_name: The name of the identity binding. Required. + :type identity_binding_name: str + :param parameters: The identity binding to create or update. Required. + :type parameters: JSON :keyword content_type: Body Parameter content-type. Content type parameter for JSON body. Default value is "application/json". :paramtype content_type: str - :return: An instance of AsyncLROPoller that returns TrustedAccessRoleBinding. The - TrustedAccessRoleBinding is compatible with MutableMapping - :rtype: - ~azure.core.polling.AsyncLROPoller[~azure.mgmt.containerservice.models.TrustedAccessRoleBinding] + :return: An instance of AsyncLROPoller that returns IdentityBinding. The IdentityBinding is + compatible with MutableMapping + :rtype: ~azure.core.polling.AsyncLROPoller[~azure.mgmt.containerservice.models.IdentityBinding] :raises ~azure.core.exceptions.HttpResponseError: """ @@ -9550,66 +8267,78 @@ async def begin_create_or_update( self, resource_group_name: str, resource_name: str, - trusted_access_role_binding_name: str, - trusted_access_role_binding: IO[bytes], + identity_binding_name: str, + parameters: IO[bytes], *, content_type: str = "application/json", **kwargs: Any - ) -> AsyncLROPoller[_models.TrustedAccessRoleBinding]: - """Create or update a trusted access role binding. + ) -> AsyncLROPoller[_models.IdentityBinding]: + """Creates or updates an identity binding in the specified managed cluster. :param resource_group_name: The name of the resource group. The name is case insensitive. Required. :type resource_group_name: str :param resource_name: The name of the managed cluster resource. Required. :type resource_name: str - :param trusted_access_role_binding_name: The name of trusted access role binding. Required. - :type trusted_access_role_binding_name: str - :param trusted_access_role_binding: A trusted access role binding. Required. - :type trusted_access_role_binding: IO[bytes] + :param identity_binding_name: The name of the identity binding. Required. + :type identity_binding_name: str + :param parameters: The identity binding to create or update. Required. + :type parameters: IO[bytes] :keyword content_type: Body Parameter content-type. Content type parameter for binary body. Default value is "application/json". :paramtype content_type: str - :return: An instance of AsyncLROPoller that returns TrustedAccessRoleBinding. The - TrustedAccessRoleBinding is compatible with MutableMapping - :rtype: - ~azure.core.polling.AsyncLROPoller[~azure.mgmt.containerservice.models.TrustedAccessRoleBinding] + :return: An instance of AsyncLROPoller that returns IdentityBinding. The IdentityBinding is + compatible with MutableMapping + :rtype: ~azure.core.polling.AsyncLROPoller[~azure.mgmt.containerservice.models.IdentityBinding] :raises ~azure.core.exceptions.HttpResponseError: """ @distributed_trace_async + @api_version_validation( + method_added_on="2026-04-01", + params_added_on={ + "2026-04-01": [ + "api_version", + "subscription_id", + "resource_group_name", + "resource_name", + "identity_binding_name", + "content_type", + "accept", + ] + }, + api_versions_list=["2026-04-01"], + ) async def begin_create_or_update( self, resource_group_name: str, resource_name: str, - trusted_access_role_binding_name: str, - trusted_access_role_binding: Union[_models.TrustedAccessRoleBinding, JSON, IO[bytes]], + identity_binding_name: str, + parameters: Union[_models.IdentityBinding, JSON, IO[bytes]], **kwargs: Any - ) -> AsyncLROPoller[_models.TrustedAccessRoleBinding]: - """Create or update a trusted access role binding. + ) -> AsyncLROPoller[_models.IdentityBinding]: + """Creates or updates an identity binding in the specified managed cluster. :param resource_group_name: The name of the resource group. The name is case insensitive. Required. :type resource_group_name: str :param resource_name: The name of the managed cluster resource. Required. :type resource_name: str - :param trusted_access_role_binding_name: The name of trusted access role binding. Required. - :type trusted_access_role_binding_name: str - :param trusted_access_role_binding: A trusted access role binding. Is one of the following - types: TrustedAccessRoleBinding, JSON, IO[bytes] Required. - :type trusted_access_role_binding: ~azure.mgmt.containerservice.models.TrustedAccessRoleBinding - or JSON or IO[bytes] - :return: An instance of AsyncLROPoller that returns TrustedAccessRoleBinding. The - TrustedAccessRoleBinding is compatible with MutableMapping - :rtype: - ~azure.core.polling.AsyncLROPoller[~azure.mgmt.containerservice.models.TrustedAccessRoleBinding] + :param identity_binding_name: The name of the identity binding. Required. + :type identity_binding_name: str + :param parameters: The identity binding to create or update. Is one of the following types: + IdentityBinding, JSON, IO[bytes] Required. + :type parameters: ~azure.mgmt.containerservice.models.IdentityBinding or JSON or IO[bytes] + :return: An instance of AsyncLROPoller that returns IdentityBinding. The IdentityBinding is + compatible with MutableMapping + :rtype: ~azure.core.polling.AsyncLROPoller[~azure.mgmt.containerservice.models.IdentityBinding] :raises ~azure.core.exceptions.HttpResponseError: """ _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) _params = kwargs.pop("params", {}) or {} content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) - cls: ClsType[_models.TrustedAccessRoleBinding] = kwargs.pop("cls", None) + cls: ClsType[_models.IdentityBinding] = kwargs.pop("cls", None) polling: Union[bool, AsyncPollingMethod] = kwargs.pop("polling", True) lro_delay = kwargs.pop("polling_interval", self._config.polling_interval) cont_token: Optional[str] = kwargs.pop("continuation_token", None) @@ -9617,8 +8346,8 @@ async def begin_create_or_update( raw_result = await self._create_or_update_initial( resource_group_name=resource_group_name, resource_name=resource_name, - trusted_access_role_binding_name=trusted_access_role_binding_name, - trusted_access_role_binding=trusted_access_role_binding, + identity_binding_name=identity_binding_name, + parameters=parameters, content_type=content_type, cls=lambda x, y, z: x, headers=_headers, @@ -9630,2955 +8359,50 @@ async def begin_create_or_update( def get_long_running_output(pipeline_response): response = pipeline_response.http_response - deserialized = _deserialize(_models.TrustedAccessRoleBinding, response.json()) + deserialized = _deserialize(_models.IdentityBinding, response.json()) if cls: return cls(pipeline_response, deserialized, {}) # type: ignore return deserialized path_format_arguments = { - "endpoint": self._serialize.url("self._config.base_url", self._config.base_url, "str", skip_quote=True), - } - - if polling is True: - polling_method: AsyncPollingMethod = cast( - AsyncPollingMethod, AsyncARMPolling(lro_delay, path_format_arguments=path_format_arguments, **kwargs) - ) - elif polling is False: - polling_method = cast(AsyncPollingMethod, AsyncNoPolling()) - else: - polling_method = polling - if cont_token: - return AsyncLROPoller[_models.TrustedAccessRoleBinding].from_continuation_token( - polling_method=polling_method, - continuation_token=cont_token, - client=self._client, - deserialization_callback=get_long_running_output, - ) - return AsyncLROPoller[_models.TrustedAccessRoleBinding]( - self._client, raw_result, get_long_running_output, polling_method # type: ignore - ) - - async def _delete_initial( - self, resource_group_name: str, resource_name: str, trusted_access_role_binding_name: str, **kwargs: Any - ) -> AsyncIterator[bytes]: - error_map: MutableMapping = { - 401: ClientAuthenticationError, - 404: ResourceNotFoundError, - 409: ResourceExistsError, - 304: ResourceNotModifiedError, - } - error_map.update(kwargs.pop("error_map", {}) or {}) - - _headers = kwargs.pop("headers", {}) or {} - _params = kwargs.pop("params", {}) or {} - - cls: ClsType[AsyncIterator[bytes]] = kwargs.pop("cls", None) - - _request = build_trusted_access_role_bindings_delete_request( - resource_group_name=resource_group_name, - resource_name=resource_name, - trusted_access_role_binding_name=trusted_access_role_binding_name, - subscription_id=self._config.subscription_id, - api_version=self._config.api_version, - headers=_headers, - params=_params, - ) - path_format_arguments = { - "endpoint": self._serialize.url("self._config.base_url", self._config.base_url, "str", skip_quote=True), - } - _request.url = self._client.format_url(_request.url, **path_format_arguments) - - _decompress = kwargs.pop("decompress", True) - _stream = True - pipeline_response: PipelineResponse = await self._client._pipeline.run( # pylint: disable=protected-access - _request, stream=_stream, **kwargs - ) - - response = pipeline_response.http_response - - if response.status_code not in [202, 204]: - try: - await response.read() # Load the body in memory and close the socket - except (StreamConsumedError, StreamClosedError): - pass - map_error(status_code=response.status_code, response=response, error_map=error_map) - error = _failsafe_deserialize( - _models.ErrorResponse, - response, - ) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - - response_headers = {} - if response.status_code == 202: - response_headers["Azure-AsyncOperation"] = self._deserialize( - "str", response.headers.get("Azure-AsyncOperation") - ) - response_headers["Location"] = self._deserialize("str", response.headers.get("Location")) - response_headers["Retry-After"] = self._deserialize("int", response.headers.get("Retry-After")) - - deserialized = response.iter_bytes() if _decompress else response.iter_raw() - - if cls: - return cls(pipeline_response, deserialized, response_headers) # type: ignore - - return deserialized # type: ignore - - @distributed_trace_async - async def begin_delete( - self, resource_group_name: str, resource_name: str, trusted_access_role_binding_name: str, **kwargs: Any - ) -> AsyncLROPoller[None]: - """Delete a trusted access role binding. - - :param resource_group_name: The name of the resource group. The name is case insensitive. - Required. - :type resource_group_name: str - :param resource_name: The name of the managed cluster resource. Required. - :type resource_name: str - :param trusted_access_role_binding_name: The name of trusted access role binding. Required. - :type trusted_access_role_binding_name: str - :return: An instance of AsyncLROPoller that returns None - :rtype: ~azure.core.polling.AsyncLROPoller[None] - :raises ~azure.core.exceptions.HttpResponseError: - """ - _headers = kwargs.pop("headers", {}) or {} - _params = kwargs.pop("params", {}) or {} - - cls: ClsType[None] = kwargs.pop("cls", None) - polling: Union[bool, AsyncPollingMethod] = kwargs.pop("polling", True) - lro_delay = kwargs.pop("polling_interval", self._config.polling_interval) - cont_token: Optional[str] = kwargs.pop("continuation_token", None) - if cont_token is None: - raw_result = await self._delete_initial( - resource_group_name=resource_group_name, - resource_name=resource_name, - trusted_access_role_binding_name=trusted_access_role_binding_name, - cls=lambda x, y, z: x, - headers=_headers, - params=_params, - **kwargs - ) - await raw_result.http_response.read() # type: ignore - kwargs.pop("error_map", None) - - def get_long_running_output(pipeline_response): # pylint: disable=inconsistent-return-statements - if cls: - return cls(pipeline_response, None, {}) # type: ignore - - path_format_arguments = { - "endpoint": self._serialize.url("self._config.base_url", self._config.base_url, "str", skip_quote=True), - } - - if polling is True: - polling_method: AsyncPollingMethod = cast( - AsyncPollingMethod, AsyncARMPolling(lro_delay, path_format_arguments=path_format_arguments, **kwargs) - ) - elif polling is False: - polling_method = cast(AsyncPollingMethod, AsyncNoPolling()) - else: - polling_method = polling - if cont_token: - return AsyncLROPoller[None].from_continuation_token( - polling_method=polling_method, - continuation_token=cont_token, - client=self._client, - deserialization_callback=get_long_running_output, - ) - return AsyncLROPoller[None](self._client, raw_result, get_long_running_output, polling_method) # type: ignore - - @distributed_trace - def list( - self, resource_group_name: str, resource_name: str, **kwargs: Any - ) -> AsyncItemPaged["_models.TrustedAccessRoleBinding"]: - """List trusted access role bindings. - - :param resource_group_name: The name of the resource group. The name is case insensitive. - Required. - :type resource_group_name: str - :param resource_name: The name of the managed cluster resource. Required. - :type resource_name: str - :return: An iterator like instance of TrustedAccessRoleBinding - :rtype: - ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.containerservice.models.TrustedAccessRoleBinding] - :raises ~azure.core.exceptions.HttpResponseError: - """ - _headers = kwargs.pop("headers", {}) or {} - _params = kwargs.pop("params", {}) or {} - - cls: ClsType[List[_models.TrustedAccessRoleBinding]] = kwargs.pop("cls", None) - - error_map: MutableMapping = { - 401: ClientAuthenticationError, - 404: ResourceNotFoundError, - 409: ResourceExistsError, - 304: ResourceNotModifiedError, - } - error_map.update(kwargs.pop("error_map", {}) or {}) - - def prepare_request(next_link=None): - if not next_link: - - _request = build_trusted_access_role_bindings_list_request( - resource_group_name=resource_group_name, - resource_name=resource_name, - subscription_id=self._config.subscription_id, - api_version=self._config.api_version, - headers=_headers, - params=_params, - ) - path_format_arguments = { - "endpoint": self._serialize.url( - "self._config.base_url", self._config.base_url, "str", skip_quote=True - ), - } - _request.url = self._client.format_url(_request.url, **path_format_arguments) - - else: - # make call to next link with the client's api-version - _parsed_next_link = urllib.parse.urlparse(next_link) - _next_request_params = case_insensitive_dict( - { - key: [urllib.parse.quote(v) for v in value] - for key, value in urllib.parse.parse_qs(_parsed_next_link.query).items() - } - ) - _next_request_params["api-version"] = self._config.api_version - _request = HttpRequest( - "GET", - urllib.parse.urljoin(next_link, _parsed_next_link.path), - headers=_headers, - params=_next_request_params, - ) - path_format_arguments = { - "endpoint": self._serialize.url( - "self._config.base_url", self._config.base_url, "str", skip_quote=True - ), - } - _request.url = self._client.format_url(_request.url, **path_format_arguments) - - return _request - - async def extract_data(pipeline_response): - deserialized = pipeline_response.http_response.json() - list_of_elem = _deserialize( - List[_models.TrustedAccessRoleBinding], - deserialized.get("value", []), - ) - if cls: - list_of_elem = cls(list_of_elem) # type: ignore - return deserialized.get("nextLink") or None, AsyncList(list_of_elem) - - async def get_next(next_link=None): - _request = prepare_request(next_link) - - _stream = False - pipeline_response: PipelineResponse = await self._client._pipeline.run( # pylint: disable=protected-access - _request, stream=_stream, **kwargs - ) - response = pipeline_response.http_response - - if response.status_code not in [200]: - map_error(status_code=response.status_code, response=response, error_map=error_map) - error = _failsafe_deserialize( - _models.ErrorResponse, - response, - ) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - - return pipeline_response - - return AsyncItemPaged(get_next, extract_data) - - -class LoadBalancersOperations: - """ - .. warning:: - **DO NOT** instantiate this class directly. - - Instead, you should access the following operations through - :class:`~azure.mgmt.containerservice.aio.ContainerServiceClient`'s - :attr:`load_balancers` attribute. - """ - - def __init__(self, *args, **kwargs) -> None: - input_args = list(args) - self._client: AsyncPipelineClient = input_args.pop(0) if input_args else kwargs.pop("client") - self._config: ContainerServiceClientConfiguration = input_args.pop(0) if input_args else kwargs.pop("config") - self._serialize: Serializer = input_args.pop(0) if input_args else kwargs.pop("serializer") - self._deserialize: Deserializer = input_args.pop(0) if input_args else kwargs.pop("deserializer") - - @distributed_trace_async - @api_version_validation( - method_added_on="2026-03-02-preview", - params_added_on={ - "2026-03-02-preview": [ - "api_version", - "subscription_id", - "resource_group_name", - "resource_name", - "load_balancer_name", - "accept", - ] - }, - api_versions_list=["2026-03-02-preview"], - ) - async def get( - self, resource_group_name: str, resource_name: str, load_balancer_name: str, **kwargs: Any - ) -> _models.LoadBalancer: - """Gets the specified load balancer. - - :param resource_group_name: The name of the resource group. The name is case insensitive. - Required. - :type resource_group_name: str - :param resource_name: The name of the managed cluster resource. Required. - :type resource_name: str - :param load_balancer_name: The name of the load balancer. Required. - :type load_balancer_name: str - :return: LoadBalancer. The LoadBalancer is compatible with MutableMapping - :rtype: ~azure.mgmt.containerservice.models.LoadBalancer - :raises ~azure.core.exceptions.HttpResponseError: - """ - error_map: MutableMapping = { - 401: ClientAuthenticationError, - 404: ResourceNotFoundError, - 409: ResourceExistsError, - 304: ResourceNotModifiedError, - } - error_map.update(kwargs.pop("error_map", {}) or {}) - - _headers = kwargs.pop("headers", {}) or {} - _params = kwargs.pop("params", {}) or {} - - cls: ClsType[_models.LoadBalancer] = kwargs.pop("cls", None) - - _request = build_load_balancers_get_request( - resource_group_name=resource_group_name, - resource_name=resource_name, - load_balancer_name=load_balancer_name, - subscription_id=self._config.subscription_id, - api_version=self._config.api_version, - headers=_headers, - params=_params, - ) - path_format_arguments = { - "endpoint": self._serialize.url("self._config.base_url", self._config.base_url, "str", skip_quote=True), - } - _request.url = self._client.format_url(_request.url, **path_format_arguments) - - _decompress = kwargs.pop("decompress", True) - _stream = kwargs.pop("stream", False) - pipeline_response: PipelineResponse = await self._client._pipeline.run( # pylint: disable=protected-access - _request, stream=_stream, **kwargs - ) - - response = pipeline_response.http_response - - if response.status_code not in [200]: - if _stream: - try: - await response.read() # Load the body in memory and close the socket - except (StreamConsumedError, StreamClosedError): - pass - map_error(status_code=response.status_code, response=response, error_map=error_map) - error = _failsafe_deserialize( - _models.ErrorResponse, - response, - ) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - - if _stream: - deserialized = response.iter_bytes() if _decompress else response.iter_raw() - else: - deserialized = _deserialize(_models.LoadBalancer, response.json()) - - if cls: - return cls(pipeline_response, deserialized, {}) # type: ignore - - return deserialized # type: ignore - - @overload - async def create_or_update( - self, - resource_group_name: str, - resource_name: str, - load_balancer_name: str, - parameters: _models.LoadBalancer, - *, - content_type: str = "application/json", - **kwargs: Any - ) -> _models.LoadBalancer: - """Creates or updates a load balancer in the specified managed cluster. - - :param resource_group_name: The name of the resource group. The name is case insensitive. - Required. - :type resource_group_name: str - :param resource_name: The name of the managed cluster resource. Required. - :type resource_name: str - :param load_balancer_name: The name of the load balancer. Required. - :type load_balancer_name: str - :param parameters: The load balancer to create or update. Required. - :type parameters: ~azure.mgmt.containerservice.models.LoadBalancer - :keyword content_type: Body Parameter content-type. Content type parameter for JSON body. - Default value is "application/json". - :paramtype content_type: str - :return: LoadBalancer. The LoadBalancer is compatible with MutableMapping - :rtype: ~azure.mgmt.containerservice.models.LoadBalancer - :raises ~azure.core.exceptions.HttpResponseError: - """ - - @overload - async def create_or_update( - self, - resource_group_name: str, - resource_name: str, - load_balancer_name: str, - parameters: JSON, - *, - content_type: str = "application/json", - **kwargs: Any - ) -> _models.LoadBalancer: - """Creates or updates a load balancer in the specified managed cluster. - - :param resource_group_name: The name of the resource group. The name is case insensitive. - Required. - :type resource_group_name: str - :param resource_name: The name of the managed cluster resource. Required. - :type resource_name: str - :param load_balancer_name: The name of the load balancer. Required. - :type load_balancer_name: str - :param parameters: The load balancer to create or update. Required. - :type parameters: JSON - :keyword content_type: Body Parameter content-type. Content type parameter for JSON body. - Default value is "application/json". - :paramtype content_type: str - :return: LoadBalancer. The LoadBalancer is compatible with MutableMapping - :rtype: ~azure.mgmt.containerservice.models.LoadBalancer - :raises ~azure.core.exceptions.HttpResponseError: - """ - - @overload - async def create_or_update( - self, - resource_group_name: str, - resource_name: str, - load_balancer_name: str, - parameters: IO[bytes], - *, - content_type: str = "application/json", - **kwargs: Any - ) -> _models.LoadBalancer: - """Creates or updates a load balancer in the specified managed cluster. - - :param resource_group_name: The name of the resource group. The name is case insensitive. - Required. - :type resource_group_name: str - :param resource_name: The name of the managed cluster resource. Required. - :type resource_name: str - :param load_balancer_name: The name of the load balancer. Required. - :type load_balancer_name: str - :param parameters: The load balancer to create or update. Required. - :type parameters: IO[bytes] - :keyword content_type: Body Parameter content-type. Content type parameter for binary body. - Default value is "application/json". - :paramtype content_type: str - :return: LoadBalancer. The LoadBalancer is compatible with MutableMapping - :rtype: ~azure.mgmt.containerservice.models.LoadBalancer - :raises ~azure.core.exceptions.HttpResponseError: - """ - - @distributed_trace_async - @api_version_validation( - method_added_on="2026-03-02-preview", - params_added_on={ - "2026-03-02-preview": [ - "api_version", - "subscription_id", - "resource_group_name", - "resource_name", - "load_balancer_name", - "content_type", - "accept", - ] - }, - api_versions_list=["2026-03-02-preview"], - ) - async def create_or_update( - self, - resource_group_name: str, - resource_name: str, - load_balancer_name: str, - parameters: Union[_models.LoadBalancer, JSON, IO[bytes]], - **kwargs: Any - ) -> _models.LoadBalancer: - """Creates or updates a load balancer in the specified managed cluster. - - :param resource_group_name: The name of the resource group. The name is case insensitive. - Required. - :type resource_group_name: str - :param resource_name: The name of the managed cluster resource. Required. - :type resource_name: str - :param load_balancer_name: The name of the load balancer. Required. - :type load_balancer_name: str - :param parameters: The load balancer to create or update. Is one of the following types: - LoadBalancer, JSON, IO[bytes] Required. - :type parameters: ~azure.mgmt.containerservice.models.LoadBalancer or JSON or IO[bytes] - :return: LoadBalancer. The LoadBalancer is compatible with MutableMapping - :rtype: ~azure.mgmt.containerservice.models.LoadBalancer - :raises ~azure.core.exceptions.HttpResponseError: - """ - error_map: MutableMapping = { - 401: ClientAuthenticationError, - 404: ResourceNotFoundError, - 409: ResourceExistsError, - 304: ResourceNotModifiedError, - } - error_map.update(kwargs.pop("error_map", {}) or {}) - - _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) - _params = kwargs.pop("params", {}) or {} - - content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) - cls: ClsType[_models.LoadBalancer] = kwargs.pop("cls", None) - - content_type = content_type or "application/json" - _content = None - if isinstance(parameters, (IOBase, bytes)): - _content = parameters - else: - _content = json.dumps(parameters, cls=SdkJSONEncoder, exclude_readonly=True) # type: ignore - - _request = build_load_balancers_create_or_update_request( - resource_group_name=resource_group_name, - resource_name=resource_name, - load_balancer_name=load_balancer_name, - subscription_id=self._config.subscription_id, - content_type=content_type, - api_version=self._config.api_version, - content=_content, - headers=_headers, - params=_params, - ) - path_format_arguments = { - "endpoint": self._serialize.url("self._config.base_url", self._config.base_url, "str", skip_quote=True), - } - _request.url = self._client.format_url(_request.url, **path_format_arguments) - - _decompress = kwargs.pop("decompress", True) - _stream = kwargs.pop("stream", False) - pipeline_response: PipelineResponse = await self._client._pipeline.run( # pylint: disable=protected-access - _request, stream=_stream, **kwargs - ) - - response = pipeline_response.http_response - - if response.status_code not in [200, 201]: - if _stream: - try: - await response.read() # Load the body in memory and close the socket - except (StreamConsumedError, StreamClosedError): - pass - map_error(status_code=response.status_code, response=response, error_map=error_map) - error = _failsafe_deserialize( - _models.ErrorResponse, - response, - ) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - - if _stream: - deserialized = response.iter_bytes() if _decompress else response.iter_raw() - else: - deserialized = _deserialize(_models.LoadBalancer, response.json()) - - if cls: - return cls(pipeline_response, deserialized, {}) # type: ignore - - return deserialized # type: ignore - - @api_version_validation( - method_added_on="2026-03-02-preview", - params_added_on={ - "2026-03-02-preview": [ - "api_version", - "subscription_id", - "resource_group_name", - "resource_name", - "load_balancer_name", - ] - }, - api_versions_list=["2026-03-02-preview"], - ) - async def _delete_initial( - self, resource_group_name: str, resource_name: str, load_balancer_name: str, **kwargs: Any - ) -> AsyncIterator[bytes]: - error_map: MutableMapping = { - 401: ClientAuthenticationError, - 404: ResourceNotFoundError, - 409: ResourceExistsError, - 304: ResourceNotModifiedError, - } - error_map.update(kwargs.pop("error_map", {}) or {}) - - _headers = kwargs.pop("headers", {}) or {} - _params = kwargs.pop("params", {}) or {} - - cls: ClsType[AsyncIterator[bytes]] = kwargs.pop("cls", None) - - _request = build_load_balancers_delete_request( - resource_group_name=resource_group_name, - resource_name=resource_name, - load_balancer_name=load_balancer_name, - subscription_id=self._config.subscription_id, - api_version=self._config.api_version, - headers=_headers, - params=_params, - ) - path_format_arguments = { - "endpoint": self._serialize.url("self._config.base_url", self._config.base_url, "str", skip_quote=True), - } - _request.url = self._client.format_url(_request.url, **path_format_arguments) - - _decompress = kwargs.pop("decompress", True) - _stream = True - pipeline_response: PipelineResponse = await self._client._pipeline.run( # pylint: disable=protected-access - _request, stream=_stream, **kwargs - ) - - response = pipeline_response.http_response - - if response.status_code not in [202, 204]: - try: - await response.read() # Load the body in memory and close the socket - except (StreamConsumedError, StreamClosedError): - pass - map_error(status_code=response.status_code, response=response, error_map=error_map) - error = _failsafe_deserialize( - _models.ErrorResponse, - response, - ) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - - response_headers = {} - if response.status_code == 202: - response_headers["Azure-AsyncOperation"] = self._deserialize( - "str", response.headers.get("Azure-AsyncOperation") - ) - response_headers["Location"] = self._deserialize("str", response.headers.get("Location")) - response_headers["Retry-After"] = self._deserialize("int", response.headers.get("Retry-After")) - - deserialized = response.iter_bytes() if _decompress else response.iter_raw() - - if cls: - return cls(pipeline_response, deserialized, response_headers) # type: ignore - - return deserialized # type: ignore - - @distributed_trace_async - @api_version_validation( - method_added_on="2026-03-02-preview", - params_added_on={ - "2026-03-02-preview": [ - "api_version", - "subscription_id", - "resource_group_name", - "resource_name", - "load_balancer_name", - ] - }, - api_versions_list=["2026-03-02-preview"], - ) - async def begin_delete( - self, resource_group_name: str, resource_name: str, load_balancer_name: str, **kwargs: Any - ) -> AsyncLROPoller[None]: - """Deletes a load balancer in the specified managed cluster. - - :param resource_group_name: The name of the resource group. The name is case insensitive. - Required. - :type resource_group_name: str - :param resource_name: The name of the managed cluster resource. Required. - :type resource_name: str - :param load_balancer_name: The name of the load balancer. Required. - :type load_balancer_name: str - :return: An instance of AsyncLROPoller that returns None - :rtype: ~azure.core.polling.AsyncLROPoller[None] - :raises ~azure.core.exceptions.HttpResponseError: - """ - _headers = kwargs.pop("headers", {}) or {} - _params = kwargs.pop("params", {}) or {} - - cls: ClsType[None] = kwargs.pop("cls", None) - polling: Union[bool, AsyncPollingMethod] = kwargs.pop("polling", True) - lro_delay = kwargs.pop("polling_interval", self._config.polling_interval) - cont_token: Optional[str] = kwargs.pop("continuation_token", None) - if cont_token is None: - raw_result = await self._delete_initial( - resource_group_name=resource_group_name, - resource_name=resource_name, - load_balancer_name=load_balancer_name, - cls=lambda x, y, z: x, - headers=_headers, - params=_params, - **kwargs - ) - await raw_result.http_response.read() # type: ignore - kwargs.pop("error_map", None) - - def get_long_running_output(pipeline_response): # pylint: disable=inconsistent-return-statements - if cls: - return cls(pipeline_response, None, {}) # type: ignore - - path_format_arguments = { - "endpoint": self._serialize.url("self._config.base_url", self._config.base_url, "str", skip_quote=True), - } - - if polling is True: - polling_method: AsyncPollingMethod = cast( - AsyncPollingMethod, AsyncARMPolling(lro_delay, path_format_arguments=path_format_arguments, **kwargs) - ) - elif polling is False: - polling_method = cast(AsyncPollingMethod, AsyncNoPolling()) - else: - polling_method = polling - if cont_token: - return AsyncLROPoller[None].from_continuation_token( - polling_method=polling_method, - continuation_token=cont_token, - client=self._client, - deserialization_callback=get_long_running_output, - ) - return AsyncLROPoller[None](self._client, raw_result, get_long_running_output, polling_method) # type: ignore - - @distributed_trace - @api_version_validation( - method_added_on="2026-03-02-preview", - params_added_on={ - "2026-03-02-preview": ["api_version", "subscription_id", "resource_group_name", "resource_name", "accept"] - }, - api_versions_list=["2026-03-02-preview"], - ) - def list_by_managed_cluster( - self, resource_group_name: str, resource_name: str, **kwargs: Any - ) -> AsyncItemPaged["_models.LoadBalancer"]: - """Gets a list of load balancers in the specified managed cluster. - - :param resource_group_name: The name of the resource group. The name is case insensitive. - Required. - :type resource_group_name: str - :param resource_name: The name of the managed cluster resource. Required. - :type resource_name: str - :return: An iterator like instance of LoadBalancer - :rtype: - ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.containerservice.models.LoadBalancer] - :raises ~azure.core.exceptions.HttpResponseError: - """ - _headers = kwargs.pop("headers", {}) or {} - _params = kwargs.pop("params", {}) or {} - - cls: ClsType[List[_models.LoadBalancer]] = kwargs.pop("cls", None) - - error_map: MutableMapping = { - 401: ClientAuthenticationError, - 404: ResourceNotFoundError, - 409: ResourceExistsError, - 304: ResourceNotModifiedError, - } - error_map.update(kwargs.pop("error_map", {}) or {}) - - def prepare_request(next_link=None): - if not next_link: - - _request = build_load_balancers_list_by_managed_cluster_request( - resource_group_name=resource_group_name, - resource_name=resource_name, - subscription_id=self._config.subscription_id, - api_version=self._config.api_version, - headers=_headers, - params=_params, - ) - path_format_arguments = { - "endpoint": self._serialize.url( - "self._config.base_url", self._config.base_url, "str", skip_quote=True - ), - } - _request.url = self._client.format_url(_request.url, **path_format_arguments) - - else: - # make call to next link with the client's api-version - _parsed_next_link = urllib.parse.urlparse(next_link) - _next_request_params = case_insensitive_dict( - { - key: [urllib.parse.quote(v) for v in value] - for key, value in urllib.parse.parse_qs(_parsed_next_link.query).items() - } - ) - _next_request_params["api-version"] = self._config.api_version - _request = HttpRequest( - "GET", - urllib.parse.urljoin(next_link, _parsed_next_link.path), - headers=_headers, - params=_next_request_params, - ) - path_format_arguments = { - "endpoint": self._serialize.url( - "self._config.base_url", self._config.base_url, "str", skip_quote=True - ), - } - _request.url = self._client.format_url(_request.url, **path_format_arguments) - - return _request - - async def extract_data(pipeline_response): - deserialized = pipeline_response.http_response.json() - list_of_elem = _deserialize( - List[_models.LoadBalancer], - deserialized.get("value", []), - ) - if cls: - list_of_elem = cls(list_of_elem) # type: ignore - return deserialized.get("nextLink") or None, AsyncList(list_of_elem) - - async def get_next(next_link=None): - _request = prepare_request(next_link) - - _stream = False - pipeline_response: PipelineResponse = await self._client._pipeline.run( # pylint: disable=protected-access - _request, stream=_stream, **kwargs - ) - response = pipeline_response.http_response - - if response.status_code not in [200]: - map_error(status_code=response.status_code, response=response, error_map=error_map) - error = _failsafe_deserialize( - _models.ErrorResponse, - response, - ) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - - return pipeline_response - - return AsyncItemPaged(get_next, extract_data) - - -class IdentityBindingsOperations: - """ - .. warning:: - **DO NOT** instantiate this class directly. - - Instead, you should access the following operations through - :class:`~azure.mgmt.containerservice.aio.ContainerServiceClient`'s - :attr:`identity_bindings` attribute. - """ - - def __init__(self, *args, **kwargs) -> None: - input_args = list(args) - self._client: AsyncPipelineClient = input_args.pop(0) if input_args else kwargs.pop("client") - self._config: ContainerServiceClientConfiguration = input_args.pop(0) if input_args else kwargs.pop("config") - self._serialize: Serializer = input_args.pop(0) if input_args else kwargs.pop("serializer") - self._deserialize: Deserializer = input_args.pop(0) if input_args else kwargs.pop("deserializer") - - @distributed_trace_async - @api_version_validation( - method_added_on="2026-03-02-preview", - params_added_on={ - "2026-03-02-preview": [ - "api_version", - "subscription_id", - "resource_group_name", - "resource_name", - "identity_binding_name", - "accept", - ] - }, - api_versions_list=["2026-03-02-preview"], - ) - async def get( - self, resource_group_name: str, resource_name: str, identity_binding_name: str, **kwargs: Any - ) -> _models.IdentityBinding: - """Gets the specified Identity Binding. - - :param resource_group_name: The name of the resource group. The name is case insensitive. - Required. - :type resource_group_name: str - :param resource_name: The name of the managed cluster resource. Required. - :type resource_name: str - :param identity_binding_name: The name of the identity binding. Required. - :type identity_binding_name: str - :return: IdentityBinding. The IdentityBinding is compatible with MutableMapping - :rtype: ~azure.mgmt.containerservice.models.IdentityBinding - :raises ~azure.core.exceptions.HttpResponseError: - """ - error_map: MutableMapping = { - 401: ClientAuthenticationError, - 404: ResourceNotFoundError, - 409: ResourceExistsError, - 304: ResourceNotModifiedError, - } - error_map.update(kwargs.pop("error_map", {}) or {}) - - _headers = kwargs.pop("headers", {}) or {} - _params = kwargs.pop("params", {}) or {} - - cls: ClsType[_models.IdentityBinding] = kwargs.pop("cls", None) - - _request = build_identity_bindings_get_request( - resource_group_name=resource_group_name, - resource_name=resource_name, - identity_binding_name=identity_binding_name, - subscription_id=self._config.subscription_id, - api_version=self._config.api_version, - headers=_headers, - params=_params, - ) - path_format_arguments = { - "endpoint": self._serialize.url("self._config.base_url", self._config.base_url, "str", skip_quote=True), - } - _request.url = self._client.format_url(_request.url, **path_format_arguments) - - _decompress = kwargs.pop("decompress", True) - _stream = kwargs.pop("stream", False) - pipeline_response: PipelineResponse = await self._client._pipeline.run( # pylint: disable=protected-access - _request, stream=_stream, **kwargs - ) - - response = pipeline_response.http_response - - if response.status_code not in [200]: - if _stream: - try: - await response.read() # Load the body in memory and close the socket - except (StreamConsumedError, StreamClosedError): - pass - map_error(status_code=response.status_code, response=response, error_map=error_map) - error = _failsafe_deserialize( - _models.ErrorResponse, - response, - ) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - - if _stream: - deserialized = response.iter_bytes() if _decompress else response.iter_raw() - else: - deserialized = _deserialize(_models.IdentityBinding, response.json()) - - if cls: - return cls(pipeline_response, deserialized, {}) # type: ignore - - return deserialized # type: ignore - - @api_version_validation( - method_added_on="2026-03-02-preview", - params_added_on={ - "2026-03-02-preview": [ - "api_version", - "subscription_id", - "resource_group_name", - "resource_name", - "identity_binding_name", - "content_type", - "accept", - ] - }, - api_versions_list=["2026-03-02-preview"], - ) - async def _create_or_update_initial( - self, - resource_group_name: str, - resource_name: str, - identity_binding_name: str, - parameters: Union[_models.IdentityBinding, JSON, IO[bytes]], - **kwargs: Any - ) -> AsyncIterator[bytes]: - error_map: MutableMapping = { - 401: ClientAuthenticationError, - 404: ResourceNotFoundError, - 409: ResourceExistsError, - 304: ResourceNotModifiedError, - } - error_map.update(kwargs.pop("error_map", {}) or {}) - - _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) - _params = kwargs.pop("params", {}) or {} - - content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) - cls: ClsType[AsyncIterator[bytes]] = kwargs.pop("cls", None) - - content_type = content_type or "application/json" - _content = None - if isinstance(parameters, (IOBase, bytes)): - _content = parameters - else: - _content = json.dumps(parameters, cls=SdkJSONEncoder, exclude_readonly=True) # type: ignore - - _request = build_identity_bindings_create_or_update_request( - resource_group_name=resource_group_name, - resource_name=resource_name, - identity_binding_name=identity_binding_name, - subscription_id=self._config.subscription_id, - content_type=content_type, - api_version=self._config.api_version, - content=_content, - headers=_headers, - params=_params, - ) - path_format_arguments = { - "endpoint": self._serialize.url("self._config.base_url", self._config.base_url, "str", skip_quote=True), - } - _request.url = self._client.format_url(_request.url, **path_format_arguments) - - _decompress = kwargs.pop("decompress", True) - _stream = True - pipeline_response: PipelineResponse = await self._client._pipeline.run( # pylint: disable=protected-access - _request, stream=_stream, **kwargs - ) - - response = pipeline_response.http_response - - if response.status_code not in [200, 201]: - try: - await response.read() # Load the body in memory and close the socket - except (StreamConsumedError, StreamClosedError): - pass - map_error(status_code=response.status_code, response=response, error_map=error_map) - error = _failsafe_deserialize( - _models.ErrorResponse, - response, - ) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - - response_headers = {} - if response.status_code == 201: - response_headers["Azure-AsyncOperation"] = self._deserialize( - "str", response.headers.get("Azure-AsyncOperation") - ) - response_headers["Location"] = self._deserialize("str", response.headers.get("Location")) - response_headers["Retry-After"] = self._deserialize("int", response.headers.get("Retry-After")) - - deserialized = response.iter_bytes() if _decompress else response.iter_raw() - - if cls: - return cls(pipeline_response, deserialized, response_headers) # type: ignore - - return deserialized # type: ignore - - @overload - async def begin_create_or_update( - self, - resource_group_name: str, - resource_name: str, - identity_binding_name: str, - parameters: _models.IdentityBinding, - *, - content_type: str = "application/json", - **kwargs: Any - ) -> AsyncLROPoller[_models.IdentityBinding]: - """Creates or updates an identity binding in the specified managed cluster. - - :param resource_group_name: The name of the resource group. The name is case insensitive. - Required. - :type resource_group_name: str - :param resource_name: The name of the managed cluster resource. Required. - :type resource_name: str - :param identity_binding_name: The name of the identity binding. Required. - :type identity_binding_name: str - :param parameters: The identity binding to create or update. Required. - :type parameters: ~azure.mgmt.containerservice.models.IdentityBinding - :keyword content_type: Body Parameter content-type. Content type parameter for JSON body. - Default value is "application/json". - :paramtype content_type: str - :return: An instance of AsyncLROPoller that returns IdentityBinding. The IdentityBinding is - compatible with MutableMapping - :rtype: ~azure.core.polling.AsyncLROPoller[~azure.mgmt.containerservice.models.IdentityBinding] - :raises ~azure.core.exceptions.HttpResponseError: - """ - - @overload - async def begin_create_or_update( - self, - resource_group_name: str, - resource_name: str, - identity_binding_name: str, - parameters: JSON, - *, - content_type: str = "application/json", - **kwargs: Any - ) -> AsyncLROPoller[_models.IdentityBinding]: - """Creates or updates an identity binding in the specified managed cluster. - - :param resource_group_name: The name of the resource group. The name is case insensitive. - Required. - :type resource_group_name: str - :param resource_name: The name of the managed cluster resource. Required. - :type resource_name: str - :param identity_binding_name: The name of the identity binding. Required. - :type identity_binding_name: str - :param parameters: The identity binding to create or update. Required. - :type parameters: JSON - :keyword content_type: Body Parameter content-type. Content type parameter for JSON body. - Default value is "application/json". - :paramtype content_type: str - :return: An instance of AsyncLROPoller that returns IdentityBinding. The IdentityBinding is - compatible with MutableMapping - :rtype: ~azure.core.polling.AsyncLROPoller[~azure.mgmt.containerservice.models.IdentityBinding] - :raises ~azure.core.exceptions.HttpResponseError: - """ - - @overload - async def begin_create_or_update( - self, - resource_group_name: str, - resource_name: str, - identity_binding_name: str, - parameters: IO[bytes], - *, - content_type: str = "application/json", - **kwargs: Any - ) -> AsyncLROPoller[_models.IdentityBinding]: - """Creates or updates an identity binding in the specified managed cluster. - - :param resource_group_name: The name of the resource group. The name is case insensitive. - Required. - :type resource_group_name: str - :param resource_name: The name of the managed cluster resource. Required. - :type resource_name: str - :param identity_binding_name: The name of the identity binding. Required. - :type identity_binding_name: str - :param parameters: The identity binding to create or update. Required. - :type parameters: IO[bytes] - :keyword content_type: Body Parameter content-type. Content type parameter for binary body. - Default value is "application/json". - :paramtype content_type: str - :return: An instance of AsyncLROPoller that returns IdentityBinding. The IdentityBinding is - compatible with MutableMapping - :rtype: ~azure.core.polling.AsyncLROPoller[~azure.mgmt.containerservice.models.IdentityBinding] - :raises ~azure.core.exceptions.HttpResponseError: - """ - - @distributed_trace_async - @api_version_validation( - method_added_on="2026-03-02-preview", - params_added_on={ - "2026-03-02-preview": [ - "api_version", - "subscription_id", - "resource_group_name", - "resource_name", - "identity_binding_name", - "content_type", - "accept", - ] - }, - api_versions_list=["2026-03-02-preview"], - ) - async def begin_create_or_update( - self, - resource_group_name: str, - resource_name: str, - identity_binding_name: str, - parameters: Union[_models.IdentityBinding, JSON, IO[bytes]], - **kwargs: Any - ) -> AsyncLROPoller[_models.IdentityBinding]: - """Creates or updates an identity binding in the specified managed cluster. - - :param resource_group_name: The name of the resource group. The name is case insensitive. - Required. - :type resource_group_name: str - :param resource_name: The name of the managed cluster resource. Required. - :type resource_name: str - :param identity_binding_name: The name of the identity binding. Required. - :type identity_binding_name: str - :param parameters: The identity binding to create or update. Is one of the following types: - IdentityBinding, JSON, IO[bytes] Required. - :type parameters: ~azure.mgmt.containerservice.models.IdentityBinding or JSON or IO[bytes] - :return: An instance of AsyncLROPoller that returns IdentityBinding. The IdentityBinding is - compatible with MutableMapping - :rtype: ~azure.core.polling.AsyncLROPoller[~azure.mgmt.containerservice.models.IdentityBinding] - :raises ~azure.core.exceptions.HttpResponseError: - """ - _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) - _params = kwargs.pop("params", {}) or {} - - content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) - cls: ClsType[_models.IdentityBinding] = kwargs.pop("cls", None) - polling: Union[bool, AsyncPollingMethod] = kwargs.pop("polling", True) - lro_delay = kwargs.pop("polling_interval", self._config.polling_interval) - cont_token: Optional[str] = kwargs.pop("continuation_token", None) - if cont_token is None: - raw_result = await self._create_or_update_initial( - resource_group_name=resource_group_name, - resource_name=resource_name, - identity_binding_name=identity_binding_name, - parameters=parameters, - content_type=content_type, - cls=lambda x, y, z: x, - headers=_headers, - params=_params, - **kwargs - ) - await raw_result.http_response.read() # type: ignore - kwargs.pop("error_map", None) - - def get_long_running_output(pipeline_response): - response = pipeline_response.http_response - deserialized = _deserialize(_models.IdentityBinding, response.json()) - if cls: - return cls(pipeline_response, deserialized, {}) # type: ignore - return deserialized - - path_format_arguments = { - "endpoint": self._serialize.url("self._config.base_url", self._config.base_url, "str", skip_quote=True), - } - - if polling is True: - polling_method: AsyncPollingMethod = cast( - AsyncPollingMethod, AsyncARMPolling(lro_delay, path_format_arguments=path_format_arguments, **kwargs) - ) - elif polling is False: - polling_method = cast(AsyncPollingMethod, AsyncNoPolling()) - else: - polling_method = polling - if cont_token: - return AsyncLROPoller[_models.IdentityBinding].from_continuation_token( - polling_method=polling_method, - continuation_token=cont_token, - client=self._client, - deserialization_callback=get_long_running_output, - ) - return AsyncLROPoller[_models.IdentityBinding]( - self._client, raw_result, get_long_running_output, polling_method # type: ignore - ) - - @api_version_validation( - method_added_on="2026-03-02-preview", - params_added_on={ - "2026-03-02-preview": [ - "api_version", - "subscription_id", - "resource_group_name", - "resource_name", - "identity_binding_name", - ] - }, - api_versions_list=["2026-03-02-preview"], - ) - async def _delete_initial( - self, resource_group_name: str, resource_name: str, identity_binding_name: str, **kwargs: Any - ) -> AsyncIterator[bytes]: - error_map: MutableMapping = { - 401: ClientAuthenticationError, - 404: ResourceNotFoundError, - 409: ResourceExistsError, - 304: ResourceNotModifiedError, - } - error_map.update(kwargs.pop("error_map", {}) or {}) - - _headers = kwargs.pop("headers", {}) or {} - _params = kwargs.pop("params", {}) or {} - - cls: ClsType[AsyncIterator[bytes]] = kwargs.pop("cls", None) - - _request = build_identity_bindings_delete_request( - resource_group_name=resource_group_name, - resource_name=resource_name, - identity_binding_name=identity_binding_name, - subscription_id=self._config.subscription_id, - api_version=self._config.api_version, - headers=_headers, - params=_params, - ) - path_format_arguments = { - "endpoint": self._serialize.url("self._config.base_url", self._config.base_url, "str", skip_quote=True), - } - _request.url = self._client.format_url(_request.url, **path_format_arguments) - - _decompress = kwargs.pop("decompress", True) - _stream = True - pipeline_response: PipelineResponse = await self._client._pipeline.run( # pylint: disable=protected-access - _request, stream=_stream, **kwargs - ) - - response = pipeline_response.http_response - - if response.status_code not in [202, 204]: - try: - await response.read() # Load the body in memory and close the socket - except (StreamConsumedError, StreamClosedError): - pass - map_error(status_code=response.status_code, response=response, error_map=error_map) - error = _failsafe_deserialize( - _models.ErrorResponse, - response, - ) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - - response_headers = {} - if response.status_code == 202: - response_headers["Azure-AsyncOperation"] = self._deserialize( - "str", response.headers.get("Azure-AsyncOperation") - ) - response_headers["Location"] = self._deserialize("str", response.headers.get("Location")) - response_headers["Retry-After"] = self._deserialize("int", response.headers.get("Retry-After")) - - deserialized = response.iter_bytes() if _decompress else response.iter_raw() - - if cls: - return cls(pipeline_response, deserialized, response_headers) # type: ignore - - return deserialized # type: ignore - - @distributed_trace_async - @api_version_validation( - method_added_on="2026-03-02-preview", - params_added_on={ - "2026-03-02-preview": [ - "api_version", - "subscription_id", - "resource_group_name", - "resource_name", - "identity_binding_name", - ] - }, - api_versions_list=["2026-03-02-preview"], - ) - async def begin_delete( - self, resource_group_name: str, resource_name: str, identity_binding_name: str, **kwargs: Any - ) -> AsyncLROPoller[None]: - """Deletes an identity binding in the specified managed cluster. - - :param resource_group_name: The name of the resource group. The name is case insensitive. - Required. - :type resource_group_name: str - :param resource_name: The name of the managed cluster resource. Required. - :type resource_name: str - :param identity_binding_name: The name of the identity binding. Required. - :type identity_binding_name: str - :return: An instance of AsyncLROPoller that returns None - :rtype: ~azure.core.polling.AsyncLROPoller[None] - :raises ~azure.core.exceptions.HttpResponseError: - """ - _headers = kwargs.pop("headers", {}) or {} - _params = kwargs.pop("params", {}) or {} - - cls: ClsType[None] = kwargs.pop("cls", None) - polling: Union[bool, AsyncPollingMethod] = kwargs.pop("polling", True) - lro_delay = kwargs.pop("polling_interval", self._config.polling_interval) - cont_token: Optional[str] = kwargs.pop("continuation_token", None) - if cont_token is None: - raw_result = await self._delete_initial( - resource_group_name=resource_group_name, - resource_name=resource_name, - identity_binding_name=identity_binding_name, - cls=lambda x, y, z: x, - headers=_headers, - params=_params, - **kwargs - ) - await raw_result.http_response.read() # type: ignore - kwargs.pop("error_map", None) - - def get_long_running_output(pipeline_response): # pylint: disable=inconsistent-return-statements - if cls: - return cls(pipeline_response, None, {}) # type: ignore - - path_format_arguments = { - "endpoint": self._serialize.url("self._config.base_url", self._config.base_url, "str", skip_quote=True), - } - - if polling is True: - polling_method: AsyncPollingMethod = cast( - AsyncPollingMethod, AsyncARMPolling(lro_delay, path_format_arguments=path_format_arguments, **kwargs) - ) - elif polling is False: - polling_method = cast(AsyncPollingMethod, AsyncNoPolling()) - else: - polling_method = polling - if cont_token: - return AsyncLROPoller[None].from_continuation_token( - polling_method=polling_method, - continuation_token=cont_token, - client=self._client, - deserialization_callback=get_long_running_output, - ) - return AsyncLROPoller[None](self._client, raw_result, get_long_running_output, polling_method) # type: ignore - - @distributed_trace - @api_version_validation( - method_added_on="2026-03-02-preview", - params_added_on={ - "2026-03-02-preview": ["api_version", "subscription_id", "resource_group_name", "resource_name", "accept"] - }, - api_versions_list=["2026-03-02-preview"], - ) - def list_by_managed_cluster( - self, resource_group_name: str, resource_name: str, **kwargs: Any - ) -> AsyncItemPaged["_models.IdentityBinding"]: - """Gets a list of identity bindings in the specified managed cluster. - - :param resource_group_name: The name of the resource group. The name is case insensitive. - Required. - :type resource_group_name: str - :param resource_name: The name of the managed cluster resource. Required. - :type resource_name: str - :return: An iterator like instance of IdentityBinding - :rtype: - ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.containerservice.models.IdentityBinding] - :raises ~azure.core.exceptions.HttpResponseError: - """ - _headers = kwargs.pop("headers", {}) or {} - _params = kwargs.pop("params", {}) or {} - - cls: ClsType[List[_models.IdentityBinding]] = kwargs.pop("cls", None) - - error_map: MutableMapping = { - 401: ClientAuthenticationError, - 404: ResourceNotFoundError, - 409: ResourceExistsError, - 304: ResourceNotModifiedError, - } - error_map.update(kwargs.pop("error_map", {}) or {}) - - def prepare_request(next_link=None): - if not next_link: - - _request = build_identity_bindings_list_by_managed_cluster_request( - resource_group_name=resource_group_name, - resource_name=resource_name, - subscription_id=self._config.subscription_id, - api_version=self._config.api_version, - headers=_headers, - params=_params, - ) - path_format_arguments = { - "endpoint": self._serialize.url( - "self._config.base_url", self._config.base_url, "str", skip_quote=True - ), - } - _request.url = self._client.format_url(_request.url, **path_format_arguments) - - else: - # make call to next link with the client's api-version - _parsed_next_link = urllib.parse.urlparse(next_link) - _next_request_params = case_insensitive_dict( - { - key: [urllib.parse.quote(v) for v in value] - for key, value in urllib.parse.parse_qs(_parsed_next_link.query).items() - } - ) - _next_request_params["api-version"] = self._config.api_version - _request = HttpRequest( - "GET", - urllib.parse.urljoin(next_link, _parsed_next_link.path), - headers=_headers, - params=_next_request_params, - ) - path_format_arguments = { - "endpoint": self._serialize.url( - "self._config.base_url", self._config.base_url, "str", skip_quote=True - ), - } - _request.url = self._client.format_url(_request.url, **path_format_arguments) - - return _request - - async def extract_data(pipeline_response): - deserialized = pipeline_response.http_response.json() - list_of_elem = _deserialize( - List[_models.IdentityBinding], - deserialized.get("value", []), - ) - if cls: - list_of_elem = cls(list_of_elem) # type: ignore - return deserialized.get("nextLink") or None, AsyncList(list_of_elem) - - async def get_next(next_link=None): - _request = prepare_request(next_link) - - _stream = False - pipeline_response: PipelineResponse = await self._client._pipeline.run( # pylint: disable=protected-access - _request, stream=_stream, **kwargs - ) - response = pipeline_response.http_response - - if response.status_code not in [200]: - map_error(status_code=response.status_code, response=response, error_map=error_map) - error = _failsafe_deserialize( - _models.ErrorResponse, - response, - ) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - - return pipeline_response - - return AsyncItemPaged(get_next, extract_data) - - -class JWTAuthenticatorsOperations: - """ - .. warning:: - **DO NOT** instantiate this class directly. - - Instead, you should access the following operations through - :class:`~azure.mgmt.containerservice.aio.ContainerServiceClient`'s - :attr:`jwt_authenticators` attribute. - """ - - def __init__(self, *args, **kwargs) -> None: - input_args = list(args) - self._client: AsyncPipelineClient = input_args.pop(0) if input_args else kwargs.pop("client") - self._config: ContainerServiceClientConfiguration = input_args.pop(0) if input_args else kwargs.pop("config") - self._serialize: Serializer = input_args.pop(0) if input_args else kwargs.pop("serializer") - self._deserialize: Deserializer = input_args.pop(0) if input_args else kwargs.pop("deserializer") - - @distributed_trace_async - @api_version_validation( - method_added_on="2026-03-02-preview", - params_added_on={ - "2026-03-02-preview": [ - "api_version", - "subscription_id", - "resource_group_name", - "resource_name", - "jwt_authenticator_name", - "accept", - ] - }, - api_versions_list=["2026-03-02-preview"], - ) - async def get( - self, resource_group_name: str, resource_name: str, jwt_authenticator_name: str, **kwargs: Any - ) -> _models.JWTAuthenticator: - """Gets the specified JWT authenticator of a managed cluster. - - :param resource_group_name: The name of the resource group. The name is case insensitive. - Required. - :type resource_group_name: str - :param resource_name: The name of the managed cluster resource. Required. - :type resource_name: str - :param jwt_authenticator_name: The name of the JWT authenticator. Required. - :type jwt_authenticator_name: str - :return: JWTAuthenticator. The JWTAuthenticator is compatible with MutableMapping - :rtype: ~azure.mgmt.containerservice.models.JWTAuthenticator - :raises ~azure.core.exceptions.HttpResponseError: - """ - error_map: MutableMapping = { - 401: ClientAuthenticationError, - 404: ResourceNotFoundError, - 409: ResourceExistsError, - 304: ResourceNotModifiedError, - } - error_map.update(kwargs.pop("error_map", {}) or {}) - - _headers = kwargs.pop("headers", {}) or {} - _params = kwargs.pop("params", {}) or {} - - cls: ClsType[_models.JWTAuthenticator] = kwargs.pop("cls", None) - - _request = build_jwt_authenticators_get_request( - resource_group_name=resource_group_name, - resource_name=resource_name, - jwt_authenticator_name=jwt_authenticator_name, - subscription_id=self._config.subscription_id, - api_version=self._config.api_version, - headers=_headers, - params=_params, - ) - path_format_arguments = { - "endpoint": self._serialize.url("self._config.base_url", self._config.base_url, "str", skip_quote=True), - } - _request.url = self._client.format_url(_request.url, **path_format_arguments) - - _decompress = kwargs.pop("decompress", True) - _stream = kwargs.pop("stream", False) - pipeline_response: PipelineResponse = await self._client._pipeline.run( # pylint: disable=protected-access - _request, stream=_stream, **kwargs - ) - - response = pipeline_response.http_response - - if response.status_code not in [200]: - if _stream: - try: - await response.read() # Load the body in memory and close the socket - except (StreamConsumedError, StreamClosedError): - pass - map_error(status_code=response.status_code, response=response, error_map=error_map) - error = _failsafe_deserialize( - _models.ErrorResponse, - response, - ) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - - if _stream: - deserialized = response.iter_bytes() if _decompress else response.iter_raw() - else: - deserialized = _deserialize(_models.JWTAuthenticator, response.json()) - - if cls: - return cls(pipeline_response, deserialized, {}) # type: ignore - - return deserialized # type: ignore - - @api_version_validation( - method_added_on="2026-03-02-preview", - params_added_on={ - "2026-03-02-preview": [ - "api_version", - "subscription_id", - "resource_group_name", - "resource_name", - "jwt_authenticator_name", - "content_type", - "accept", - ] - }, - api_versions_list=["2026-03-02-preview"], - ) - async def _create_or_update_initial( - self, - resource_group_name: str, - resource_name: str, - jwt_authenticator_name: str, - parameters: Union[_models.JWTAuthenticator, JSON, IO[bytes]], - **kwargs: Any - ) -> AsyncIterator[bytes]: - error_map: MutableMapping = { - 401: ClientAuthenticationError, - 404: ResourceNotFoundError, - 409: ResourceExistsError, - 304: ResourceNotModifiedError, - } - error_map.update(kwargs.pop("error_map", {}) or {}) - - _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) - _params = kwargs.pop("params", {}) or {} - - content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) - cls: ClsType[AsyncIterator[bytes]] = kwargs.pop("cls", None) - - content_type = content_type or "application/json" - _content = None - if isinstance(parameters, (IOBase, bytes)): - _content = parameters - else: - _content = json.dumps(parameters, cls=SdkJSONEncoder, exclude_readonly=True) # type: ignore - - _request = build_jwt_authenticators_create_or_update_request( - resource_group_name=resource_group_name, - resource_name=resource_name, - jwt_authenticator_name=jwt_authenticator_name, - subscription_id=self._config.subscription_id, - content_type=content_type, - api_version=self._config.api_version, - content=_content, - headers=_headers, - params=_params, - ) - path_format_arguments = { - "endpoint": self._serialize.url("self._config.base_url", self._config.base_url, "str", skip_quote=True), - } - _request.url = self._client.format_url(_request.url, **path_format_arguments) - - _decompress = kwargs.pop("decompress", True) - _stream = True - pipeline_response: PipelineResponse = await self._client._pipeline.run( # pylint: disable=protected-access - _request, stream=_stream, **kwargs - ) - - response = pipeline_response.http_response - - if response.status_code not in [200, 201]: - try: - await response.read() # Load the body in memory and close the socket - except (StreamConsumedError, StreamClosedError): - pass - map_error(status_code=response.status_code, response=response, error_map=error_map) - error = _failsafe_deserialize( - _models.ErrorResponse, - response, - ) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - - response_headers = {} - if response.status_code == 201: - response_headers["Location"] = self._deserialize("str", response.headers.get("Location")) - response_headers["Retry-After"] = self._deserialize("int", response.headers.get("Retry-After")) - - deserialized = response.iter_bytes() if _decompress else response.iter_raw() - - if cls: - return cls(pipeline_response, deserialized, response_headers) # type: ignore - - return deserialized # type: ignore - - @overload - async def begin_create_or_update( - self, - resource_group_name: str, - resource_name: str, - jwt_authenticator_name: str, - parameters: _models.JWTAuthenticator, - *, - content_type: str = "application/json", - **kwargs: Any - ) -> AsyncLROPoller[_models.JWTAuthenticator]: - """Creates or updates JWT authenticator in the managed cluster and updates the managed cluster to - apply the settings. - - :param resource_group_name: The name of the resource group. The name is case insensitive. - Required. - :type resource_group_name: str - :param resource_name: The name of the managed cluster resource. Required. - :type resource_name: str - :param jwt_authenticator_name: The name of the JWT authenticator. Required. - :type jwt_authenticator_name: str - :param parameters: The JWT authenticator to create or update. Required. - :type parameters: ~azure.mgmt.containerservice.models.JWTAuthenticator - :keyword content_type: Body Parameter content-type. Content type parameter for JSON body. - Default value is "application/json". - :paramtype content_type: str - :return: An instance of AsyncLROPoller that returns JWTAuthenticator. The JWTAuthenticator is - compatible with MutableMapping - :rtype: - ~azure.core.polling.AsyncLROPoller[~azure.mgmt.containerservice.models.JWTAuthenticator] - :raises ~azure.core.exceptions.HttpResponseError: - """ - - @overload - async def begin_create_or_update( - self, - resource_group_name: str, - resource_name: str, - jwt_authenticator_name: str, - parameters: JSON, - *, - content_type: str = "application/json", - **kwargs: Any - ) -> AsyncLROPoller[_models.JWTAuthenticator]: - """Creates or updates JWT authenticator in the managed cluster and updates the managed cluster to - apply the settings. - - :param resource_group_name: The name of the resource group. The name is case insensitive. - Required. - :type resource_group_name: str - :param resource_name: The name of the managed cluster resource. Required. - :type resource_name: str - :param jwt_authenticator_name: The name of the JWT authenticator. Required. - :type jwt_authenticator_name: str - :param parameters: The JWT authenticator to create or update. Required. - :type parameters: JSON - :keyword content_type: Body Parameter content-type. Content type parameter for JSON body. - Default value is "application/json". - :paramtype content_type: str - :return: An instance of AsyncLROPoller that returns JWTAuthenticator. The JWTAuthenticator is - compatible with MutableMapping - :rtype: - ~azure.core.polling.AsyncLROPoller[~azure.mgmt.containerservice.models.JWTAuthenticator] - :raises ~azure.core.exceptions.HttpResponseError: - """ - - @overload - async def begin_create_or_update( - self, - resource_group_name: str, - resource_name: str, - jwt_authenticator_name: str, - parameters: IO[bytes], - *, - content_type: str = "application/json", - **kwargs: Any - ) -> AsyncLROPoller[_models.JWTAuthenticator]: - """Creates or updates JWT authenticator in the managed cluster and updates the managed cluster to - apply the settings. - - :param resource_group_name: The name of the resource group. The name is case insensitive. - Required. - :type resource_group_name: str - :param resource_name: The name of the managed cluster resource. Required. - :type resource_name: str - :param jwt_authenticator_name: The name of the JWT authenticator. Required. - :type jwt_authenticator_name: str - :param parameters: The JWT authenticator to create or update. Required. - :type parameters: IO[bytes] - :keyword content_type: Body Parameter content-type. Content type parameter for binary body. - Default value is "application/json". - :paramtype content_type: str - :return: An instance of AsyncLROPoller that returns JWTAuthenticator. The JWTAuthenticator is - compatible with MutableMapping - :rtype: - ~azure.core.polling.AsyncLROPoller[~azure.mgmt.containerservice.models.JWTAuthenticator] - :raises ~azure.core.exceptions.HttpResponseError: - """ - - @distributed_trace_async - @api_version_validation( - method_added_on="2026-03-02-preview", - params_added_on={ - "2026-03-02-preview": [ - "api_version", - "subscription_id", - "resource_group_name", - "resource_name", - "jwt_authenticator_name", - "content_type", - "accept", - ] - }, - api_versions_list=["2026-03-02-preview"], - ) - async def begin_create_or_update( - self, - resource_group_name: str, - resource_name: str, - jwt_authenticator_name: str, - parameters: Union[_models.JWTAuthenticator, JSON, IO[bytes]], - **kwargs: Any - ) -> AsyncLROPoller[_models.JWTAuthenticator]: - """Creates or updates JWT authenticator in the managed cluster and updates the managed cluster to - apply the settings. - - :param resource_group_name: The name of the resource group. The name is case insensitive. - Required. - :type resource_group_name: str - :param resource_name: The name of the managed cluster resource. Required. - :type resource_name: str - :param jwt_authenticator_name: The name of the JWT authenticator. Required. - :type jwt_authenticator_name: str - :param parameters: The JWT authenticator to create or update. Is one of the following types: - JWTAuthenticator, JSON, IO[bytes] Required. - :type parameters: ~azure.mgmt.containerservice.models.JWTAuthenticator or JSON or IO[bytes] - :return: An instance of AsyncLROPoller that returns JWTAuthenticator. The JWTAuthenticator is - compatible with MutableMapping - :rtype: - ~azure.core.polling.AsyncLROPoller[~azure.mgmt.containerservice.models.JWTAuthenticator] - :raises ~azure.core.exceptions.HttpResponseError: - """ - _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) - _params = kwargs.pop("params", {}) or {} - - content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) - cls: ClsType[_models.JWTAuthenticator] = kwargs.pop("cls", None) - polling: Union[bool, AsyncPollingMethod] = kwargs.pop("polling", True) - lro_delay = kwargs.pop("polling_interval", self._config.polling_interval) - cont_token: Optional[str] = kwargs.pop("continuation_token", None) - if cont_token is None: - raw_result = await self._create_or_update_initial( - resource_group_name=resource_group_name, - resource_name=resource_name, - jwt_authenticator_name=jwt_authenticator_name, - parameters=parameters, - content_type=content_type, - cls=lambda x, y, z: x, - headers=_headers, - params=_params, - **kwargs - ) - await raw_result.http_response.read() # type: ignore - kwargs.pop("error_map", None) - - def get_long_running_output(pipeline_response): - response = pipeline_response.http_response - deserialized = _deserialize(_models.JWTAuthenticator, response.json()) - if cls: - return cls(pipeline_response, deserialized, {}) # type: ignore - return deserialized - - path_format_arguments = { - "endpoint": self._serialize.url("self._config.base_url", self._config.base_url, "str", skip_quote=True), - } - - if polling is True: - polling_method: AsyncPollingMethod = cast( - AsyncPollingMethod, AsyncARMPolling(lro_delay, path_format_arguments=path_format_arguments, **kwargs) - ) - elif polling is False: - polling_method = cast(AsyncPollingMethod, AsyncNoPolling()) - else: - polling_method = polling - if cont_token: - return AsyncLROPoller[_models.JWTAuthenticator].from_continuation_token( - polling_method=polling_method, - continuation_token=cont_token, - client=self._client, - deserialization_callback=get_long_running_output, - ) - return AsyncLROPoller[_models.JWTAuthenticator]( - self._client, raw_result, get_long_running_output, polling_method # type: ignore - ) - - @api_version_validation( - method_added_on="2026-03-02-preview", - params_added_on={ - "2026-03-02-preview": [ - "api_version", - "subscription_id", - "resource_group_name", - "resource_name", - "jwt_authenticator_name", - ] - }, - api_versions_list=["2026-03-02-preview"], - ) - async def _delete_initial( - self, resource_group_name: str, resource_name: str, jwt_authenticator_name: str, **kwargs: Any - ) -> AsyncIterator[bytes]: - error_map: MutableMapping = { - 401: ClientAuthenticationError, - 404: ResourceNotFoundError, - 409: ResourceExistsError, - 304: ResourceNotModifiedError, - } - error_map.update(kwargs.pop("error_map", {}) or {}) - - _headers = kwargs.pop("headers", {}) or {} - _params = kwargs.pop("params", {}) or {} - - cls: ClsType[AsyncIterator[bytes]] = kwargs.pop("cls", None) - - _request = build_jwt_authenticators_delete_request( - resource_group_name=resource_group_name, - resource_name=resource_name, - jwt_authenticator_name=jwt_authenticator_name, - subscription_id=self._config.subscription_id, - api_version=self._config.api_version, - headers=_headers, - params=_params, - ) - path_format_arguments = { - "endpoint": self._serialize.url("self._config.base_url", self._config.base_url, "str", skip_quote=True), - } - _request.url = self._client.format_url(_request.url, **path_format_arguments) - - _decompress = kwargs.pop("decompress", True) - _stream = True - pipeline_response: PipelineResponse = await self._client._pipeline.run( # pylint: disable=protected-access - _request, stream=_stream, **kwargs - ) - - response = pipeline_response.http_response - - if response.status_code not in [202, 204]: - try: - await response.read() # Load the body in memory and close the socket - except (StreamConsumedError, StreamClosedError): - pass - map_error(status_code=response.status_code, response=response, error_map=error_map) - error = _failsafe_deserialize( - _models.ErrorResponse, - response, - ) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - - response_headers = {} - if response.status_code == 202: - response_headers["Azure-AsyncOperation"] = self._deserialize( - "str", response.headers.get("Azure-AsyncOperation") - ) - response_headers["Location"] = self._deserialize("str", response.headers.get("Location")) - response_headers["Retry-After"] = self._deserialize("int", response.headers.get("Retry-After")) - - deserialized = response.iter_bytes() if _decompress else response.iter_raw() - - if cls: - return cls(pipeline_response, deserialized, response_headers) # type: ignore - - return deserialized # type: ignore - - @distributed_trace_async - @api_version_validation( - method_added_on="2026-03-02-preview", - params_added_on={ - "2026-03-02-preview": [ - "api_version", - "subscription_id", - "resource_group_name", - "resource_name", - "jwt_authenticator_name", - ] - }, - api_versions_list=["2026-03-02-preview"], - ) - async def begin_delete( - self, resource_group_name: str, resource_name: str, jwt_authenticator_name: str, **kwargs: Any - ) -> AsyncLROPoller[None]: - """Deletes a JWT authenticator and updates the managed cluster to apply the settings. - - :param resource_group_name: The name of the resource group. The name is case insensitive. - Required. - :type resource_group_name: str - :param resource_name: The name of the managed cluster resource. Required. - :type resource_name: str - :param jwt_authenticator_name: The name of the JWT authenticator. Required. - :type jwt_authenticator_name: str - :return: An instance of AsyncLROPoller that returns None - :rtype: ~azure.core.polling.AsyncLROPoller[None] - :raises ~azure.core.exceptions.HttpResponseError: - """ - _headers = kwargs.pop("headers", {}) or {} - _params = kwargs.pop("params", {}) or {} - - cls: ClsType[None] = kwargs.pop("cls", None) - polling: Union[bool, AsyncPollingMethod] = kwargs.pop("polling", True) - lro_delay = kwargs.pop("polling_interval", self._config.polling_interval) - cont_token: Optional[str] = kwargs.pop("continuation_token", None) - if cont_token is None: - raw_result = await self._delete_initial( - resource_group_name=resource_group_name, - resource_name=resource_name, - jwt_authenticator_name=jwt_authenticator_name, - cls=lambda x, y, z: x, - headers=_headers, - params=_params, - **kwargs - ) - await raw_result.http_response.read() # type: ignore - kwargs.pop("error_map", None) - - def get_long_running_output(pipeline_response): # pylint: disable=inconsistent-return-statements - if cls: - return cls(pipeline_response, None, {}) # type: ignore - - path_format_arguments = { - "endpoint": self._serialize.url("self._config.base_url", self._config.base_url, "str", skip_quote=True), - } - - if polling is True: - polling_method: AsyncPollingMethod = cast( - AsyncPollingMethod, AsyncARMPolling(lro_delay, path_format_arguments=path_format_arguments, **kwargs) - ) - elif polling is False: - polling_method = cast(AsyncPollingMethod, AsyncNoPolling()) - else: - polling_method = polling - if cont_token: - return AsyncLROPoller[None].from_continuation_token( - polling_method=polling_method, - continuation_token=cont_token, - client=self._client, - deserialization_callback=get_long_running_output, - ) - return AsyncLROPoller[None](self._client, raw_result, get_long_running_output, polling_method) # type: ignore - - @distributed_trace - @api_version_validation( - method_added_on="2026-03-02-preview", - params_added_on={ - "2026-03-02-preview": ["api_version", "subscription_id", "resource_group_name", "resource_name", "accept"] - }, - api_versions_list=["2026-03-02-preview"], - ) - def list_by_managed_cluster( - self, resource_group_name: str, resource_name: str, **kwargs: Any - ) -> AsyncItemPaged["_models.JWTAuthenticator"]: - """Gets a list of JWT authenticators in the specified managed cluster. - - :param resource_group_name: The name of the resource group. The name is case insensitive. - Required. - :type resource_group_name: str - :param resource_name: The name of the managed cluster resource. Required. - :type resource_name: str - :return: An iterator like instance of JWTAuthenticator - :rtype: - ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.containerservice.models.JWTAuthenticator] - :raises ~azure.core.exceptions.HttpResponseError: - """ - _headers = kwargs.pop("headers", {}) or {} - _params = kwargs.pop("params", {}) or {} - - cls: ClsType[List[_models.JWTAuthenticator]] = kwargs.pop("cls", None) - - error_map: MutableMapping = { - 401: ClientAuthenticationError, - 404: ResourceNotFoundError, - 409: ResourceExistsError, - 304: ResourceNotModifiedError, - } - error_map.update(kwargs.pop("error_map", {}) or {}) - - def prepare_request(next_link=None): - if not next_link: - - _request = build_jwt_authenticators_list_by_managed_cluster_request( - resource_group_name=resource_group_name, - resource_name=resource_name, - subscription_id=self._config.subscription_id, - api_version=self._config.api_version, - headers=_headers, - params=_params, - ) - path_format_arguments = { - "endpoint": self._serialize.url( - "self._config.base_url", self._config.base_url, "str", skip_quote=True - ), - } - _request.url = self._client.format_url(_request.url, **path_format_arguments) - - else: - # make call to next link with the client's api-version - _parsed_next_link = urllib.parse.urlparse(next_link) - _next_request_params = case_insensitive_dict( - { - key: [urllib.parse.quote(v) for v in value] - for key, value in urllib.parse.parse_qs(_parsed_next_link.query).items() - } - ) - _next_request_params["api-version"] = self._config.api_version - _request = HttpRequest( - "GET", - urllib.parse.urljoin(next_link, _parsed_next_link.path), - headers=_headers, - params=_next_request_params, - ) - path_format_arguments = { - "endpoint": self._serialize.url( - "self._config.base_url", self._config.base_url, "str", skip_quote=True - ), - } - _request.url = self._client.format_url(_request.url, **path_format_arguments) - - return _request - - async def extract_data(pipeline_response): - deserialized = pipeline_response.http_response.json() - list_of_elem = _deserialize( - List[_models.JWTAuthenticator], - deserialized.get("value", []), - ) - if cls: - list_of_elem = cls(list_of_elem) # type: ignore - return deserialized.get("nextLink") or None, AsyncList(list_of_elem) - - async def get_next(next_link=None): - _request = prepare_request(next_link) - - _stream = False - pipeline_response: PipelineResponse = await self._client._pipeline.run( # pylint: disable=protected-access - _request, stream=_stream, **kwargs - ) - response = pipeline_response.http_response - - if response.status_code not in [200]: - map_error(status_code=response.status_code, response=response, error_map=error_map) - error = _failsafe_deserialize( - _models.ErrorResponse, - response, - ) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - - return pipeline_response - - return AsyncItemPaged(get_next, extract_data) - - -class MeshMembershipsOperations: - """ - .. warning:: - **DO NOT** instantiate this class directly. - - Instead, you should access the following operations through - :class:`~azure.mgmt.containerservice.aio.ContainerServiceClient`'s - :attr:`mesh_memberships` attribute. - """ - - def __init__(self, *args, **kwargs) -> None: - input_args = list(args) - self._client: AsyncPipelineClient = input_args.pop(0) if input_args else kwargs.pop("client") - self._config: ContainerServiceClientConfiguration = input_args.pop(0) if input_args else kwargs.pop("config") - self._serialize: Serializer = input_args.pop(0) if input_args else kwargs.pop("serializer") - self._deserialize: Deserializer = input_args.pop(0) if input_args else kwargs.pop("deserializer") - - @distributed_trace_async - @api_version_validation( - method_added_on="2026-03-02-preview", - params_added_on={ - "2026-03-02-preview": [ - "api_version", - "subscription_id", - "resource_group_name", - "resource_name", - "mesh_membership_name", - "accept", - ] - }, - api_versions_list=["2026-03-02-preview"], - ) - async def get( - self, resource_group_name: str, resource_name: str, mesh_membership_name: str, **kwargs: Any - ) -> _models.MeshMembership: - """Gets the mesh membership of a managed cluster. - - :param resource_group_name: The name of the resource group. The name is case insensitive. - Required. - :type resource_group_name: str - :param resource_name: The name of the managed cluster resource. Required. - :type resource_name: str - :param mesh_membership_name: The name of the mesh membership. Required. - :type mesh_membership_name: str - :return: MeshMembership. The MeshMembership is compatible with MutableMapping - :rtype: ~azure.mgmt.containerservice.models.MeshMembership - :raises ~azure.core.exceptions.HttpResponseError: - """ - error_map: MutableMapping = { - 401: ClientAuthenticationError, - 404: ResourceNotFoundError, - 409: ResourceExistsError, - 304: ResourceNotModifiedError, - } - error_map.update(kwargs.pop("error_map", {}) or {}) - - _headers = kwargs.pop("headers", {}) or {} - _params = kwargs.pop("params", {}) or {} - - cls: ClsType[_models.MeshMembership] = kwargs.pop("cls", None) - - _request = build_mesh_memberships_get_request( - resource_group_name=resource_group_name, - resource_name=resource_name, - mesh_membership_name=mesh_membership_name, - subscription_id=self._config.subscription_id, - api_version=self._config.api_version, - headers=_headers, - params=_params, - ) - path_format_arguments = { - "endpoint": self._serialize.url("self._config.base_url", self._config.base_url, "str", skip_quote=True), - } - _request.url = self._client.format_url(_request.url, **path_format_arguments) - - _decompress = kwargs.pop("decompress", True) - _stream = kwargs.pop("stream", False) - pipeline_response: PipelineResponse = await self._client._pipeline.run( # pylint: disable=protected-access - _request, stream=_stream, **kwargs - ) - - response = pipeline_response.http_response - - if response.status_code not in [200]: - if _stream: - try: - await response.read() # Load the body in memory and close the socket - except (StreamConsumedError, StreamClosedError): - pass - map_error(status_code=response.status_code, response=response, error_map=error_map) - error = _failsafe_deserialize( - _models.ErrorResponse, - response, - ) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - - if _stream: - deserialized = response.iter_bytes() if _decompress else response.iter_raw() - else: - deserialized = _deserialize(_models.MeshMembership, response.json()) - - if cls: - return cls(pipeline_response, deserialized, {}) # type: ignore - - return deserialized # type: ignore - - @api_version_validation( - method_added_on="2026-03-02-preview", - params_added_on={ - "2026-03-02-preview": [ - "api_version", - "subscription_id", - "resource_group_name", - "resource_name", - "mesh_membership_name", - "content_type", - "accept", - ] - }, - api_versions_list=["2026-03-02-preview"], - ) - async def _create_or_update_initial( - self, - resource_group_name: str, - resource_name: str, - mesh_membership_name: str, - parameters: Union[_models.MeshMembership, JSON, IO[bytes]], - **kwargs: Any - ) -> AsyncIterator[bytes]: - error_map: MutableMapping = { - 401: ClientAuthenticationError, - 404: ResourceNotFoundError, - 409: ResourceExistsError, - 304: ResourceNotModifiedError, - } - error_map.update(kwargs.pop("error_map", {}) or {}) - - _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) - _params = kwargs.pop("params", {}) or {} - - content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) - cls: ClsType[AsyncIterator[bytes]] = kwargs.pop("cls", None) - - content_type = content_type or "application/json" - _content = None - if isinstance(parameters, (IOBase, bytes)): - _content = parameters - else: - _content = json.dumps(parameters, cls=SdkJSONEncoder, exclude_readonly=True) # type: ignore - - _request = build_mesh_memberships_create_or_update_request( - resource_group_name=resource_group_name, - resource_name=resource_name, - mesh_membership_name=mesh_membership_name, - subscription_id=self._config.subscription_id, - content_type=content_type, - api_version=self._config.api_version, - content=_content, - headers=_headers, - params=_params, - ) - path_format_arguments = { - "endpoint": self._serialize.url("self._config.base_url", self._config.base_url, "str", skip_quote=True), - } - _request.url = self._client.format_url(_request.url, **path_format_arguments) - - _decompress = kwargs.pop("decompress", True) - _stream = True - pipeline_response: PipelineResponse = await self._client._pipeline.run( # pylint: disable=protected-access - _request, stream=_stream, **kwargs - ) - - response = pipeline_response.http_response - - if response.status_code not in [200, 201]: - try: - await response.read() # Load the body in memory and close the socket - except (StreamConsumedError, StreamClosedError): - pass - map_error(status_code=response.status_code, response=response, error_map=error_map) - error = _failsafe_deserialize( - _models.ErrorResponse, - response, - ) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - - response_headers = {} - if response.status_code == 201: - response_headers["Azure-AsyncOperation"] = self._deserialize( - "str", response.headers.get("Azure-AsyncOperation") - ) - response_headers["Retry-After"] = self._deserialize("int", response.headers.get("Retry-After")) - - deserialized = response.iter_bytes() if _decompress else response.iter_raw() - - if cls: - return cls(pipeline_response, deserialized, response_headers) # type: ignore - - return deserialized # type: ignore - - @overload - async def begin_create_or_update( - self, - resource_group_name: str, - resource_name: str, - mesh_membership_name: str, - parameters: _models.MeshMembership, - *, - content_type: str = "application/json", - **kwargs: Any - ) -> AsyncLROPoller[_models.MeshMembership]: - """Creates or updates the mesh membership of a managed cluster. - - :param resource_group_name: The name of the resource group. The name is case insensitive. - Required. - :type resource_group_name: str - :param resource_name: The name of the managed cluster resource. Required. - :type resource_name: str - :param mesh_membership_name: The name of the mesh membership. Required. - :type mesh_membership_name: str - :param parameters: The mesh membership to create or update. Required. - :type parameters: ~azure.mgmt.containerservice.models.MeshMembership - :keyword content_type: Body Parameter content-type. Content type parameter for JSON body. - Default value is "application/json". - :paramtype content_type: str - :return: An instance of AsyncLROPoller that returns MeshMembership. The MeshMembership is - compatible with MutableMapping - :rtype: ~azure.core.polling.AsyncLROPoller[~azure.mgmt.containerservice.models.MeshMembership] - :raises ~azure.core.exceptions.HttpResponseError: - """ - - @overload - async def begin_create_or_update( - self, - resource_group_name: str, - resource_name: str, - mesh_membership_name: str, - parameters: JSON, - *, - content_type: str = "application/json", - **kwargs: Any - ) -> AsyncLROPoller[_models.MeshMembership]: - """Creates or updates the mesh membership of a managed cluster. - - :param resource_group_name: The name of the resource group. The name is case insensitive. - Required. - :type resource_group_name: str - :param resource_name: The name of the managed cluster resource. Required. - :type resource_name: str - :param mesh_membership_name: The name of the mesh membership. Required. - :type mesh_membership_name: str - :param parameters: The mesh membership to create or update. Required. - :type parameters: JSON - :keyword content_type: Body Parameter content-type. Content type parameter for JSON body. - Default value is "application/json". - :paramtype content_type: str - :return: An instance of AsyncLROPoller that returns MeshMembership. The MeshMembership is - compatible with MutableMapping - :rtype: ~azure.core.polling.AsyncLROPoller[~azure.mgmt.containerservice.models.MeshMembership] - :raises ~azure.core.exceptions.HttpResponseError: - """ - - @overload - async def begin_create_or_update( - self, - resource_group_name: str, - resource_name: str, - mesh_membership_name: str, - parameters: IO[bytes], - *, - content_type: str = "application/json", - **kwargs: Any - ) -> AsyncLROPoller[_models.MeshMembership]: - """Creates or updates the mesh membership of a managed cluster. - - :param resource_group_name: The name of the resource group. The name is case insensitive. - Required. - :type resource_group_name: str - :param resource_name: The name of the managed cluster resource. Required. - :type resource_name: str - :param mesh_membership_name: The name of the mesh membership. Required. - :type mesh_membership_name: str - :param parameters: The mesh membership to create or update. Required. - :type parameters: IO[bytes] - :keyword content_type: Body Parameter content-type. Content type parameter for binary body. - Default value is "application/json". - :paramtype content_type: str - :return: An instance of AsyncLROPoller that returns MeshMembership. The MeshMembership is - compatible with MutableMapping - :rtype: ~azure.core.polling.AsyncLROPoller[~azure.mgmt.containerservice.models.MeshMembership] - :raises ~azure.core.exceptions.HttpResponseError: - """ - - @distributed_trace_async - @api_version_validation( - method_added_on="2026-03-02-preview", - params_added_on={ - "2026-03-02-preview": [ - "api_version", - "subscription_id", - "resource_group_name", - "resource_name", - "mesh_membership_name", - "content_type", - "accept", - ] - }, - api_versions_list=["2026-03-02-preview"], - ) - async def begin_create_or_update( - self, - resource_group_name: str, - resource_name: str, - mesh_membership_name: str, - parameters: Union[_models.MeshMembership, JSON, IO[bytes]], - **kwargs: Any - ) -> AsyncLROPoller[_models.MeshMembership]: - """Creates or updates the mesh membership of a managed cluster. - - :param resource_group_name: The name of the resource group. The name is case insensitive. - Required. - :type resource_group_name: str - :param resource_name: The name of the managed cluster resource. Required. - :type resource_name: str - :param mesh_membership_name: The name of the mesh membership. Required. - :type mesh_membership_name: str - :param parameters: The mesh membership to create or update. Is one of the following types: - MeshMembership, JSON, IO[bytes] Required. - :type parameters: ~azure.mgmt.containerservice.models.MeshMembership or JSON or IO[bytes] - :return: An instance of AsyncLROPoller that returns MeshMembership. The MeshMembership is - compatible with MutableMapping - :rtype: ~azure.core.polling.AsyncLROPoller[~azure.mgmt.containerservice.models.MeshMembership] - :raises ~azure.core.exceptions.HttpResponseError: - """ - _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) - _params = kwargs.pop("params", {}) or {} - - content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) - cls: ClsType[_models.MeshMembership] = kwargs.pop("cls", None) - polling: Union[bool, AsyncPollingMethod] = kwargs.pop("polling", True) - lro_delay = kwargs.pop("polling_interval", self._config.polling_interval) - cont_token: Optional[str] = kwargs.pop("continuation_token", None) - if cont_token is None: - raw_result = await self._create_or_update_initial( - resource_group_name=resource_group_name, - resource_name=resource_name, - mesh_membership_name=mesh_membership_name, - parameters=parameters, - content_type=content_type, - cls=lambda x, y, z: x, - headers=_headers, - params=_params, - **kwargs - ) - await raw_result.http_response.read() # type: ignore - kwargs.pop("error_map", None) - - def get_long_running_output(pipeline_response): - response = pipeline_response.http_response - deserialized = _deserialize(_models.MeshMembership, response.json()) - if cls: - return cls(pipeline_response, deserialized, {}) # type: ignore - return deserialized - - path_format_arguments = { - "endpoint": self._serialize.url("self._config.base_url", self._config.base_url, "str", skip_quote=True), - } - - if polling is True: - polling_method: AsyncPollingMethod = cast( - AsyncPollingMethod, AsyncARMPolling(lro_delay, path_format_arguments=path_format_arguments, **kwargs) - ) - elif polling is False: - polling_method = cast(AsyncPollingMethod, AsyncNoPolling()) - else: - polling_method = polling - if cont_token: - return AsyncLROPoller[_models.MeshMembership].from_continuation_token( - polling_method=polling_method, - continuation_token=cont_token, - client=self._client, - deserialization_callback=get_long_running_output, - ) - return AsyncLROPoller[_models.MeshMembership]( - self._client, raw_result, get_long_running_output, polling_method # type: ignore - ) - - @api_version_validation( - method_added_on="2026-03-02-preview", - params_added_on={ - "2026-03-02-preview": [ - "api_version", - "subscription_id", - "resource_group_name", - "resource_name", - "mesh_membership_name", - ] - }, - api_versions_list=["2026-03-02-preview"], - ) - async def _delete_initial( - self, resource_group_name: str, resource_name: str, mesh_membership_name: str, **kwargs: Any - ) -> AsyncIterator[bytes]: - error_map: MutableMapping = { - 401: ClientAuthenticationError, - 404: ResourceNotFoundError, - 409: ResourceExistsError, - 304: ResourceNotModifiedError, - } - error_map.update(kwargs.pop("error_map", {}) or {}) - - _headers = kwargs.pop("headers", {}) or {} - _params = kwargs.pop("params", {}) or {} - - cls: ClsType[AsyncIterator[bytes]] = kwargs.pop("cls", None) - - _request = build_mesh_memberships_delete_request( - resource_group_name=resource_group_name, - resource_name=resource_name, - mesh_membership_name=mesh_membership_name, - subscription_id=self._config.subscription_id, - api_version=self._config.api_version, - headers=_headers, - params=_params, - ) - path_format_arguments = { - "endpoint": self._serialize.url("self._config.base_url", self._config.base_url, "str", skip_quote=True), - } - _request.url = self._client.format_url(_request.url, **path_format_arguments) - - _decompress = kwargs.pop("decompress", True) - _stream = True - pipeline_response: PipelineResponse = await self._client._pipeline.run( # pylint: disable=protected-access - _request, stream=_stream, **kwargs - ) - - response = pipeline_response.http_response - - if response.status_code not in [202, 204]: - try: - await response.read() # Load the body in memory and close the socket - except (StreamConsumedError, StreamClosedError): - pass - map_error(status_code=response.status_code, response=response, error_map=error_map) - error = _failsafe_deserialize( - _models.ErrorResponse, - response, - ) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - - response_headers = {} - if response.status_code == 202: - response_headers["Azure-AsyncOperation"] = self._deserialize( - "str", response.headers.get("Azure-AsyncOperation") - ) - response_headers["Location"] = self._deserialize("str", response.headers.get("Location")) - response_headers["Retry-After"] = self._deserialize("int", response.headers.get("Retry-After")) - - deserialized = response.iter_bytes() if _decompress else response.iter_raw() - - if cls: - return cls(pipeline_response, deserialized, response_headers) # type: ignore - - return deserialized # type: ignore - - @distributed_trace_async - @api_version_validation( - method_added_on="2026-03-02-preview", - params_added_on={ - "2026-03-02-preview": [ - "api_version", - "subscription_id", - "resource_group_name", - "resource_name", - "mesh_membership_name", - ] - }, - api_versions_list=["2026-03-02-preview"], - ) - async def begin_delete( - self, resource_group_name: str, resource_name: str, mesh_membership_name: str, **kwargs: Any - ) -> AsyncLROPoller[None]: - """Deletes the mesh membership of a managed cluster. - - :param resource_group_name: The name of the resource group. The name is case insensitive. - Required. - :type resource_group_name: str - :param resource_name: The name of the managed cluster resource. Required. - :type resource_name: str - :param mesh_membership_name: The name of the mesh membership. Required. - :type mesh_membership_name: str - :return: An instance of AsyncLROPoller that returns None - :rtype: ~azure.core.polling.AsyncLROPoller[None] - :raises ~azure.core.exceptions.HttpResponseError: - """ - _headers = kwargs.pop("headers", {}) or {} - _params = kwargs.pop("params", {}) or {} - - cls: ClsType[None] = kwargs.pop("cls", None) - polling: Union[bool, AsyncPollingMethod] = kwargs.pop("polling", True) - lro_delay = kwargs.pop("polling_interval", self._config.polling_interval) - cont_token: Optional[str] = kwargs.pop("continuation_token", None) - if cont_token is None: - raw_result = await self._delete_initial( - resource_group_name=resource_group_name, - resource_name=resource_name, - mesh_membership_name=mesh_membership_name, - cls=lambda x, y, z: x, - headers=_headers, - params=_params, - **kwargs - ) - await raw_result.http_response.read() # type: ignore - kwargs.pop("error_map", None) - - def get_long_running_output(pipeline_response): # pylint: disable=inconsistent-return-statements - if cls: - return cls(pipeline_response, None, {}) # type: ignore - - path_format_arguments = { - "endpoint": self._serialize.url("self._config.base_url", self._config.base_url, "str", skip_quote=True), - } - - if polling is True: - polling_method: AsyncPollingMethod = cast( - AsyncPollingMethod, AsyncARMPolling(lro_delay, path_format_arguments=path_format_arguments, **kwargs) - ) - elif polling is False: - polling_method = cast(AsyncPollingMethod, AsyncNoPolling()) - else: - polling_method = polling - if cont_token: - return AsyncLROPoller[None].from_continuation_token( - polling_method=polling_method, - continuation_token=cont_token, - client=self._client, - deserialization_callback=get_long_running_output, - ) - return AsyncLROPoller[None](self._client, raw_result, get_long_running_output, polling_method) # type: ignore - - @distributed_trace - @api_version_validation( - method_added_on="2026-03-02-preview", - params_added_on={ - "2026-03-02-preview": ["api_version", "subscription_id", "resource_group_name", "resource_name", "accept"] - }, - api_versions_list=["2026-03-02-preview"], - ) - def list_by_managed_cluster( - self, resource_group_name: str, resource_name: str, **kwargs: Any - ) -> AsyncItemPaged["_models.MeshMembership"]: - """Lists mesh memberships in a managed cluster. - - :param resource_group_name: The name of the resource group. The name is case insensitive. - Required. - :type resource_group_name: str - :param resource_name: The name of the managed cluster resource. Required. - :type resource_name: str - :return: An iterator like instance of MeshMembership - :rtype: - ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.containerservice.models.MeshMembership] - :raises ~azure.core.exceptions.HttpResponseError: - """ - _headers = kwargs.pop("headers", {}) or {} - _params = kwargs.pop("params", {}) or {} - - cls: ClsType[List[_models.MeshMembership]] = kwargs.pop("cls", None) - - error_map: MutableMapping = { - 401: ClientAuthenticationError, - 404: ResourceNotFoundError, - 409: ResourceExistsError, - 304: ResourceNotModifiedError, - } - error_map.update(kwargs.pop("error_map", {}) or {}) - - def prepare_request(next_link=None): - if not next_link: - - _request = build_mesh_memberships_list_by_managed_cluster_request( - resource_group_name=resource_group_name, - resource_name=resource_name, - subscription_id=self._config.subscription_id, - api_version=self._config.api_version, - headers=_headers, - params=_params, - ) - path_format_arguments = { - "endpoint": self._serialize.url( - "self._config.base_url", self._config.base_url, "str", skip_quote=True - ), - } - _request.url = self._client.format_url(_request.url, **path_format_arguments) - - else: - # make call to next link with the client's api-version - _parsed_next_link = urllib.parse.urlparse(next_link) - _next_request_params = case_insensitive_dict( - { - key: [urllib.parse.quote(v) for v in value] - for key, value in urllib.parse.parse_qs(_parsed_next_link.query).items() - } - ) - _next_request_params["api-version"] = self._config.api_version - _request = HttpRequest( - "GET", - urllib.parse.urljoin(next_link, _parsed_next_link.path), - headers=_headers, - params=_next_request_params, - ) - path_format_arguments = { - "endpoint": self._serialize.url( - "self._config.base_url", self._config.base_url, "str", skip_quote=True - ), - } - _request.url = self._client.format_url(_request.url, **path_format_arguments) - - return _request - - async def extract_data(pipeline_response): - deserialized = pipeline_response.http_response.json() - list_of_elem = _deserialize( - List[_models.MeshMembership], - deserialized.get("value", []), - ) - if cls: - list_of_elem = cls(list_of_elem) # type: ignore - return deserialized.get("nextLink") or None, AsyncList(list_of_elem) - - async def get_next(next_link=None): - _request = prepare_request(next_link) - - _stream = False - pipeline_response: PipelineResponse = await self._client._pipeline.run( # pylint: disable=protected-access - _request, stream=_stream, **kwargs - ) - response = pipeline_response.http_response - - if response.status_code not in [200]: - map_error(status_code=response.status_code, response=response, error_map=error_map) - error = _failsafe_deserialize( - _models.ErrorResponse, - response, - ) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - - return pipeline_response - - return AsyncItemPaged(get_next, extract_data) - - -class Operations: - """ - .. warning:: - **DO NOT** instantiate this class directly. - - Instead, you should access the following operations through - :class:`~azure.mgmt.containerservice.aio.ContainerServiceClient`'s - :attr:`operations` attribute. - """ - - def __init__(self, *args, **kwargs) -> None: - input_args = list(args) - self._client: AsyncPipelineClient = input_args.pop(0) if input_args else kwargs.pop("client") - self._config: ContainerServiceClientConfiguration = input_args.pop(0) if input_args else kwargs.pop("config") - self._serialize: Serializer = input_args.pop(0) if input_args else kwargs.pop("serializer") - self._deserialize: Deserializer = input_args.pop(0) if input_args else kwargs.pop("deserializer") - - @distributed_trace - def list(self, **kwargs: Any) -> AsyncItemPaged["_models.OperationValue"]: - """Gets a list of operations. - - :return: An iterator like instance of OperationValue - :rtype: - ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.containerservice.models.OperationValue] - :raises ~azure.core.exceptions.HttpResponseError: - """ - _headers = kwargs.pop("headers", {}) or {} - _params = kwargs.pop("params", {}) or {} - - cls: ClsType[List[_models.OperationValue]] = kwargs.pop("cls", None) - - error_map: MutableMapping = { - 401: ClientAuthenticationError, - 404: ResourceNotFoundError, - 409: ResourceExistsError, - 304: ResourceNotModifiedError, - } - error_map.update(kwargs.pop("error_map", {}) or {}) - - def prepare_request(next_link=None): - if not next_link: - - _request = build_operations_list_request( - api_version=self._config.api_version, - headers=_headers, - params=_params, - ) - path_format_arguments = { - "endpoint": self._serialize.url( - "self._config.base_url", self._config.base_url, "str", skip_quote=True - ), - } - _request.url = self._client.format_url(_request.url, **path_format_arguments) - - else: - # make call to next link with the client's api-version - _parsed_next_link = urllib.parse.urlparse(next_link) - _next_request_params = case_insensitive_dict( - { - key: [urllib.parse.quote(v) for v in value] - for key, value in urllib.parse.parse_qs(_parsed_next_link.query).items() - } - ) - _next_request_params["api-version"] = self._config.api_version - _request = HttpRequest( - "GET", - urllib.parse.urljoin(next_link, _parsed_next_link.path), - headers=_headers, - params=_next_request_params, - ) - path_format_arguments = { - "endpoint": self._serialize.url( - "self._config.base_url", self._config.base_url, "str", skip_quote=True - ), - } - _request.url = self._client.format_url(_request.url, **path_format_arguments) - - return _request - - async def extract_data(pipeline_response): - deserialized = pipeline_response.http_response.json() - list_of_elem = _deserialize( - List[_models.OperationValue], - deserialized.get("value", []), - ) - if cls: - list_of_elem = cls(list_of_elem) # type: ignore - return deserialized.get("nextLink") or None, AsyncList(list_of_elem) - - async def get_next(next_link=None): - _request = prepare_request(next_link) - - _stream = False - pipeline_response: PipelineResponse = await self._client._pipeline.run( # pylint: disable=protected-access - _request, stream=_stream, **kwargs - ) - response = pipeline_response.http_response - - if response.status_code not in [200]: - map_error(status_code=response.status_code, response=response, error_map=error_map) - error = _failsafe_deserialize( - _models.ErrorResponse, - response, - ) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - - return pipeline_response - - return AsyncItemPaged(get_next, extract_data) - - -class OperationStatusResultOperations: - """ - .. warning:: - **DO NOT** instantiate this class directly. - - Instead, you should access the following operations through - :class:`~azure.mgmt.containerservice.aio.ContainerServiceClient`'s - :attr:`operation_status_result` attribute. - """ + "endpoint": self._serialize.url("self._config.base_url", self._config.base_url, "str", skip_quote=True), + } - def __init__(self, *args, **kwargs) -> None: - input_args = list(args) - self._client: AsyncPipelineClient = input_args.pop(0) if input_args else kwargs.pop("client") - self._config: ContainerServiceClientConfiguration = input_args.pop(0) if input_args else kwargs.pop("config") - self._serialize: Serializer = input_args.pop(0) if input_args else kwargs.pop("serializer") - self._deserialize: Deserializer = input_args.pop(0) if input_args else kwargs.pop("deserializer") + if polling is True: + polling_method: AsyncPollingMethod = cast( + AsyncPollingMethod, AsyncARMPolling(lro_delay, path_format_arguments=path_format_arguments, **kwargs) + ) + elif polling is False: + polling_method = cast(AsyncPollingMethod, AsyncNoPolling()) + else: + polling_method = polling + if cont_token: + return AsyncLROPoller[_models.IdentityBinding].from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output, + ) + return AsyncLROPoller[_models.IdentityBinding]( + self._client, raw_result, get_long_running_output, polling_method # type: ignore + ) - @distributed_trace_async @api_version_validation( - method_added_on="2026-03-02-preview", + method_added_on="2026-04-01", params_added_on={ - "2026-03-02-preview": [ + "2026-04-01": [ "api_version", "subscription_id", "resource_group_name", "resource_name", - "agent_pool_name", - "operation_id", - "accept", + "identity_binding_name", ] }, - api_versions_list=["2026-03-02-preview"], + api_versions_list=["2026-04-01"], ) - async def get_by_agent_pool( - self, resource_group_name: str, resource_name: str, agent_pool_name: str, operation_id: str, **kwargs: Any - ) -> _models.OperationStatusResult: - """Get the status of a specific operation in the specified agent pool. - - :param resource_group_name: The name of the resource group. The name is case insensitive. - Required. - :type resource_group_name: str - :param resource_name: The name of the managed cluster resource. Required. - :type resource_name: str - :param agent_pool_name: The name of the agent pool. Required. - :type agent_pool_name: str - :param operation_id: The ID of an ongoing async operation. Required. - :type operation_id: str - :return: OperationStatusResult. The OperationStatusResult is compatible with MutableMapping - :rtype: ~azure.mgmt.containerservice.models.OperationStatusResult - :raises ~azure.core.exceptions.HttpResponseError: - """ + async def _delete_initial( + self, resource_group_name: str, resource_name: str, identity_binding_name: str, **kwargs: Any + ) -> AsyncIterator[bytes]: error_map: MutableMapping = { 401: ClientAuthenticationError, 404: ResourceNotFoundError, @@ -12590,13 +8414,12 @@ async def get_by_agent_pool( _headers = kwargs.pop("headers", {}) or {} _params = kwargs.pop("params", {}) or {} - cls: ClsType[_models.OperationStatusResult] = kwargs.pop("cls", None) + cls: ClsType[AsyncIterator[bytes]] = kwargs.pop("cls", None) - _request = build_operation_status_result_get_by_agent_pool_request( + _request = build_identity_bindings_delete_request( resource_group_name=resource_group_name, resource_name=resource_name, - agent_pool_name=agent_pool_name, - operation_id=operation_id, + identity_binding_name=identity_binding_name, subscription_id=self._config.subscription_id, api_version=self._config.api_version, headers=_headers, @@ -12608,19 +8431,18 @@ async def get_by_agent_pool( _request.url = self._client.format_url(_request.url, **path_format_arguments) _decompress = kwargs.pop("decompress", True) - _stream = kwargs.pop("stream", False) + _stream = True pipeline_response: PipelineResponse = await self._client._pipeline.run( # pylint: disable=protected-access _request, stream=_stream, **kwargs ) response = pipeline_response.http_response - if response.status_code not in [200]: - if _stream: - try: - await response.read() # Load the body in memory and close the socket - except (StreamConsumedError, StreamClosedError): - pass + if response.status_code not in [202, 204]: + try: + await response.read() # Load the body in memory and close the socket + except (StreamConsumedError, StreamClosedError): + pass map_error(status_code=response.status_code, response=response, error_map=error_map) error = _failsafe_deserialize( _models.ErrorResponse, @@ -12628,43 +8450,123 @@ async def get_by_agent_pool( ) raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - if _stream: - deserialized = response.iter_bytes() if _decompress else response.iter_raw() - else: - deserialized = _deserialize(_models.OperationStatusResult, response.json()) + response_headers = {} + if response.status_code == 202: + response_headers["Azure-AsyncOperation"] = self._deserialize( + "str", response.headers.get("Azure-AsyncOperation") + ) + response_headers["Location"] = self._deserialize("str", response.headers.get("Location")) + response_headers["Retry-After"] = self._deserialize("int", response.headers.get("Retry-After")) + + deserialized = response.iter_bytes() if _decompress else response.iter_raw() if cls: - return cls(pipeline_response, deserialized, {}) # type: ignore + return cls(pipeline_response, deserialized, response_headers) # type: ignore return deserialized # type: ignore + @distributed_trace_async + @api_version_validation( + method_added_on="2026-04-01", + params_added_on={ + "2026-04-01": [ + "api_version", + "subscription_id", + "resource_group_name", + "resource_name", + "identity_binding_name", + ] + }, + api_versions_list=["2026-04-01"], + ) + async def begin_delete( + self, resource_group_name: str, resource_name: str, identity_binding_name: str, **kwargs: Any + ) -> AsyncLROPoller[None]: + """Deletes an identity binding in the specified managed cluster. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param resource_name: The name of the managed cluster resource. Required. + :type resource_name: str + :param identity_binding_name: The name of the identity binding. Required. + :type identity_binding_name: str + :return: An instance of AsyncLROPoller that returns None + :rtype: ~azure.core.polling.AsyncLROPoller[None] + :raises ~azure.core.exceptions.HttpResponseError: + """ + _headers = kwargs.pop("headers", {}) or {} + _params = kwargs.pop("params", {}) or {} + + cls: ClsType[None] = kwargs.pop("cls", None) + polling: Union[bool, AsyncPollingMethod] = kwargs.pop("polling", True) + lro_delay = kwargs.pop("polling_interval", self._config.polling_interval) + cont_token: Optional[str] = kwargs.pop("continuation_token", None) + if cont_token is None: + raw_result = await self._delete_initial( + resource_group_name=resource_group_name, + resource_name=resource_name, + identity_binding_name=identity_binding_name, + cls=lambda x, y, z: x, + headers=_headers, + params=_params, + **kwargs + ) + await raw_result.http_response.read() # type: ignore + kwargs.pop("error_map", None) + + def get_long_running_output(pipeline_response): # pylint: disable=inconsistent-return-statements + if cls: + return cls(pipeline_response, None, {}) # type: ignore + + path_format_arguments = { + "endpoint": self._serialize.url("self._config.base_url", self._config.base_url, "str", skip_quote=True), + } + + if polling is True: + polling_method: AsyncPollingMethod = cast( + AsyncPollingMethod, AsyncARMPolling(lro_delay, path_format_arguments=path_format_arguments, **kwargs) + ) + elif polling is False: + polling_method = cast(AsyncPollingMethod, AsyncNoPolling()) + else: + polling_method = polling + if cont_token: + return AsyncLROPoller[None].from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output, + ) + return AsyncLROPoller[None](self._client, raw_result, get_long_running_output, polling_method) # type: ignore + @distributed_trace @api_version_validation( - method_added_on="2026-03-02-preview", + method_added_on="2026-04-01", params_added_on={ - "2026-03-02-preview": ["api_version", "subscription_id", "resource_group_name", "resource_name", "accept"] + "2026-04-01": ["api_version", "subscription_id", "resource_group_name", "resource_name", "accept"] }, - api_versions_list=["2026-03-02-preview"], + api_versions_list=["2026-04-01"], ) - def list( + def list_by_managed_cluster( self, resource_group_name: str, resource_name: str, **kwargs: Any - ) -> AsyncItemPaged["_models.OperationStatusResult"]: - """Gets a list of operations in the specified managedCluster. + ) -> AsyncItemPaged["_models.IdentityBinding"]: + """Gets a list of identity bindings in the specified managed cluster. :param resource_group_name: The name of the resource group. The name is case insensitive. Required. :type resource_group_name: str :param resource_name: The name of the managed cluster resource. Required. :type resource_name: str - :return: An iterator like instance of OperationStatusResult + :return: An iterator like instance of IdentityBinding :rtype: - ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.containerservice.models.OperationStatusResult] + ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.containerservice.models.IdentityBinding] :raises ~azure.core.exceptions.HttpResponseError: """ _headers = kwargs.pop("headers", {}) or {} _params = kwargs.pop("params", {}) or {} - cls: ClsType[List[_models.OperationStatusResult]] = kwargs.pop("cls", None) + cls: ClsType[List[_models.IdentityBinding]] = kwargs.pop("cls", None) error_map: MutableMapping = { 401: ClientAuthenticationError, @@ -12677,7 +8579,7 @@ def list( def prepare_request(next_link=None): if not next_link: - _request = build_operation_status_result_list_request( + _request = build_identity_bindings_list_by_managed_cluster_request( resource_group_name=resource_group_name, resource_name=resource_name, subscription_id=self._config.subscription_id, @@ -12720,7 +8622,7 @@ def prepare_request(next_link=None): async def extract_data(pipeline_response): deserialized = pipeline_response.http_response.json() list_of_elem = _deserialize( - List[_models.OperationStatusResult], + List[_models.IdentityBinding], deserialized.get("value", []), ) if cls: @@ -12748,37 +8650,38 @@ async def get_next(next_link=None): return AsyncItemPaged(get_next, extract_data) - @distributed_trace_async - @api_version_validation( - method_added_on="2026-03-02-preview", - params_added_on={ - "2026-03-02-preview": [ - "api_version", - "subscription_id", - "resource_group_name", - "resource_name", - "operation_id", - "accept", - ] - }, - api_versions_list=["2026-03-02-preview"], - ) - async def get( - self, resource_group_name: str, resource_name: str, operation_id: str, **kwargs: Any - ) -> _models.OperationStatusResult: - """Get the status of a specific operation in the specified managed cluster. - :param resource_group_name: The name of the resource group. The name is case insensitive. - Required. - :type resource_group_name: str - :param resource_name: The name of the managed cluster resource. Required. - :type resource_name: str - :param operation_id: The ID of an ongoing async operation. Required. - :type operation_id: str - :return: OperationStatusResult. The OperationStatusResult is compatible with MutableMapping - :rtype: ~azure.mgmt.containerservice.models.OperationStatusResult +class Operations: + """ + .. warning:: + **DO NOT** instantiate this class directly. + + Instead, you should access the following operations through + :class:`~azure.mgmt.containerservice.aio.ContainerServiceClient`'s + :attr:`operations` attribute. + """ + + def __init__(self, *args, **kwargs) -> None: + input_args = list(args) + self._client: AsyncPipelineClient = input_args.pop(0) if input_args else kwargs.pop("client") + self._config: ContainerServiceClientConfiguration = input_args.pop(0) if input_args else kwargs.pop("config") + self._serialize: Serializer = input_args.pop(0) if input_args else kwargs.pop("serializer") + self._deserialize: Deserializer = input_args.pop(0) if input_args else kwargs.pop("deserializer") + + @distributed_trace + def list(self, **kwargs: Any) -> AsyncItemPaged["_models.OperationValue"]: + """Gets a list of operations. + + :return: An iterator like instance of OperationValue + :rtype: + ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.containerservice.models.OperationValue] :raises ~azure.core.exceptions.HttpResponseError: """ + _headers = kwargs.pop("headers", {}) or {} + _params = kwargs.pop("params", {}) or {} + + cls: ClsType[List[_models.OperationValue]] = kwargs.pop("cls", None) + error_map: MutableMapping = { 401: ClientAuthenticationError, 404: ResourceNotFoundError, @@ -12787,55 +8690,76 @@ async def get( } error_map.update(kwargs.pop("error_map", {}) or {}) - _headers = kwargs.pop("headers", {}) or {} - _params = kwargs.pop("params", {}) or {} + def prepare_request(next_link=None): + if not next_link: - cls: ClsType[_models.OperationStatusResult] = kwargs.pop("cls", None) + _request = build_operations_list_request( + api_version=self._config.api_version, + headers=_headers, + params=_params, + ) + path_format_arguments = { + "endpoint": self._serialize.url( + "self._config.base_url", self._config.base_url, "str", skip_quote=True + ), + } + _request.url = self._client.format_url(_request.url, **path_format_arguments) - _request = build_operation_status_result_get_request( - resource_group_name=resource_group_name, - resource_name=resource_name, - operation_id=operation_id, - subscription_id=self._config.subscription_id, - api_version=self._config.api_version, - headers=_headers, - params=_params, - ) - path_format_arguments = { - "endpoint": self._serialize.url("self._config.base_url", self._config.base_url, "str", skip_quote=True), - } - _request.url = self._client.format_url(_request.url, **path_format_arguments) + else: + # make call to next link with the client's api-version + _parsed_next_link = urllib.parse.urlparse(next_link) + _next_request_params = case_insensitive_dict( + { + key: [urllib.parse.quote(v) for v in value] + for key, value in urllib.parse.parse_qs(_parsed_next_link.query).items() + } + ) + _next_request_params["api-version"] = self._config.api_version + _request = HttpRequest( + "GET", + urllib.parse.urljoin(next_link, _parsed_next_link.path), + headers=_headers, + params=_next_request_params, + ) + path_format_arguments = { + "endpoint": self._serialize.url( + "self._config.base_url", self._config.base_url, "str", skip_quote=True + ), + } + _request.url = self._client.format_url(_request.url, **path_format_arguments) - _decompress = kwargs.pop("decompress", True) - _stream = kwargs.pop("stream", False) - pipeline_response: PipelineResponse = await self._client._pipeline.run( # pylint: disable=protected-access - _request, stream=_stream, **kwargs - ) + return _request + + async def extract_data(pipeline_response): + deserialized = pipeline_response.http_response.json() + list_of_elem = _deserialize( + List[_models.OperationValue], + deserialized.get("value", []), + ) + if cls: + list_of_elem = cls(list_of_elem) # type: ignore + return deserialized.get("nextLink") or None, AsyncList(list_of_elem) - response = pipeline_response.http_response + async def get_next(next_link=None): + _request = prepare_request(next_link) - if response.status_code not in [200]: - if _stream: - try: - await response.read() # Load the body in memory and close the socket - except (StreamConsumedError, StreamClosedError): - pass - map_error(status_code=response.status_code, response=response, error_map=error_map) - error = _failsafe_deserialize( - _models.ErrorResponse, - response, + _stream = False + pipeline_response: PipelineResponse = await self._client._pipeline.run( # pylint: disable=protected-access + _request, stream=_stream, **kwargs ) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + response = pipeline_response.http_response - if _stream: - deserialized = response.iter_bytes() if _decompress else response.iter_raw() - else: - deserialized = _deserialize(_models.OperationStatusResult, response.json()) + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + error = _failsafe_deserialize( + _models.ErrorResponse, + response, + ) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - if cls: - return cls(pipeline_response, deserialized, {}) # type: ignore + return pipeline_response - return deserialized # type: ignore + return AsyncItemPaged(get_next, extract_data) class PrivateLinkResourcesOperations: @@ -13234,247 +9158,3 @@ async def get_next(next_link=None): return pipeline_response return AsyncItemPaged(get_next, extract_data) - - -class ContainerServiceOperations: - """ - .. warning:: - **DO NOT** instantiate this class directly. - - Instead, you should access the following operations through - :class:`~azure.mgmt.containerservice.aio.ContainerServiceClient`'s - :attr:`container_service` attribute. - """ - - def __init__(self, *args, **kwargs) -> None: - input_args = list(args) - self._client: AsyncPipelineClient = input_args.pop(0) if input_args else kwargs.pop("client") - self._config: ContainerServiceClientConfiguration = input_args.pop(0) if input_args else kwargs.pop("config") - self._serialize: Serializer = input_args.pop(0) if input_args else kwargs.pop("serializer") - self._deserialize: Deserializer = input_args.pop(0) if input_args else kwargs.pop("deserializer") - - @distributed_trace - def list_node_image_versions(self, location: str, **kwargs: Any) -> AsyncItemPaged["_models.NodeImageVersion"]: - """Gets a list of supported NodeImage versions in the specified subscription. - - Only returns the latest version of each node image. For example there may be an - AKSUbuntu-1804gen2containerd-2024.01.26, but only AKSUbuntu-1804gen2containerd-2024.02.02 is - visible in this list. - - :param location: The name of the Azure region. Required. - :type location: str - :return: An iterator like instance of NodeImageVersion - :rtype: - ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.containerservice.models.NodeImageVersion] - :raises ~azure.core.exceptions.HttpResponseError: - """ - _headers = kwargs.pop("headers", {}) or {} - _params = kwargs.pop("params", {}) or {} - - cls: ClsType[List[_models.NodeImageVersion]] = kwargs.pop("cls", None) - - error_map: MutableMapping = { - 401: ClientAuthenticationError, - 404: ResourceNotFoundError, - 409: ResourceExistsError, - 304: ResourceNotModifiedError, - } - error_map.update(kwargs.pop("error_map", {}) or {}) - - def prepare_request(next_link=None): - if not next_link: - - _request = build_container_service_list_node_image_versions_request( - location=location, - subscription_id=self._config.subscription_id, - api_version=self._config.api_version, - headers=_headers, - params=_params, - ) - path_format_arguments = { - "endpoint": self._serialize.url( - "self._config.base_url", self._config.base_url, "str", skip_quote=True - ), - } - _request.url = self._client.format_url(_request.url, **path_format_arguments) - - else: - # make call to next link with the client's api-version - _parsed_next_link = urllib.parse.urlparse(next_link) - _next_request_params = case_insensitive_dict( - { - key: [urllib.parse.quote(v) for v in value] - for key, value in urllib.parse.parse_qs(_parsed_next_link.query).items() - } - ) - _next_request_params["api-version"] = self._config.api_version - _request = HttpRequest( - "GET", - urllib.parse.urljoin(next_link, _parsed_next_link.path), - headers=_headers, - params=_next_request_params, - ) - path_format_arguments = { - "endpoint": self._serialize.url( - "self._config.base_url", self._config.base_url, "str", skip_quote=True - ), - } - _request.url = self._client.format_url(_request.url, **path_format_arguments) - - return _request - - async def extract_data(pipeline_response): - deserialized = pipeline_response.http_response.json() - list_of_elem = _deserialize( - List[_models.NodeImageVersion], - deserialized.get("value", []), - ) - if cls: - list_of_elem = cls(list_of_elem) # type: ignore - return deserialized.get("nextLink") or None, AsyncList(list_of_elem) - - async def get_next(next_link=None): - _request = prepare_request(next_link) - - _stream = False - pipeline_response: PipelineResponse = await self._client._pipeline.run( # pylint: disable=protected-access - _request, stream=_stream, **kwargs - ) - response = pipeline_response.http_response - - if response.status_code not in [200]: - map_error(status_code=response.status_code, response=response, error_map=error_map) - error = _failsafe_deserialize( - _models.ErrorResponse, - response, - ) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - - return pipeline_response - - return AsyncItemPaged(get_next, extract_data) - - -class VmSkusOperations: - """ - .. warning:: - **DO NOT** instantiate this class directly. - - Instead, you should access the following operations through - :class:`~azure.mgmt.containerservice.aio.ContainerServiceClient`'s - :attr:`vm_skus` attribute. - """ - - def __init__(self, *args, **kwargs) -> None: - input_args = list(args) - self._client: AsyncPipelineClient = input_args.pop(0) if input_args else kwargs.pop("client") - self._config: ContainerServiceClientConfiguration = input_args.pop(0) if input_args else kwargs.pop("config") - self._serialize: Serializer = input_args.pop(0) if input_args else kwargs.pop("serializer") - self._deserialize: Deserializer = input_args.pop(0) if input_args else kwargs.pop("deserializer") - - @distributed_trace - def list( - self, location: str, *, include_extended_locations: Optional[bool] = None, **kwargs: Any - ) -> AsyncItemPaged["_models.ResourceSku"]: - """Gets the list of VM SKUs accepted by AKS. - - Gets the list of VM SKUs accepted by AKS when creating node pools in a specified location. AKS - will perform a best effort approach to provision the requested VM SKUs, but availability is not - guaranteed. - - :param location: The name of the Azure region. Required. - :type location: str - :keyword include_extended_locations: To Include Extended Locations information or not in the - response. Default value is None. - :paramtype include_extended_locations: bool - :return: An iterator like instance of ResourceSku - :rtype: - ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.containerservice.models.ResourceSku] - :raises ~azure.core.exceptions.HttpResponseError: - """ - _headers = kwargs.pop("headers", {}) or {} - _params = kwargs.pop("params", {}) or {} - - cls: ClsType[List[_models.ResourceSku]] = kwargs.pop("cls", None) - - error_map: MutableMapping = { - 401: ClientAuthenticationError, - 404: ResourceNotFoundError, - 409: ResourceExistsError, - 304: ResourceNotModifiedError, - } - error_map.update(kwargs.pop("error_map", {}) or {}) - - def prepare_request(next_link=None): - if not next_link: - - _request = build_vm_skus_list_request( - location=location, - subscription_id=self._config.subscription_id, - include_extended_locations=include_extended_locations, - api_version=self._config.api_version, - headers=_headers, - params=_params, - ) - path_format_arguments = { - "endpoint": self._serialize.url( - "self._config.base_url", self._config.base_url, "str", skip_quote=True - ), - } - _request.url = self._client.format_url(_request.url, **path_format_arguments) - - else: - # make call to next link with the client's api-version - _parsed_next_link = urllib.parse.urlparse(next_link) - _next_request_params = case_insensitive_dict( - { - key: [urllib.parse.quote(v) for v in value] - for key, value in urllib.parse.parse_qs(_parsed_next_link.query).items() - } - ) - _next_request_params["api-version"] = self._config.api_version - _request = HttpRequest( - "GET", - urllib.parse.urljoin(next_link, _parsed_next_link.path), - headers=_headers, - params=_next_request_params, - ) - path_format_arguments = { - "endpoint": self._serialize.url( - "self._config.base_url", self._config.base_url, "str", skip_quote=True - ), - } - _request.url = self._client.format_url(_request.url, **path_format_arguments) - - return _request - - async def extract_data(pipeline_response): - deserialized = pipeline_response.http_response.json() - list_of_elem = _deserialize( - List[_models.ResourceSku], - deserialized.get("value", []), - ) - if cls: - list_of_elem = cls(list_of_elem) # type: ignore - return deserialized.get("nextLink") or None, AsyncList(list_of_elem) - - async def get_next(next_link=None): - _request = prepare_request(next_link) - - _stream = False - pipeline_response: PipelineResponse = await self._client._pipeline.run( # pylint: disable=protected-access - _request, stream=_stream, **kwargs - ) - response = pipeline_response.http_response - - if response.status_code not in [200]: - map_error(status_code=response.status_code, response=response, error_map=error_map) - error = _failsafe_deserialize( - _models.ErrorResponse, - response, - ) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - - return pipeline_response - - return AsyncItemPaged(get_next, extract_data) diff --git a/sdk/containerservice/azure-mgmt-containerservice/azure/mgmt/containerservice/models/__init__.py b/sdk/containerservice/azure-mgmt-containerservice/azure/mgmt/containerservice/models/__init__.py index 9dc4ca728007..025e1b0ee260 100644 --- a/sdk/containerservice/azure-mgmt-containerservice/azure/mgmt/containerservice/models/__init__.py +++ b/sdk/containerservice/azure-mgmt-containerservice/azure/mgmt/containerservice/models/__init__.py @@ -26,11 +26,9 @@ AgentPoolAvailableVersions, AgentPoolAvailableVersionsProperties, AgentPoolAvailableVersionsPropertiesAgentPoolVersionsItem, - AgentPoolBlueGreenUpgradeSettings, AgentPoolDeleteMachinesParameter, AgentPoolGatewayProfile, AgentPoolManagedClusterAgentPoolProfileProperties, - AgentPoolNetworkInterface, AgentPoolNetworkProfile, AgentPoolRecentlyUsedVersion, AgentPoolSecurityProfile, @@ -40,17 +38,12 @@ AgentPoolUpgradeProfilePropertiesUpgradesItem, AgentPoolUpgradeSettings, AgentPoolWindowsProfile, - AutoScaleProfile, AzureKeyVaultKms, ClusterUpgradeSettings, CommandResultProperties, CompatibleVersions, - Component, - ComponentsByRelease, ContainerServiceLinuxProfile, ContainerServiceNetworkProfile, - ContainerServiceNetworkProfileKubeProxyConfig, - ContainerServiceNetworkProfileKubeProxyConfigIpvsConfig, ContainerServiceSshConfiguration, ContainerServiceSshPublicKey, CreationData, @@ -66,9 +59,6 @@ ErrorResponse, ExtendedLocation, GPUProfile, - GuardrailsAvailableVersion, - GuardrailsAvailableVersionsProperties, - HardEvictionThreshold, IPTag, IdentityBinding, IdentityBindingManagedIdentityProfile, @@ -80,38 +70,18 @@ IstioIngressGateway, IstioPluginCertificateAuthority, IstioServiceMesh, - JWTAuthenticator, - JWTAuthenticatorClaimMappingExpression, - JWTAuthenticatorClaimMappings, - JWTAuthenticatorExtraClaimMappingExpression, - JWTAuthenticatorIssuer, - JWTAuthenticatorProperties, - JWTAuthenticatorValidationRule, - KubeReserved, KubeletConfig, KubernetesPatchVersion, - KubernetesResourceObjectEncryptionProfile, KubernetesVersion, KubernetesVersionCapabilities, KubernetesVersionListResult, - LabelSelector, - LabelSelectorRequirement, LinuxOSConfig, - LoadBalancer, - LoadBalancerProperties, LocalDNSOverride, LocalDNSProfile, Machine, - MachineBillingProfile, - MachineHardwareProfile, MachineIpAddress, - MachineKubernetesProfile, MachineNetworkProperties, - MachineOSProfile, - MachineOSProfileLinuxProfile, MachineProperties, - MachineSecurityProfile, - MachineStatus, MaintenanceConfiguration, MaintenanceConfigurationProperties, MaintenanceWindow, @@ -129,22 +99,15 @@ ManagedClusterAzureMonitorProfile, ManagedClusterAzureMonitorProfileAppMonitoring, ManagedClusterAzureMonitorProfileAppMonitoringAutoInstrumentation, - ManagedClusterAzureMonitorProfileAppMonitoringOpenTelemetryLogsAndTraces, - ManagedClusterAzureMonitorProfileAppMonitoringOpenTelemetryMetrics, - ManagedClusterAzureMonitorProfileContainerInsights, ManagedClusterAzureMonitorProfileKubeStateMetrics, ManagedClusterAzureMonitorProfileMetrics, ManagedClusterAzureMonitorProfileMetricsControlPlane, ManagedClusterBootstrapProfile, - ManagedClusterControlPlaneScalingProfile, ManagedClusterCostAnalysis, ManagedClusterHTTPProxyConfig, - ManagedClusterHealthMonitorProfile, ManagedClusterHostedSystemProfile, ManagedClusterIdentity, - ManagedClusterIngressDefaultDomainProfile, ManagedClusterIngressProfile, - ManagedClusterIngressProfileApplicationLoadBalancer, ManagedClusterIngressProfileGatewayConfiguration, ManagedClusterIngressProfileNginx, ManagedClusterIngressProfileWebAppRouting, @@ -155,8 +118,6 @@ ManagedClusterManagedOutboundIPProfile, ManagedClusterMetricsProfile, ManagedClusterNATGatewayProfile, - ManagedClusterNATGatewayProfileOutboundIPs, - ManagedClusterNATGatewayProfileOutboundIpPrefixes, ManagedClusterNodeProvisioningProfile, ManagedClusterNodeResourceGroupProfile, ManagedClusterOIDCIssuerProfile, @@ -170,20 +131,13 @@ ManagedClusterPoolUpgradeProfileUpgradesItem, ManagedClusterProperties, ManagedClusterPropertiesAutoScalerProfile, - ManagedClusterPropertiesForSnapshot, ManagedClusterSKU, ManagedClusterSecurityProfile, ManagedClusterSecurityProfileDefender, - ManagedClusterSecurityProfileDefenderSecurityGating, - ManagedClusterSecurityProfileDefenderSecurityGatingIdentitiesItem, ManagedClusterSecurityProfileDefenderSecurityMonitoring, ManagedClusterSecurityProfileImageCleaner, - ManagedClusterSecurityProfileImageIntegrity, - ManagedClusterSecurityProfileNodeRestriction, ManagedClusterSecurityProfileWorkloadIdentity, ManagedClusterServicePrincipalProfile, - ManagedClusterSnapshot, - ManagedClusterSnapshotProperties, ManagedClusterStaticEgressGatewayProfile, ManagedClusterStatus, ManagedClusterStorageProfile, @@ -201,9 +155,6 @@ ManagedNamespace, ManagedServiceIdentityUserAssignedIdentitiesValue, ManualScaleProfile, - MeshMembership, - MeshMembershipPrivateConnectProfile, - MeshMembershipProperties, MeshRevision, MeshRevisionProfile, MeshRevisionProfileProperties, @@ -211,17 +162,11 @@ MeshUpgradeProfileProperties, NamespaceProperties, NetworkPolicies, - NetworkProfileForSnapshot, - NodeDisruptionProfile, - NodeImageVersion, - NvidiaGPUProfile, - OperationStatusResult, OperationValue, OperationValueDisplay, OutboundEnvironmentEndpoint, PortRange, PowerState, - PreparedImageSpecificationProfile, PrivateEndpoint, PrivateEndpointConnection, PrivateEndpointConnectionListResult, @@ -230,29 +175,14 @@ PrivateLinkResourcesListResult, PrivateLinkServiceConnectionState, ProxyResource, - RebalanceLoadBalancersRequestBody, RelativeMonthlySchedule, Resource, ResourceQuota, ResourceReference, - ResourceSku, - ResourceSkuCapabilities, - ResourceSkuCapacity, - ResourceSkuCosts, - ResourceSkuLocationInfo, - ResourceSkuRestrictionInfo, - ResourceSkuRestrictions, - ResourceSkuZoneDetails, RunCommandRequest, RunCommandResult, - SafeguardsAvailableVersion, - SafeguardsAvailableVersionsProperties, ScaleProfile, Schedule, - SchedulerInstanceProfile, - SchedulerProfile, - SchedulerProfileSchedulerInstanceProfiles, - ServiceAccountImagePullProfile, ServiceMeshProfile, Snapshot, SnapshotProperties, @@ -276,37 +206,26 @@ from ._enums import ( # type: ignore AccelerationMode, - AddonAutoscaling, AdoptionPolicy, AdvancedNetworkPolicies, AgentPoolMode, - AgentPoolNetworkInterfaceType, AgentPoolSSHAccess, AgentPoolType, ArtifactSource, BackendPoolType, - ClusterServiceLoadBalancerHealthProbeMode, Code, ConnectionStatus, - ContainerNetworkLogs, - ControlPlaneScalingSize, CreatedByType, DeletePolicy, - DriftAction, - DriverType, Expander, ExtendedLocationTypes, Format, GPUDriver, GPUInstanceProfile, GatewayAPIIstioEnabled, - GuardrailsSupport, IPFamily, IdentityBindingProvisioningState, - InfrastructureEncryption, - IpvsScheduler, IstioIngressGatewayMode, - JWTAuthenticatorProvisioningState, KeyVaultNetworkAccessTypes, KubeletDiskType, KubernetesSupportPlan, @@ -323,10 +242,6 @@ ManagedClusterSKUName, ManagedClusterSKUTier, ManagedGatewayType, - ManagementMode, - MeshMembershipProvisioningState, - MigStrategy, - Mode, NamespaceProvisioningState, NetworkDataplane, NetworkMode, @@ -334,33 +249,24 @@ NetworkPluginMode, NetworkPolicy, NginxIngressControllerType, - NodeDisruptionPolicy, NodeOSUpgradeChannel, NodeProvisioningDefaultNodePools, NodeProvisioningMode, OSDiskType, OSSKU, OSType, - Operator, OutboundType, PodIPAllocationMode, - PodLinkLocalAccess, PolicyRule, PrivateEndpointConnectionProvisioningState, Protocol, ProxyRedirectionMechanism, PublicNetworkAccess, ResourceIdentityType, - ResourceSkuCapacityScaleType, - ResourceSkuRestrictionsReasonCode, - ResourceSkuRestrictionsType, RestrictionLevel, - SafeguardsSupport, ScaleDownMode, ScaleSetEvictionPolicy, ScaleSetPriority, - SchedulerConfigMode, - SeccompDefault, ServiceMeshMode, SnapshotType, TransitEncryptionType, @@ -368,8 +274,6 @@ Type, UndrainableNodeBehavior, UpgradeChannel, - UpgradeStrategy, - VmState, WeekDay, WorkloadRuntime, ) @@ -390,11 +294,9 @@ "AgentPoolAvailableVersions", "AgentPoolAvailableVersionsProperties", "AgentPoolAvailableVersionsPropertiesAgentPoolVersionsItem", - "AgentPoolBlueGreenUpgradeSettings", "AgentPoolDeleteMachinesParameter", "AgentPoolGatewayProfile", "AgentPoolManagedClusterAgentPoolProfileProperties", - "AgentPoolNetworkInterface", "AgentPoolNetworkProfile", "AgentPoolRecentlyUsedVersion", "AgentPoolSecurityProfile", @@ -404,17 +306,12 @@ "AgentPoolUpgradeProfilePropertiesUpgradesItem", "AgentPoolUpgradeSettings", "AgentPoolWindowsProfile", - "AutoScaleProfile", "AzureKeyVaultKms", "ClusterUpgradeSettings", "CommandResultProperties", "CompatibleVersions", - "Component", - "ComponentsByRelease", "ContainerServiceLinuxProfile", "ContainerServiceNetworkProfile", - "ContainerServiceNetworkProfileKubeProxyConfig", - "ContainerServiceNetworkProfileKubeProxyConfigIpvsConfig", "ContainerServiceSshConfiguration", "ContainerServiceSshPublicKey", "CreationData", @@ -430,9 +327,6 @@ "ErrorResponse", "ExtendedLocation", "GPUProfile", - "GuardrailsAvailableVersion", - "GuardrailsAvailableVersionsProperties", - "HardEvictionThreshold", "IPTag", "IdentityBinding", "IdentityBindingManagedIdentityProfile", @@ -444,38 +338,18 @@ "IstioIngressGateway", "IstioPluginCertificateAuthority", "IstioServiceMesh", - "JWTAuthenticator", - "JWTAuthenticatorClaimMappingExpression", - "JWTAuthenticatorClaimMappings", - "JWTAuthenticatorExtraClaimMappingExpression", - "JWTAuthenticatorIssuer", - "JWTAuthenticatorProperties", - "JWTAuthenticatorValidationRule", - "KubeReserved", "KubeletConfig", "KubernetesPatchVersion", - "KubernetesResourceObjectEncryptionProfile", "KubernetesVersion", "KubernetesVersionCapabilities", "KubernetesVersionListResult", - "LabelSelector", - "LabelSelectorRequirement", "LinuxOSConfig", - "LoadBalancer", - "LoadBalancerProperties", "LocalDNSOverride", "LocalDNSProfile", "Machine", - "MachineBillingProfile", - "MachineHardwareProfile", "MachineIpAddress", - "MachineKubernetesProfile", "MachineNetworkProperties", - "MachineOSProfile", - "MachineOSProfileLinuxProfile", "MachineProperties", - "MachineSecurityProfile", - "MachineStatus", "MaintenanceConfiguration", "MaintenanceConfigurationProperties", "MaintenanceWindow", @@ -493,22 +367,15 @@ "ManagedClusterAzureMonitorProfile", "ManagedClusterAzureMonitorProfileAppMonitoring", "ManagedClusterAzureMonitorProfileAppMonitoringAutoInstrumentation", - "ManagedClusterAzureMonitorProfileAppMonitoringOpenTelemetryLogsAndTraces", - "ManagedClusterAzureMonitorProfileAppMonitoringOpenTelemetryMetrics", - "ManagedClusterAzureMonitorProfileContainerInsights", "ManagedClusterAzureMonitorProfileKubeStateMetrics", "ManagedClusterAzureMonitorProfileMetrics", "ManagedClusterAzureMonitorProfileMetricsControlPlane", "ManagedClusterBootstrapProfile", - "ManagedClusterControlPlaneScalingProfile", "ManagedClusterCostAnalysis", "ManagedClusterHTTPProxyConfig", - "ManagedClusterHealthMonitorProfile", "ManagedClusterHostedSystemProfile", "ManagedClusterIdentity", - "ManagedClusterIngressDefaultDomainProfile", "ManagedClusterIngressProfile", - "ManagedClusterIngressProfileApplicationLoadBalancer", "ManagedClusterIngressProfileGatewayConfiguration", "ManagedClusterIngressProfileNginx", "ManagedClusterIngressProfileWebAppRouting", @@ -519,8 +386,6 @@ "ManagedClusterManagedOutboundIPProfile", "ManagedClusterMetricsProfile", "ManagedClusterNATGatewayProfile", - "ManagedClusterNATGatewayProfileOutboundIPs", - "ManagedClusterNATGatewayProfileOutboundIpPrefixes", "ManagedClusterNodeProvisioningProfile", "ManagedClusterNodeResourceGroupProfile", "ManagedClusterOIDCIssuerProfile", @@ -534,20 +399,13 @@ "ManagedClusterPoolUpgradeProfileUpgradesItem", "ManagedClusterProperties", "ManagedClusterPropertiesAutoScalerProfile", - "ManagedClusterPropertiesForSnapshot", "ManagedClusterSKU", "ManagedClusterSecurityProfile", "ManagedClusterSecurityProfileDefender", - "ManagedClusterSecurityProfileDefenderSecurityGating", - "ManagedClusterSecurityProfileDefenderSecurityGatingIdentitiesItem", "ManagedClusterSecurityProfileDefenderSecurityMonitoring", "ManagedClusterSecurityProfileImageCleaner", - "ManagedClusterSecurityProfileImageIntegrity", - "ManagedClusterSecurityProfileNodeRestriction", "ManagedClusterSecurityProfileWorkloadIdentity", "ManagedClusterServicePrincipalProfile", - "ManagedClusterSnapshot", - "ManagedClusterSnapshotProperties", "ManagedClusterStaticEgressGatewayProfile", "ManagedClusterStatus", "ManagedClusterStorageProfile", @@ -565,9 +423,6 @@ "ManagedNamespace", "ManagedServiceIdentityUserAssignedIdentitiesValue", "ManualScaleProfile", - "MeshMembership", - "MeshMembershipPrivateConnectProfile", - "MeshMembershipProperties", "MeshRevision", "MeshRevisionProfile", "MeshRevisionProfileProperties", @@ -575,17 +430,11 @@ "MeshUpgradeProfileProperties", "NamespaceProperties", "NetworkPolicies", - "NetworkProfileForSnapshot", - "NodeDisruptionProfile", - "NodeImageVersion", - "NvidiaGPUProfile", - "OperationStatusResult", "OperationValue", "OperationValueDisplay", "OutboundEnvironmentEndpoint", "PortRange", "PowerState", - "PreparedImageSpecificationProfile", "PrivateEndpoint", "PrivateEndpointConnection", "PrivateEndpointConnectionListResult", @@ -594,29 +443,14 @@ "PrivateLinkResourcesListResult", "PrivateLinkServiceConnectionState", "ProxyResource", - "RebalanceLoadBalancersRequestBody", "RelativeMonthlySchedule", "Resource", "ResourceQuota", "ResourceReference", - "ResourceSku", - "ResourceSkuCapabilities", - "ResourceSkuCapacity", - "ResourceSkuCosts", - "ResourceSkuLocationInfo", - "ResourceSkuRestrictionInfo", - "ResourceSkuRestrictions", - "ResourceSkuZoneDetails", "RunCommandRequest", "RunCommandResult", - "SafeguardsAvailableVersion", - "SafeguardsAvailableVersionsProperties", "ScaleProfile", "Schedule", - "SchedulerInstanceProfile", - "SchedulerProfile", - "SchedulerProfileSchedulerInstanceProfiles", - "ServiceAccountImagePullProfile", "ServiceMeshProfile", "Snapshot", "SnapshotProperties", @@ -637,37 +471,26 @@ "WeeklySchedule", "WindowsGmsaProfile", "AccelerationMode", - "AddonAutoscaling", "AdoptionPolicy", "AdvancedNetworkPolicies", "AgentPoolMode", - "AgentPoolNetworkInterfaceType", "AgentPoolSSHAccess", "AgentPoolType", "ArtifactSource", "BackendPoolType", - "ClusterServiceLoadBalancerHealthProbeMode", "Code", "ConnectionStatus", - "ContainerNetworkLogs", - "ControlPlaneScalingSize", "CreatedByType", "DeletePolicy", - "DriftAction", - "DriverType", "Expander", "ExtendedLocationTypes", "Format", "GPUDriver", "GPUInstanceProfile", "GatewayAPIIstioEnabled", - "GuardrailsSupport", "IPFamily", "IdentityBindingProvisioningState", - "InfrastructureEncryption", - "IpvsScheduler", "IstioIngressGatewayMode", - "JWTAuthenticatorProvisioningState", "KeyVaultNetworkAccessTypes", "KubeletDiskType", "KubernetesSupportPlan", @@ -684,10 +507,6 @@ "ManagedClusterSKUName", "ManagedClusterSKUTier", "ManagedGatewayType", - "ManagementMode", - "MeshMembershipProvisioningState", - "MigStrategy", - "Mode", "NamespaceProvisioningState", "NetworkDataplane", "NetworkMode", @@ -695,33 +514,24 @@ "NetworkPluginMode", "NetworkPolicy", "NginxIngressControllerType", - "NodeDisruptionPolicy", "NodeOSUpgradeChannel", "NodeProvisioningDefaultNodePools", "NodeProvisioningMode", "OSDiskType", "OSSKU", "OSType", - "Operator", "OutboundType", "PodIPAllocationMode", - "PodLinkLocalAccess", "PolicyRule", "PrivateEndpointConnectionProvisioningState", "Protocol", "ProxyRedirectionMechanism", "PublicNetworkAccess", "ResourceIdentityType", - "ResourceSkuCapacityScaleType", - "ResourceSkuRestrictionsReasonCode", - "ResourceSkuRestrictionsType", "RestrictionLevel", - "SafeguardsSupport", "ScaleDownMode", "ScaleSetEvictionPolicy", "ScaleSetPriority", - "SchedulerConfigMode", - "SeccompDefault", "ServiceMeshMode", "SnapshotType", "TransitEncryptionType", @@ -729,8 +539,6 @@ "Type", "UndrainableNodeBehavior", "UpgradeChannel", - "UpgradeStrategy", - "VmState", "WeekDay", "WorkloadRuntime", ] diff --git a/sdk/containerservice/azure-mgmt-containerservice/azure/mgmt/containerservice/models/_enums.py b/sdk/containerservice/azure-mgmt-containerservice/azure/mgmt/containerservice/models/_enums.py index d791b4e5357a..f464373b39e2 100644 --- a/sdk/containerservice/azure-mgmt-containerservice/azure/mgmt/containerservice/models/_enums.py +++ b/sdk/containerservice/azure-mgmt-containerservice/azure/mgmt/containerservice/models/_enums.py @@ -25,16 +25,6 @@ class AccelerationMode(str, Enum, metaclass=CaseInsensitiveEnumMeta): """Disable acceleration options.""" -class AddonAutoscaling(str, Enum, metaclass=CaseInsensitiveEnumMeta): - """Whether VPA add-on is enabled and configured to scale AKS-managed add-ons.""" - - ENABLED = "Enabled" - """Feature to autoscale AKS-managed add-ons is enabled. The default VPA update mode is Initial - mode.""" - DISABLED = "Disabled" - """Feature to autoscale AKS-managed add-ons is disabled.""" - - class AdoptionPolicy(str, Enum, metaclass=CaseInsensitiveEnumMeta): """Action if Kubernetes namespace with same name already exists.""" @@ -81,30 +71,6 @@ class AgentPoolMode(str, Enum, metaclass=CaseInsensitiveEnumMeta): GATEWAY = "Gateway" """Gateway agent pools are dedicated to providing static egress IPs to pods. For more details, see `https://aka.ms/aks/static-egress-gateway `_.""" - MANAGED_SYSTEM = "ManagedSystem" - """ManagedSystem is a system pool managed by AKS. The pool scales dynamically according to cluster - usage, and has additional automated monitoring and healing capabilities. There can only be one - ManagedSystem pool, and it is recommended to delete all other system pools for the best - experience.""" - MACHINES = "Machines" - """Machines agent pools are dedicated to hosting machines. Only limited operations, such as - creation and deletion, are allowed at the pool level. Please use the machine APIs to manage the - full machine lifecycle.""" - - -class AgentPoolNetworkInterfaceType(str, Enum, metaclass=CaseInsensitiveEnumMeta): - """Type of network interface to be provisioned on each virtual machine instance. For more - information, see `https://aka.ms/aks/multi-nic `_. - """ - - STANDARD = "Standard" - """A standard network interface programmed with an IP from a specified VNet subnet. Must be used - with ``vnetSubnetId`` set in the AgentPoolNetworkInterface. IP address family - (IPv4/IPv6/Dual-stack) is determined by the subnet.""" - DYNAMIC = "Dynamic" - """A secondary network interface created without IP configuration or subnet attachment. The - interface is provisioned in an uninitialized state and the subnet is attached during workload - creation. ``vnetSubnetId`` must be set to an empty string (``""``) or omitted.""" class AgentPoolSSHAccess(str, Enum, metaclass=CaseInsensitiveEnumMeta): @@ -114,9 +80,6 @@ class AgentPoolSSHAccess(str, Enum, metaclass=CaseInsensitiveEnumMeta): """Can SSH onto the node as a local user using private key.""" DISABLED = "Disabled" """SSH service will be turned off on the node.""" - ENTRA_ID = "EntraId" - """SSH to node with EntraId integration. More information can be found under - `https://aka.ms/aks/ssh/aad `_.""" class AgentPoolType(str, Enum, metaclass=CaseInsensitiveEnumMeta): @@ -152,19 +115,6 @@ class BackendPoolType(str, Enum, metaclass=CaseInsensitiveEnumMeta): `_.""" -class ClusterServiceLoadBalancerHealthProbeMode( # pylint: disable=name-too-long - str, Enum, metaclass=CaseInsensitiveEnumMeta -): - """The health probing behavior for External Traffic Policy Cluster services.""" - - SERVICE_NODE_PORT = "ServiceNodePort" - """Each External Traffic Policy Cluster service will have its own health probe targeting service - nodePort.""" - SHARED = "Shared" - """All External Traffic Policy Cluster services in a Standard Load Balancer will have a dedicated - health probe targeting the backend nodes' kube-proxy health check port 10256.""" - - class Code(str, Enum, metaclass=CaseInsensitiveEnumMeta): """Tells whether the cluster is Running or Stopped.""" @@ -187,38 +137,6 @@ class ConnectionStatus(str, Enum, metaclass=CaseInsensitiveEnumMeta): """Connection is disconnected.""" -class ContainerNetworkLogs(str, Enum, metaclass=CaseInsensitiveEnumMeta): - """Configures container network logs ingestion with Azure Monitor. Which network logs to ingest is - controlled by the CRD found in the following links. No network logs are ingested by default. - More information on container network logs can be found at - `https://aka.ms/ContainerNetworkLogsDoc `_. More - information on configuring container network log can be found at - `https://aka.ms/acns/howtoenablecnl `_. If not specified, - the default is Disabled. - """ - - DISABLED = "Disabled" - """Azure monitor ingestion of container network logs is disabled.""" - ENABLED = "Enabled" - """Azure monitor ingestion of container network logs is enabled.""" - - -class ControlPlaneScalingSize(str, Enum, metaclass=CaseInsensitiveEnumMeta): - """The scaling size of the control plane. Scaling sizes offer guaranteed capacity and predictable - Kubernetes performance beyond standard tier defaults. Higher H sizes provide increased - performance guarantees. See `https://aka.ms/aks/hyperscale `_ - for performance metrics details for each size. - """ - - H2 = "H2" - """H2 is the smallest scaling size with guaranteed capacity and predictable performance beyond - standard tier defaults.""" - H4 = "H4" - """H4 scaling size provides increased guaranteed performance over H2.""" - H8 = "H8" - """H8 scaling size provides increased guaranteed performance over H4.""" - - class CreatedByType(str, Enum, metaclass=CaseInsensitiveEnumMeta): """The kind of entity that created the resource.""" @@ -242,32 +160,6 @@ class DeletePolicy(str, Enum, metaclass=CaseInsensitiveEnumMeta): """Delete both the ARM resource and the Kubernetes namespace together.""" -class DriftAction(str, Enum, metaclass=CaseInsensitiveEnumMeta): - """The drift action of the machine. Indicates whether a machine has deviated from its expected - state due to changes in managed cluster properties, requiring corrective action. - """ - - SYNCED = "Synced" - """The machine is up to date.""" - RECREATE = "Recreate" - """The machine has drifted and needs to be deleted and recreated.""" - - -class DriverType(str, Enum, metaclass=CaseInsensitiveEnumMeta): - """Specify the type of GPU driver to install when creating Windows agent pools. If not provided, - AKS selects the driver based on system compatibility. This cannot be changed once the AgentPool - has been created. This cannot be set on Linux AgentPools. For Linux AgentPools, the driver is - selected based on system compatibility. - """ - - GRID = "GRID" - """Install the GRID driver for the GPU, suitable for applications requiring virtualization - support.""" - CUDA = "CUDA" - """Install the CUDA driver for the GPU, optimized for computational tasks in scientific computing - and data-intensive applications.""" - - class Expander(str, Enum, metaclass=CaseInsensitiveEnumMeta): """The expander to use when scaling up. If not specified, the default is 'random'. See `expanders `_ @@ -342,16 +234,6 @@ class GPUInstanceProfile(str, Enum, metaclass=CaseInsensitiveEnumMeta): """MIG 7g GPU instance profile.""" -class GuardrailsSupport(str, Enum, metaclass=CaseInsensitiveEnumMeta): - """Whether the version is preview or stable.""" - - PREVIEW = "Preview" - """The version is preview. It is not recommended to use preview versions on critical production - clusters. The preview version may not support all use-cases.""" - STABLE = "Stable" - """The version is stable and can be used on critical production clusters.""" - - class IdentityBindingProvisioningState(str, Enum, metaclass=CaseInsensitiveEnumMeta): """The provisioning state of the last accepted operation.""" @@ -369,23 +251,6 @@ class IdentityBindingProvisioningState(str, Enum, metaclass=CaseInsensitiveEnumM """The identity binding is being deleted.""" -class InfrastructureEncryption(str, Enum, metaclass=CaseInsensitiveEnumMeta): - """Whether to enable encryption at rest of Kubernetes resource objects using service-managed keys. - More information on this can be found under - `https://aka.ms/aks/kubernetesResourceObjectEncryption - `_. - """ - - ENABLED = "Enabled" - """Encryption at rest of Kubernetes resource objects using service-managed keys is enabled. More - information on this can be found under `https://aka.ms/aks/kubernetesResourceObjectEncryption - `_.""" - DISABLED = "Disabled" - """Encryption at rest of Kubernetes resource objects using service-managed keys is disabled. More - information on this can be found under `https://aka.ms/aks/kubernetesResourceObjectEncryption - `_.""" - - class IPFamily(str, Enum, metaclass=CaseInsensitiveEnumMeta): """To determine if address belongs IPv4 or IPv6 family.""" @@ -395,18 +260,6 @@ class IPFamily(str, Enum, metaclass=CaseInsensitiveEnumMeta): """IPv6 family.""" -class IpvsScheduler(str, Enum, metaclass=CaseInsensitiveEnumMeta): - """IPVS scheduler, for more information please see - `http://www.linuxvirtualserver.org/docs/scheduling.html - `_. - """ - - ROUND_ROBIN = "RoundRobin" - """Round Robin.""" - LEAST_CONNECTION = "LeastConnection" - """Least Connection.""" - - class IstioIngressGatewayMode(str, Enum, metaclass=CaseInsensitiveEnumMeta): """Mode of an ingress gateway.""" @@ -416,23 +269,6 @@ class IstioIngressGatewayMode(str, Enum, metaclass=CaseInsensitiveEnumMeta): """The ingress gateway is assigned an internal IP address and cannot is accessed publicly.""" -class JWTAuthenticatorProvisioningState(str, Enum, metaclass=CaseInsensitiveEnumMeta): - """The provisioning state of the last accepted operation.""" - - SUCCEEDED = "Succeeded" - """Resource has been created.""" - FAILED = "Failed" - """Resource creation failed.""" - CANCELED = "Canceled" - """Resource creation was canceled.""" - CREATING = "Creating" - """The JWT authenticator is being created.""" - UPDATING = "Updating" - """The JWT authenticator is being updated.""" - DELETING = "Deleting" - """The JWT authenticator is being deleted.""" - - class KeyVaultNetworkAccessTypes(str, Enum, metaclass=CaseInsensitiveEnumMeta): """Network access of the key vault. Network access of key vault. The possible values are ``Public`` and ``Private``. ``Public`` means the key vault allows public access from all @@ -639,61 +475,6 @@ class ManagedGatewayType(str, Enum, metaclass=CaseInsensitiveEnumMeta): bundle will be installed for your Kubernetes version.""" -class ManagementMode(str, Enum, metaclass=CaseInsensitiveEnumMeta): - """The Managed GPU experience installs additional components, such as the Data Center GPU Manager - (DCGM) metrics for monitoring, on top of the GPU driver for you. For more details of what is - installed, check out aka.ms/aks/managed-gpu. - """ - - UNMANAGED = "Unmanaged" - """Managed GPU experience is disabled for NVIDIA GPUs.""" - MANAGED = "Managed" - """Managed GPU experience is enabled for NVIDIA GPUs.""" - - -class MeshMembershipProvisioningState(str, Enum, metaclass=CaseInsensitiveEnumMeta): - """The provisioning state of the last accepted operation.""" - - CANCELED = "Canceled" - """Resource creation was canceled.""" - CREATING = "Creating" - """The Mesh Membership is being created.""" - DELETING = "Deleting" - """The Mesh Membership is being deleted.""" - FAILED = "Failed" - """Resource creation failed.""" - SUCCEEDED = "Succeeded" - """Resource has been created.""" - UPDATING = "Updating" - """The Mesh Membership is being updated.""" - - -class MigStrategy(str, Enum, metaclass=CaseInsensitiveEnumMeta): - """Sets the MIG (Multi-Instance GPU) strategy that will be used for managed MIG support. For more - information about the different strategies, visit aka.ms/aks/managed-gpu. When not specified, - the default is None. - """ - - NONE = "None" - """Don't set a MIG strategy. If you previously had one set, this will override it and set remove - the set MIG strategy.""" - SINGLE = "Single" - """Set the MIG strategy for managed MIG as single.""" - MIXED = "Mixed" - """Set the MIG strategy for managed MIG as mixed.""" - - -class Mode(str, Enum, metaclass=CaseInsensitiveEnumMeta): - """Specify which proxy mode to use ('IPTABLES', 'IPVS' or 'NFTABLES').""" - - IPTABLES = "IPTABLES" - """IPTables proxy mode.""" - IPVS = "IPVS" - """IPVS proxy mode. Must be using Kubernetes version >= 1.22.""" - NFTABLES = "NFTABLES" - """NFTables proxy mode. Must be using Kubernetes version >= 1.33.""" - - class NamespaceProvisioningState(str, Enum, metaclass=CaseInsensitiveEnumMeta): """The current provisioning state of the namespace.""" @@ -797,29 +578,6 @@ class NginxIngressControllerType(str, Enum, metaclass=CaseInsensitiveEnumMeta): desired.""" -class NodeDisruptionPolicy(str, Enum, metaclass=CaseInsensitiveEnumMeta): - """The policy configuration for when to allow certain operations which require node re-image and - trigger redeployment. For example, some operations, such as updating the - .properties.ManagedClusterSecurityProfile.customCATrustCertificates field on an existing - managed cluster, trigger rolling updates of the nodes. This setting allows control over when - such updates are accepted. The default is 'Allow'. For a full list of covered operations see - aka.ms/aks/nodedisruptionpolicy". - """ - - ALLOW = "Allow" - """Allows operations that will require node re-image and trigger redeployment.""" - ALLOW_DURING_MAINTENANCE_WINDOW = "AllowDuringMaintenanceWindow" - """Blocks certain operations that will require node re-image and trigger redeployment unless - within the aksManagedNodeOSUpgradeSchedule maintenance window. For a full list of covered - operations see aka.ms/aks/nodedisruptionpolicy . For more information on using the - aksManagedNodeOSUpgradeSchedule maintenance window, please see - `https://learn.microsoft.com/azure/aks/planned-maintenance?tabs=azure-cli - `_.""" - BLOCK = "Block" - """Blocks certain operations that will require node re-image and trigger redeployment. For a full - list of covered operations see aka.ms/aks/nodedisruptionpolicy.""" - - class NodeOSUpgradeChannel(str, Enum, metaclass=CaseInsensitiveEnumMeta): """Node OS Upgrade Channel. Manner in which the OS on your nodes is updated. The default is NodeImage. @@ -876,19 +634,6 @@ class NodeProvisioningMode(str, Enum, metaclass=CaseInsensitiveEnumMeta): (See aka.ms/aks/nap for more details).""" -class Operator(str, Enum, metaclass=CaseInsensitiveEnumMeta): - """operator represents a key's relationship to a set of values. Valid operators are In and NotIn.""" - - IN = "In" - """The value of the key should be in the given list.""" - NOT_IN = "NotIn" - """The value of the key should not be in the given list.""" - EXISTS = "Exists" - """The value of the key should exist.""" - DOES_NOT_EXIST = "DoesNotExist" - """The value of the key should not exist.""" - - class OSDiskType(str, Enum, metaclass=CaseInsensitiveEnumMeta): """The OS disk type to be used for machines in the agent pool. The default is 'Ephemeral' if the VM supports it and has a cache disk larger than the requested OSDiskSizeGB. Otherwise, defaults @@ -924,13 +669,6 @@ class OSSKU(str, Enum, metaclass=CaseInsensitiveEnumMeta): information. For limitations, visit `https://aka.ms/aks/node-images `_. For OS migration guidance, see `https://aka.ms/aks/upgrade-os-version `_.""" - MARINER = "Mariner" - """Deprecated OSSKU. Microsoft recommends that new deployments choose 'AzureLinux' instead.""" - FLATCAR = "Flatcar" - """Use Flatcar Container Linux as the OS for node images. Flatcar is a container-optimized, - security-focused Linux OS, with an immutable filesystem and part of the Cloud Native Computing - Foundation (CNCF). For more information about Flatcar Container Linux for AKS, see - aka.ms/aks/flatcar-container-linux-for-aks.""" CBL_MARINER = "CBLMariner" """Deprecated OSSKU. Microsoft recommends that new deployments choose 'AzureLinux' instead.""" WINDOWS2019 = "Windows2019" @@ -947,11 +685,6 @@ class OSSKU(str, Enum, metaclass=CaseInsensitiveEnumMeta): """Use Windows2025 as the OS for node images. Unsupported for system node pools. Windows2025 supports Windows2022 and Windows 2025 containers; it cannot run Windows2019 containers and vice versa.""" - WINDOWS_ANNUAL = "WindowsAnnual" - """Use Windows Annual Channel version as the OS for node images. Unsupported for system node - pools. Details about supported container images and kubernetes versions under different AKS - Annual Channel versions could be seen in `https://aka.ms/aks/windows-annual-channel-details - `_.""" UBUNTU2404 = "Ubuntu2404" """Use Ubuntu2404 as the OS for node images, however, Ubuntu 24.04 may not be supported for all nodepools. For limitations and supported kubernetes versions, see see @@ -991,8 +724,6 @@ class OutboundType(str, Enum, metaclass=CaseInsensitiveEnumMeta): `_.""" MANAGED_NAT_GATEWAY = "managedNATGateway" """The AKS-managed NAT gateway is used for egress.""" - MANAGED_NAT_GATEWAY_V2 = "managedNATGatewayV2" - """The AKS-managed NAT gateway V2 is used for egress.""" USER_ASSIGNED_NAT_GATEWAY = "userAssignedNATGateway" """The user-assigned NAT gateway associated to the cluster subnet is used for egress. This is an advanced scenario and requires proper network configuration.""" @@ -1021,18 +752,6 @@ class PodIPAllocationMode(str, Enum, metaclass=CaseInsensitiveEnumMeta): is better suited to scale with larger subnets of /15 or bigger.""" -class PodLinkLocalAccess(str, Enum, metaclass=CaseInsensitiveEnumMeta): - """Defines access to special link local addresses (Azure Instance Metadata Service, aka IMDS) for - pods with hostNetwork=false. If not specified, the default is 'IMDS'. - """ - - IMDS = "IMDS" - """Pods with hostNetwork=false can access Azure Instance Metadata Service (IMDS) without - restriction.""" - NONE = "None" - """Pods with hostNetwork=false cannot access Azure Instance Metadata Service (IMDS).""" - - class PolicyRule(str, Enum, metaclass=CaseInsensitiveEnumMeta): """Enum representing different network policy rules.""" @@ -1087,8 +806,6 @@ class PublicNetworkAccess(str, Enum, metaclass=CaseInsensitiveEnumMeta): """Inbound/Outbound to the managedCluster is allowed.""" DISABLED = "Disabled" """Inbound traffic to managedCluster is disabled, traffic from managedCluster is allowed.""" - SECURED_BY_PERIMETER = "SecuredByPerimeter" - """Inbound/Outbound traffic is managed by Microsoft.Network/NetworkSecurityPerimeters.""" class ResourceIdentityType(str, Enum, metaclass=CaseInsensitiveEnumMeta): @@ -1108,35 +825,6 @@ class ResourceIdentityType(str, Enum, metaclass=CaseInsensitiveEnumMeta): """Do not use a managed identity for the Managed Cluster, service principal will be used instead.""" -class ResourceSkuCapacityScaleType(str, Enum, metaclass=CaseInsensitiveEnumMeta): - """The scale type applicable to the sku.""" - - AUTOMATIC = "Automatic" - """Automatic scaling.""" - MANUAL = "Manual" - """Manual scaling.""" - NONE = "None" - """No scaling.""" - - -class ResourceSkuRestrictionsReasonCode(str, Enum, metaclass=CaseInsensitiveEnumMeta): - """The reason for restriction.""" - - QUOTA_ID = "QuotaId" - """Quota ID restriction.""" - NOT_AVAILABLE_FOR_SUBSCRIPTION = "NotAvailableForSubscription" - """Not available for subscription.""" - - -class ResourceSkuRestrictionsType(str, Enum, metaclass=CaseInsensitiveEnumMeta): - """The type of restrictions.""" - - LOCATION = "Location" - """Location restriction.""" - ZONE = "Zone" - """Zone restriction.""" - - class RestrictionLevel(str, Enum, metaclass=CaseInsensitiveEnumMeta): """The restriction level applied to the cluster's node resource group. If not specified, the default is 'Unrestricted'. @@ -1148,16 +836,6 @@ class RestrictionLevel(str, Enum, metaclass=CaseInsensitiveEnumMeta): """Only \\*\\/read RBAC permissions allowed on the managed node resource group.""" -class SafeguardsSupport(str, Enum, metaclass=CaseInsensitiveEnumMeta): - """Whether the version is preview or stable.""" - - PREVIEW = "Preview" - """The version is preview. It is not recommended to use preview versions on critical production - clusters. The preview version may not support all use-cases.""" - STABLE = "Stable" - """The version is stable and can be used on critical production clusters.""" - - class ScaleDownMode(str, Enum, metaclass=CaseInsensitiveEnumMeta): """Describes how VMs are added to or removed from Agent Pools. See `billing states `_. @@ -1194,28 +872,6 @@ class ScaleSetPriority(str, Enum, metaclass=CaseInsensitiveEnumMeta): """Regular VMs will be used.""" -class SchedulerConfigMode(str, Enum, metaclass=CaseInsensitiveEnumMeta): - """The config customization mode for this scheduler instance.""" - - DEFAULT = "Default" - """No config customization. Use default configuration.""" - MANAGED_BY_CRD = "ManagedByCRD" - """Enable config customization. Customer can specify scheduler configuration via a CRD. See - aka.ms/aks/scheduler-crd for details.""" - - -class SeccompDefault(str, Enum, metaclass=CaseInsensitiveEnumMeta): - """Specifies the default seccomp profile applied to all workloads. If not specified, 'Unconfined' - will be used by default. - """ - - UNCONFINED = "Unconfined" - """No seccomp profile is applied, allowing all system calls.""" - RUNTIME_DEFAULT = "RuntimeDefault" - """The default seccomp profile for container runtime is applied, which restricts certain system - calls for enhanced security.""" - - class ServiceMeshMode(str, Enum, metaclass=CaseInsensitiveEnumMeta): """Mode of the service mesh.""" @@ -1230,8 +886,6 @@ class SnapshotType(str, Enum, metaclass=CaseInsensitiveEnumMeta): NODE_POOL = "NodePool" """The snapshot is a snapshot of a node pool.""" - MANAGED_CLUSTER = "ManagedCluster" - """The snapshot is a snapshot of a managed cluster.""" class TransitEncryptionType(str, Enum, metaclass=CaseInsensitiveEnumMeta): @@ -1244,9 +898,6 @@ class TransitEncryptionType(str, Enum, metaclass=CaseInsensitiveEnumMeta): `https://docs.cilium.io/en/latest/security/network/encryption-wireguard/ `_ on use cases and implementation details.""" - M_TLS = "mTLS" - """Enables mTLS authentication and encryption for pod-to-pod traffic within the cluster. Refer to - `https://aka.ms/acnsciliummtls `_ for relevant documentation.""" NONE = "None" """Disable Transit encryption.""" @@ -1335,25 +986,6 @@ class UpgradeChannel(str, Enum, metaclass=CaseInsensitiveEnumMeta): """Disables auto-upgrades and keeps the cluster at its current version of Kubernetes.""" -class UpgradeStrategy(str, Enum, metaclass=CaseInsensitiveEnumMeta): - """Defines the upgrade strategy for the agent pool. The default is Rolling.""" - - ROLLING = "Rolling" - """Specifies that the agent pool will conduct rolling upgrade. This is the default upgrade - strategy.""" - BLUE_GREEN = "BlueGreen" - """Specifies that the agent pool will conduct blue-green upgrade.""" - - -class VmState(str, Enum, metaclass=CaseInsensitiveEnumMeta): - """Virtual machine state. Indicates the current state of the underlying virtual machine.""" - - RUNNING = "Running" - """The virtual machine is currently running.""" - DELETED = "Deleted" - """The virtual machine has been deleted by the user or due to spot eviction.""" - - class WeekDay(str, Enum, metaclass=CaseInsensitiveEnumMeta): """The weekday enum.""" @@ -1380,11 +1012,6 @@ class WorkloadRuntime(str, Enum, metaclass=CaseInsensitiveEnumMeta): """Nodes will use Kubelet to run standard OCI container workloads.""" WASM_WASI = "WasmWasi" """Nodes will use Krustlet to run WASM workloads using the WASI provider (Preview).""" - KATA_MSHV_VM_ISOLATION = "KataMshvVmIsolation" - """Nodes can use (Kata + Cloud Hypervisor + Hyper-V) to enable Nested VM-based pods (Preview). Due - to the use Hyper-V, AKS node OS itself is a nested VM (the root OS) of Hyper-V. Thus it can - only be used with VM series that support Nested Virtualization such as Dv3 series. This naming - convention will be deprecated in future releases in favor of KataVmIsolation.""" KATA_VM_ISOLATION = "KataVmIsolation" """Nodes can use (Kata + Cloud Hypervisor + Hyper-V) to enable Nested VM-based pods. Due to the use Hyper-V, AKS node OS itself is a nested VM (the root OS) of Hyper-V. Thus it can only be diff --git a/sdk/containerservice/azure-mgmt-containerservice/azure/mgmt/containerservice/models/_models.py b/sdk/containerservice/azure-mgmt-containerservice/azure/mgmt/containerservice/models/_models.py index 6f66dd1c77c5..9c4fd68f46a7 100644 --- a/sdk/containerservice/azure-mgmt-containerservice/azure/mgmt/containerservice/models/_models.py +++ b/sdk/containerservice/azure-mgmt-containerservice/azure/mgmt/containerservice/models/_models.py @@ -273,8 +273,8 @@ class AdvancedNetworkingSecurityTransitEncryption(_Model): # pylint: disable=na managed pods will be encrypted when it leaves the node boundary. :ivar type: Configures pod-to-pod encryption. This can be enabled only on Cilium-based - clusters. If not specified, the default value is None. Known values are: "WireGuard", "mTLS", - and "None". + clusters. If not specified, the default value is None. Known values are: "WireGuard" and + "None". :vartype type: str or ~azure.mgmt.containerservice.models.TransitEncryptionType """ @@ -282,7 +282,7 @@ class AdvancedNetworkingSecurityTransitEncryption(_Model): # pylint: disable=na visibility=["read", "create", "update", "delete", "query"] ) """Configures pod-to-pod encryption. This can be enabled only on Cilium-based clusters. If not - specified, the default value is None. Known values are: \"WireGuard\", \"mTLS\", and \"None\".""" + specified, the default value is None. Known values are: \"WireGuard\" and \"None\".""" @overload def __init__( @@ -396,10 +396,7 @@ class AgentPool(ProxyResource): "orchestrator_version", "current_orchestrator_version", "node_image_version", - "upgrade_strategy", - "enable_os_disk_full_caching", "upgrade_settings", - "upgrade_settings_blue_green", "provisioning_state", "power_state", "availability_zones", @@ -411,7 +408,6 @@ class AgentPool(ProxyResource): "tags", "node_labels", "node_taints", - "node_initialization_taints", "proximity_placement_group_id", "kubelet_config", "linux_os_config", @@ -432,7 +428,6 @@ class AgentPool(ProxyResource): "virtual_machine_nodes_status", "status", "local_dns_profile", - "prepared_image_specification_profile", ] @overload @@ -638,83 +633,6 @@ def __init__(self, *args: Any, **kwargs: Any) -> None: super().__init__(*args, **kwargs) -class AgentPoolBlueGreenUpgradeSettings(_Model): - """Settings for blue-green upgrade on an agentpool. - - :ivar drain_batch_size: The number or percentage of nodes to drain in batch during blue-green - upgrade. Must be a non-zero number. This can either be set to an integer (e.g. '5') or a - percentage (e.g. '50%'). If a percentage is specified, it is the percentage of the total number - of blue nodes of the initial upgrade operation. For percentages, fractional nodes are rounded - up. If not specified, the default is 10%. For more information, including best practices, see: - `https://learn.microsoft.com/en-us/azure/aks/upgrade-cluster - `_. - :vartype drain_batch_size: str - :ivar drain_timeout_in_minutes: The drain timeout for a node, i.e., the amount of time (in - minutes) to wait on eviction of pods and graceful termination per node. This eviction wait time - honors waiting on pod disruption budgets. If this time is exceeded, the upgrade fails. If not - specified, the default is 30 minutes. - :vartype drain_timeout_in_minutes: int - :ivar batch_soak_duration_in_minutes: The soak duration after draining a batch of nodes, i.e., - the amount of time (in minutes) to wait after draining a batch of nodes before moving on the - next batch. If not specified, the default is 15 minutes. - :vartype batch_soak_duration_in_minutes: int - :ivar final_soak_duration_in_minutes: The soak duration for a node pool, i.e., the amount of - time (in minutes) to wait after all old nodes are drained before we remove the old nodes. If - not specified, the default is 60 minutes. Only applicable for blue-green upgrade strategy. - :vartype final_soak_duration_in_minutes: int - """ - - drain_batch_size: Optional[str] = rest_field( - name="drainBatchSize", visibility=["read", "create", "update", "delete", "query"] - ) - """The number or percentage of nodes to drain in batch during blue-green upgrade. Must be a - non-zero number. This can either be set to an integer (e.g. '5') or a percentage (e.g. '50%'). - If a percentage is specified, it is the percentage of the total number of blue nodes of the - initial upgrade operation. For percentages, fractional nodes are rounded up. If not specified, - the default is 10%. For more information, including best practices, see: - `https://learn.microsoft.com/en-us/azure/aks/upgrade-cluster - `_.""" - drain_timeout_in_minutes: Optional[int] = rest_field( - name="drainTimeoutInMinutes", visibility=["read", "create", "update", "delete", "query"] - ) - """The drain timeout for a node, i.e., the amount of time (in minutes) to wait on eviction of pods - and graceful termination per node. This eviction wait time honors waiting on pod disruption - budgets. If this time is exceeded, the upgrade fails. If not specified, the default is 30 - minutes.""" - batch_soak_duration_in_minutes: Optional[int] = rest_field( - name="batchSoakDurationInMinutes", visibility=["read", "create", "update", "delete", "query"] - ) - """The soak duration after draining a batch of nodes, i.e., the amount of time (in minutes) to - wait after draining a batch of nodes before moving on the next batch. If not specified, the - default is 15 minutes.""" - final_soak_duration_in_minutes: Optional[int] = rest_field( - name="finalSoakDurationInMinutes", visibility=["read", "create", "update", "delete", "query"] - ) - """The soak duration for a node pool, i.e., the amount of time (in minutes) to wait after all old - nodes are drained before we remove the old nodes. If not specified, the default is 60 minutes. - Only applicable for blue-green upgrade strategy.""" - - @overload - def __init__( - self, - *, - drain_batch_size: Optional[str] = None, - drain_timeout_in_minutes: Optional[int] = None, - batch_soak_duration_in_minutes: Optional[int] = None, - final_soak_duration_in_minutes: Optional[int] = None, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - - class AgentPoolDeleteMachinesParameter(_Model): """Specifies a list of machine names from the agent pool to be deleted. @@ -817,7 +735,7 @@ class AgentPoolManagedClusterAgentPoolProfileProperties(_Model): # pylint: disa root, and Kubelet ephemeral storage. Known values are: "OS" and "Temporary". :vartype kubelet_disk_type: str or ~azure.mgmt.containerservice.models.KubeletDiskType :ivar workload_runtime: Determines the type of workload a node can run. Known values are: - "OCIContainer", "WasmWasi", "KataMshvVmIsolation", and "KataVmIsolation". + "OCIContainer", "WasmWasi", and "KataVmIsolation". :vartype workload_runtime: str or ~azure.mgmt.containerservice.models.WorkloadRuntime :ivar message_of_the_day: Message of the day for Linux nodes, base64-encoded. A base64-encoded string which will be written to /etc/motd after decoding. This allows customization of the @@ -846,9 +764,9 @@ class AgentPoolManagedClusterAgentPoolProfileProperties(_Model): # pylint: disa :vartype os_type: str or ~azure.mgmt.containerservice.models.OSType :ivar os_sku: Specifies the OS SKU used by the agent pool. The default is Ubuntu if OSType is Linux. The default is Windows2019 when Kubernetes <= 1.24 or Windows2022 when Kubernetes >= - 1.25 if OSType is Windows. Known values are: "Ubuntu", "AzureLinux", "AzureLinux3", "Mariner", - "Flatcar", "CBLMariner", "Windows2019", "Windows2022", "Ubuntu2204", "Windows2025", - "WindowsAnnual", "Ubuntu2404", and "AzureContainerLinux". + 1.25 if OSType is Windows. Known values are: "Ubuntu", "AzureLinux", "AzureLinux3", + "CBLMariner", "Windows2019", "Windows2022", "Ubuntu2204", "Windows2025", "Ubuntu2404", and + "AzureContainerLinux". :vartype os_sku: str or ~azure.mgmt.containerservice.models.OSSKU :ivar max_count: The maximum number of nodes for auto-scaling. :vartype max_count: int @@ -867,7 +785,7 @@ class AgentPoolManagedClusterAgentPoolProfileProperties(_Model): # pylint: disa all times. For additional information on agent pool restrictions and best practices, see: `https://docs.microsoft.com/azure/aks/use-system-pools `_. Known values are: "System", "User", - "Gateway", "ManagedSystem", and "Machines". + and "Gateway". :vartype mode: str or ~azure.mgmt.containerservice.models.AgentPoolMode :ivar orchestrator_version: The version of Kubernetes specified by the user. Both patch version (e.g. 1.20.13) and (e.g. 1.20) are supported. When @@ -885,21 +803,11 @@ class AgentPoolManagedClusterAgentPoolProfileProperties(_Model): # pylint: disa exactly equal to it. If orchestratorVersion is , this field will contain the full version being used. :vartype current_orchestrator_version: str - :ivar node_image_version: The version of node image. + :ivar node_image_version: The version of the node image. Setting this value triggers an + agentPool rollback. Only values from ``recentlyUsedVersions`` are allowed. :vartype node_image_version: str - :ivar upgrade_strategy: Defines the upgrade strategy for the agent pool. The default is - Rolling. Known values are: "Rolling" and "BlueGreen". - :vartype upgrade_strategy: str or ~azure.mgmt.containerservice.models.UpgradeStrategy - :ivar enable_os_disk_full_caching: Whether to enable the full-cache ephemeral OS disk feature. - When this feature is enabled, the entire operating system will be locally cached on the - ephemeral OS disk, preventing E17 events caused by network failures. - :vartype enable_os_disk_full_caching: bool :ivar upgrade_settings: Settings for upgrading the agentpool. :vartype upgrade_settings: ~azure.mgmt.containerservice.models.AgentPoolUpgradeSettings - :ivar upgrade_settings_blue_green: Settings for Blue-Green upgrade on the agentpool. Applies - when upgrade strategy is set to BlueGreen. - :vartype upgrade_settings_blue_green: - ~azure.mgmt.containerservice.models.AgentPoolBlueGreenUpgradeSettings :ivar provisioning_state: The current deployment or provisioning state. :vartype provisioning_state: str :ivar power_state: Whether the Agent Pool is running or stopped. When an Agent Pool is first @@ -944,14 +852,6 @@ class AgentPoolManagedClusterAgentPoolProfileProperties(_Model): # pylint: disa :ivar node_taints: The taints added to new nodes during node pool create and scale. For example, key=value:NoSchedule. :vartype node_taints: list[str] - :ivar node_initialization_taints: Taints added on the nodes during creation that will not be - reconciled by AKS. These taints will not be reconciled by AKS and can be removed with a kubectl - call. This field can be modified after node pool is created, but nodes will not be recreated - with new taints until another operation that requires recreation (e.g. node image upgrade) - happens. These taints allow for required configuration to run before the node is ready to - accept workloads, for example 'key1=value1:NoSchedule' that then can be removed with ``kubectl - taint nodes node1 key1=value1:NoSchedule-``. - :vartype node_initialization_taints: list[str] :ivar proximity_placement_group_id: The ID for Proximity Placement Group. :vartype proximity_placement_group_id: str :ivar kubelet_config: The Kubelet configuration on the agent pool nodes. @@ -1015,10 +915,6 @@ class AgentPoolManagedClusterAgentPoolProfileProperties(_Model): # pylint: disa LocalDNS helps improve performance and reliability of DNS resolution in an AKS cluster. For more details see aka.ms/aks/localdns. :vartype local_dns_profile: ~azure.mgmt.containerservice.models.LocalDNSProfile - :ivar prepared_image_specification_profile: Settings to determine the prepared image - specification used to provision nodes in a pool. - :vartype prepared_image_specification_profile: - ~azure.mgmt.containerservice.models.PreparedImageSpecificationProfile """ e_tag: Optional[str] = rest_field(name="eTag", visibility=["read"]) @@ -1057,7 +953,7 @@ class AgentPoolManagedClusterAgentPoolProfileProperties(_Model): # pylint: disa name="workloadRuntime", visibility=["read", "create", "update", "delete", "query"] ) """Determines the type of workload a node can run. Known values are: \"OCIContainer\", - \"WasmWasi\", \"KataMshvVmIsolation\", and \"KataVmIsolation\".""" + \"WasmWasi\", and \"KataVmIsolation\".""" message_of_the_day: Optional[str] = rest_field( name="messageOfTheDay", visibility=["read", "create", "update", "delete", "query"] ) @@ -1095,9 +991,9 @@ class AgentPoolManagedClusterAgentPoolProfileProperties(_Model): # pylint: disa ) """Specifies the OS SKU used by the agent pool. The default is Ubuntu if OSType is Linux. The default is Windows2019 when Kubernetes <= 1.24 or Windows2022 when Kubernetes >= 1.25 if OSType - is Windows. Known values are: \"Ubuntu\", \"AzureLinux\", \"AzureLinux3\", \"Mariner\", - \"Flatcar\", \"CBLMariner\", \"Windows2019\", \"Windows2022\", \"Ubuntu2204\", \"Windows2025\", - \"WindowsAnnual\", \"Ubuntu2404\", and \"AzureContainerLinux\".""" + is Windows. Known values are: \"Ubuntu\", \"AzureLinux\", \"AzureLinux3\", \"CBLMariner\", + \"Windows2019\", \"Windows2022\", \"Ubuntu2204\", \"Windows2025\", \"Ubuntu2404\", and + \"AzureContainerLinux\".""" max_count: Optional[int] = rest_field(name="maxCount", visibility=["read", "create", "update", "delete", "query"]) """The maximum number of nodes for auto-scaling.""" min_count: Optional[int] = rest_field(name="minCount", visibility=["read", "create", "update", "delete", "query"]) @@ -1124,7 +1020,7 @@ class AgentPoolManagedClusterAgentPoolProfileProperties(_Model): # pylint: disa For additional information on agent pool restrictions and best practices, see: `https://docs.microsoft.com/azure/aks/use-system-pools `_. Known values are: \"System\", - \"User\", \"Gateway\", \"ManagedSystem\", and \"Machines\".""" + \"User\", and \"Gateway\".""" orchestrator_version: Optional[str] = rest_field( name="orchestratorVersion", visibility=["read", "create", "update", "delete", "query"] ) @@ -1146,27 +1042,12 @@ class AgentPoolManagedClusterAgentPoolProfileProperties(_Model): # pylint: disa node_image_version: Optional[str] = rest_field( name="nodeImageVersion", visibility=["read", "create", "update", "delete", "query"] ) - """The version of node image.""" - upgrade_strategy: Optional[Union[str, "_models.UpgradeStrategy"]] = rest_field( - name="upgradeStrategy", visibility=["read", "create", "update", "delete", "query"] - ) - """Defines the upgrade strategy for the agent pool. The default is Rolling. Known values are: - \"Rolling\" and \"BlueGreen\".""" - enable_os_disk_full_caching: Optional[bool] = rest_field( - name="enableOSDiskFullCaching", visibility=["read", "create", "update", "delete", "query"] - ) - """Whether to enable the full-cache ephemeral OS disk feature. When this feature is enabled, the - entire operating system will be locally cached on the ephemeral OS disk, preventing E17 events - caused by network failures.""" + """The version of the node image. Setting this value triggers an agentPool rollback. Only values + from ``recentlyUsedVersions`` are allowed.""" upgrade_settings: Optional["_models.AgentPoolUpgradeSettings"] = rest_field( name="upgradeSettings", visibility=["read", "create", "update", "delete", "query"] ) """Settings for upgrading the agentpool.""" - upgrade_settings_blue_green: Optional["_models.AgentPoolBlueGreenUpgradeSettings"] = rest_field( - name="upgradeSettingsBlueGreen", visibility=["read", "create", "update", "delete", "query"] - ) - """Settings for Blue-Green upgrade on the agentpool. Applies when upgrade strategy is set to - BlueGreen.""" provisioning_state: Optional[str] = rest_field(name="provisioningState", visibility=["read"]) """The current deployment or provisioning state.""" power_state: Optional["_models.PowerState"] = rest_field( @@ -1225,16 +1106,6 @@ class AgentPoolManagedClusterAgentPoolProfileProperties(_Model): # pylint: disa ) """The taints added to new nodes during node pool create and scale. For example, key=value:NoSchedule.""" - node_initialization_taints: Optional[list[str]] = rest_field( - name="nodeInitializationTaints", visibility=["read", "create", "update", "delete", "query"] - ) - """Taints added on the nodes during creation that will not be reconciled by AKS. These taints will - not be reconciled by AKS and can be removed with a kubectl call. This field can be modified - after node pool is created, but nodes will not be recreated with new taints until another - operation that requires recreation (e.g. node image upgrade) happens. These taints allow for - required configuration to run before the node is ready to accept workloads, for example - 'key1=value1:NoSchedule' that then can be removed with ``kubectl taint nodes node1 - key1=value1:NoSchedule-``.""" proximity_placement_group_id: Optional[str] = rest_field( name="proximityPlacementGroupID", visibility=["read", "create", "update", "delete", "query"] ) @@ -1332,10 +1203,6 @@ class AgentPoolManagedClusterAgentPoolProfileProperties(_Model): # pylint: disa """Configures the per-node local DNS, with VnetDNS and KubeDNS overrides. LocalDNS helps improve performance and reliability of DNS resolution in an AKS cluster. For more details see aka.ms/aks/localdns.""" - prepared_image_specification_profile: Optional["_models.PreparedImageSpecificationProfile"] = rest_field( - name="preparedImageSpecificationProfile", visibility=["read", "create", "update", "delete", "query"] - ) - """Settings to determine the prepared image specification used to provision nodes in a pool.""" @overload def __init__( # pylint: disable=too-many-locals @@ -1362,10 +1229,7 @@ def __init__( # pylint: disable=too-many-locals mode: Optional[Union[str, "_models.AgentPoolMode"]] = None, orchestrator_version: Optional[str] = None, node_image_version: Optional[str] = None, - upgrade_strategy: Optional[Union[str, "_models.UpgradeStrategy"]] = None, - enable_os_disk_full_caching: Optional[bool] = None, upgrade_settings: Optional["_models.AgentPoolUpgradeSettings"] = None, - upgrade_settings_blue_green: Optional["_models.AgentPoolBlueGreenUpgradeSettings"] = None, power_state: Optional["_models.PowerState"] = None, availability_zones: Optional[list[str]] = None, enable_node_public_ip: Optional[bool] = None, @@ -1376,7 +1240,6 @@ def __init__( # pylint: disable=too-many-locals tags: Optional[dict[str, str]] = None, node_labels: Optional[dict[str, str]] = None, node_taints: Optional[list[str]] = None, - node_initialization_taints: Optional[list[str]] = None, proximity_placement_group_id: Optional[str] = None, kubelet_config: Optional["_models.KubeletConfig"] = None, linux_os_config: Optional["_models.LinuxOSConfig"] = None, @@ -1397,62 +1260,6 @@ def __init__( # pylint: disable=too-many-locals virtual_machine_nodes_status: Optional[list["_models.VirtualMachineNodes"]] = None, status: Optional["_models.AgentPoolStatus"] = None, local_dns_profile: Optional["_models.LocalDNSProfile"] = None, - prepared_image_specification_profile: Optional["_models.PreparedImageSpecificationProfile"] = None, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - - -class AgentPoolNetworkInterface(_Model): - """Configuration of a secondary network interface provisioned on each VM instance in the agent - pool. For more information, see `https://aka.ms/aks/multi-nic `_. - - :ivar type: Type of NIC to be provisioned on the VM. Known values are: "Standard" and - "Dynamic". - :vartype type: str or ~azure.mgmt.containerservice.models.AgentPoolNetworkInterfaceType - :ivar vnet_subnet_id: The resource ID of the subnet which will be attached to the secondary - network interface. Required when ``type`` is ``Standard``; must be an empty string (``""``) or - omitted when ``type`` is ``Dynamic``. - :vartype vnet_subnet_id: str - :ivar enable_accelerated_networking: Whether accelerated networking is enabled on this - secondary NIC. If omitted, this defaults to true only when the agent pool VM SKU supports - accelerated networking. Validation will fail if it is enabled on an unsupported SKU or NIC - configuration. - :vartype enable_accelerated_networking: bool - """ - - type: Optional[Union[str, "_models.AgentPoolNetworkInterfaceType"]] = rest_field( - visibility=["read", "create", "update", "delete", "query"] - ) - """Type of NIC to be provisioned on the VM. Known values are: \"Standard\" and \"Dynamic\".""" - vnet_subnet_id: Optional[str] = rest_field( - name="vnetSubnetId", visibility=["read", "create", "update", "delete", "query"] - ) - """The resource ID of the subnet which will be attached to the secondary network interface. - Required when ``type`` is ``Standard``; must be an empty string (``\"\"``) or omitted when - ``type`` is ``Dynamic``.""" - enable_accelerated_networking: Optional[bool] = rest_field( - name="enableAcceleratedNetworking", visibility=["read", "create", "update", "delete", "query"] - ) - """Whether accelerated networking is enabled on this secondary NIC. If omitted, this defaults to - true only when the agent pool VM SKU supports accelerated networking. Validation will fail if - it is enabled on an unsupported SKU or NIC configuration.""" - - @overload - def __init__( - self, - *, - type: Optional[Union[str, "_models.AgentPoolNetworkInterfaceType"]] = None, - vnet_subnet_id: Optional[str] = None, - enable_accelerated_networking: Optional[bool] = None, ) -> None: ... @overload @@ -1471,45 +1278,18 @@ class AgentPoolNetworkProfile(_Model): :ivar node_public_ip_tags: IPTags of instance-level public IPs. :vartype node_public_ip_tags: list[~azure.mgmt.containerservice.models.IPTag] - :ivar node_public_ip_prefix_i_ds: The resource IDs of public IP prefixes for node public IPs. - At most one IPv4 and one IPv6 prefix may be specified. Order does not matter; the RP determines - IP version from the referenced resource's publicIPAddressVersion. Requires enableNodePublicIP - to be true on the agent pool. Mutually exclusive with the top-level nodePublicIPPrefixID - property. Immutable after node pool creation. To change prefixes, delete and recreate the node - pool. For more information, see `https://aka.ms/aks/ipv6-ilpip - `_. - :vartype node_public_ip_prefix_i_ds: list[str] :ivar allowed_host_ports: The port ranges that are allowed to access. The specified ranges are allowed to overlap. :vartype allowed_host_ports: list[~azure.mgmt.containerservice.models.PortRange] :ivar application_security_groups: The IDs of the application security groups which agent pool will associate when created. :vartype application_security_groups: list[str] - :ivar secondary_network_interfaces: Secondary network interface configurations for each VM in - the agent pool. Each entry is a template: one physical NIC per entry is provisioned on every VM - instance. These interfaces are created at agent pool creation time and are immutable. The - length of the list must be less than the NIC capacity minus 1 for the VM size of the agent pool - (AKS manages the primary NIC). For example, a Standard_D8a_v4 VM supports up to 4 NICs, so the - maximum number of secondary interfaces allowed is 3. For mixed-SKU VM pools the effective - capacity is the minimum across all SKUs: count(secondaryNetworkInterfaces) + 1 <= min(maxNICs). - For more information, see `https://aka.ms/aks/multi-nic `_. - :vartype secondary_network_interfaces: - list[~azure.mgmt.containerservice.models.AgentPoolNetworkInterface] """ node_public_ip_tags: Optional[list["_models.IPTag"]] = rest_field( name="nodePublicIPTags", visibility=["read", "create", "update", "delete", "query"] ) """IPTags of instance-level public IPs.""" - node_public_ip_prefix_i_ds: Optional[list[str]] = rest_field( - name="nodePublicIPPrefixIDs", visibility=["read", "create", "update", "delete", "query"] - ) - """The resource IDs of public IP prefixes for node public IPs. At most one IPv4 and one IPv6 - prefix may be specified. Order does not matter; the RP determines IP version from the - referenced resource's publicIPAddressVersion. Requires enableNodePublicIP to be true on the - agent pool. Mutually exclusive with the top-level nodePublicIPPrefixID property. Immutable - after node pool creation. To change prefixes, delete and recreate the node pool. For more - information, see `https://aka.ms/aks/ipv6-ilpip `_.""" allowed_host_ports: Optional[list["_models.PortRange"]] = rest_field( name="allowedHostPorts", visibility=["read", "create", "update", "delete", "query"] ) @@ -1518,27 +1298,14 @@ class AgentPoolNetworkProfile(_Model): name="applicationSecurityGroups", visibility=["read", "create", "update", "delete", "query"] ) """The IDs of the application security groups which agent pool will associate when created.""" - secondary_network_interfaces: Optional[list["_models.AgentPoolNetworkInterface"]] = rest_field( - name="secondaryNetworkInterfaces", visibility=["read", "create", "update", "delete", "query"] - ) - """Secondary network interface configurations for each VM in the agent pool. Each entry is a - template: one physical NIC per entry is provisioned on every VM instance. These interfaces are - created at agent pool creation time and are immutable. The length of the list must be less than - the NIC capacity minus 1 for the VM size of the agent pool (AKS manages the primary NIC). For - example, a Standard_D8a_v4 VM supports up to 4 NICs, so the maximum number of secondary - interfaces allowed is 3. For mixed-SKU VM pools the effective capacity is the minimum across - all SKUs: count(secondaryNetworkInterfaces) + 1 <= min(maxNICs). For more information, see - `https://aka.ms/aks/multi-nic `_.""" @overload def __init__( self, *, node_public_ip_tags: Optional[list["_models.IPTag"]] = None, - node_public_ip_prefix_i_ds: Optional[list[str]] = None, allowed_host_ports: Optional[list["_models.PortRange"]] = None, application_security_groups: Optional[list[str]] = None, - secondary_network_interfaces: Optional[list["_models.AgentPoolNetworkInterface"]] = None, ) -> None: ... @overload @@ -1607,8 +1374,8 @@ class AgentPoolSecurityProfile(_Model): signed operating systems and drivers can boot. For more details, see aka.ms/aks/trustedlaunch. If not specified, the default is false. :vartype enable_secure_boot: bool - :ivar ssh_access: SSH access method of an agent pool. Known values are: "LocalUser", - "Disabled", and "EntraId". + :ivar ssh_access: SSH access method of an agent pool. Known values are: "LocalUser" and + "Disabled". :vartype ssh_access: str or ~azure.mgmt.containerservice.models.AgentPoolSSHAccess """ @@ -1627,8 +1394,7 @@ class AgentPoolSecurityProfile(_Model): ssh_access: Optional[Union[str, "_models.AgentPoolSSHAccess"]] = rest_field( name="sshAccess", visibility=["read", "create", "update", "delete", "query"] ) - """SSH access method of an agent pool. Known values are: \"LocalUser\", \"Disabled\", and - \"EntraId\".""" + """SSH access method of an agent pool. Known values are: \"LocalUser\" and \"Disabled\".""" @overload def __init__( @@ -1690,7 +1456,6 @@ class AgentPoolUpgradeProfile(ProxyResource): "kubernetes_version", "os_type", "upgrades", - "components_by_releases", "recently_used_versions", "latest_node_image_version", ] @@ -1742,8 +1507,6 @@ class AgentPoolUpgradeProfileProperties(_Model): :ivar upgrades: List of orchestrator types and versions available for upgrade. :vartype upgrades: list[~azure.mgmt.containerservice.models.AgentPoolUpgradeProfilePropertiesUpgradesItem] - :ivar components_by_releases: List of components grouped by kubernetes major.minor version. - :vartype components_by_releases: list[~azure.mgmt.containerservice.models.ComponentsByRelease] :ivar recently_used_versions: List of historical good versions for rollback operations. :vartype recently_used_versions: list[~azure.mgmt.containerservice.models.AgentPoolRecentlyUsedVersion] @@ -1764,10 +1527,6 @@ class AgentPoolUpgradeProfileProperties(_Model): visibility=["read", "create", "update", "delete", "query"] ) """List of orchestrator types and versions available for upgrade.""" - components_by_releases: Optional[list["_models.ComponentsByRelease"]] = rest_field( - name="componentsByReleases", visibility=["read", "create", "update", "delete", "query"] - ) - """List of components grouped by kubernetes major.minor version.""" recently_used_versions: Optional[list["_models.AgentPoolRecentlyUsedVersion"]] = rest_field( name="recentlyUsedVersions", visibility=["read"] ) @@ -1784,7 +1543,6 @@ def __init__( kubernetes_version: str, os_type: Union[str, "_models.OSType"], upgrades: Optional[list["_models.AgentPoolUpgradeProfilePropertiesUpgradesItem"]] = None, - components_by_releases: Optional[list["_models.ComponentsByRelease"]] = None, latest_node_image_version: Optional[str] = None, ) -> None: ... @@ -1806,8 +1564,6 @@ class AgentPoolUpgradeProfilePropertiesUpgradesItem(_Model): # pylint: disable= :vartype kubernetes_version: str :ivar is_preview: Whether the Kubernetes version is currently in preview. :vartype is_preview: bool - :ivar is_out_of_support: Whether the Kubernetes version is out of support. - :vartype is_out_of_support: bool """ kubernetes_version: Optional[str] = rest_field( @@ -1818,10 +1574,6 @@ class AgentPoolUpgradeProfilePropertiesUpgradesItem(_Model): # pylint: disable= name="isPreview", visibility=["read", "create", "update", "delete", "query"] ) """Whether the Kubernetes version is currently in preview.""" - is_out_of_support: Optional[bool] = rest_field( - name="isOutOfSupport", visibility=["read", "create", "update", "delete", "query"] - ) - """Whether the Kubernetes version is out of support.""" @overload def __init__( @@ -1829,7 +1581,6 @@ def __init__( *, kubernetes_version: Optional[str] = None, is_preview: Optional[bool] = None, - is_out_of_support: Optional[bool] = None, ) -> None: ... @overload @@ -1862,15 +1613,6 @@ class AgentPoolUpgradeSettings(_Model): `https://learn.microsoft.com/en-us/azure/aks/upgrade-cluster `_. :vartype max_unavailable: str - :ivar max_blocked_nodes: The maximum number or percentage of extra nodes that are allowed to be - blocked in the agent pool during an upgrade when undrainable node behavior is Cordon. This can - either be set to an integer (e.g. '5') or a percentage (e.g. '50%'). If a percentage is - specified, it is the percentage of the total agent pool size at the time of the upgrade. For - percentages, fractional nodes are rounded up. If not specified, the default is maxSurge. This - must always be greater than or equal to maxSurge. For more information, including best - practices, see: `https://learn.microsoft.com/en-us/azure/aks/upgrade-cluster - `_. - :vartype max_blocked_nodes: str :ivar drain_timeout_in_minutes: The drain timeout for a node. The amount of time (in minutes) to wait on eviction of pods and graceful termination per node. This eviction wait time honors waiting on pod disruption budgets. If this time is exceeded, the upgrade fails. If not @@ -1906,17 +1648,6 @@ class AgentPoolUpgradeSettings(_Model): For more information, including best practices, see: `https://learn.microsoft.com/en-us/azure/aks/upgrade-cluster `_.""" - max_blocked_nodes: Optional[str] = rest_field( - name="maxBlockedNodes", visibility=["read", "create", "update", "delete", "query"] - ) - """The maximum number or percentage of extra nodes that are allowed to be blocked in the agent - pool during an upgrade when undrainable node behavior is Cordon. This can either be set to an - integer (e.g. '5') or a percentage (e.g. '50%'). If a percentage is specified, it is the - percentage of the total agent pool size at the time of the upgrade. For percentages, fractional - nodes are rounded up. If not specified, the default is maxSurge. This must always be greater - than or equal to maxSurge. For more information, including best practices, see: - `https://learn.microsoft.com/en-us/azure/aks/upgrade-cluster - `_.""" drain_timeout_in_minutes: Optional[int] = rest_field( name="drainTimeoutInMinutes", visibility=["read", "create", "update", "delete", "query"] ) @@ -1943,7 +1674,6 @@ def __init__( *, max_surge: Optional[str] = None, max_unavailable: Optional[str] = None, - max_blocked_nodes: Optional[str] = None, drain_timeout_in_minutes: Optional[int] = None, node_soak_duration_in_minutes: Optional[int] = None, undrainable_node_behavior: Optional[Union[str, "_models.UndrainableNodeBehavior"]] = None, @@ -1994,46 +1724,6 @@ def __init__(self, *args: Any, **kwargs: Any) -> None: super().__init__(*args, **kwargs) -class AutoScaleProfile(_Model): - """Specifications on auto-scaling. - - :ivar size: VM size that AKS will use when creating and scaling e.g. 'Standard_E4s_v3', - 'Standard_E16s_v3' or 'Standard_D16s_v5'. - :vartype size: str - :ivar min_count: The minimum number of nodes of the specified sizes. - :vartype min_count: int - :ivar max_count: The maximum number of nodes of the specified sizes. - :vartype max_count: int - """ - - size: Optional[str] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """VM size that AKS will use when creating and scaling e.g. 'Standard_E4s_v3', 'Standard_E16s_v3' - or 'Standard_D16s_v5'.""" - min_count: Optional[int] = rest_field(name="minCount", visibility=["read", "create", "update", "delete", "query"]) - """The minimum number of nodes of the specified sizes.""" - max_count: Optional[int] = rest_field(name="maxCount", visibility=["read", "create", "update", "delete", "query"]) - """The maximum number of nodes of the specified sizes.""" - - @overload - def __init__( - self, - *, - size: Optional[str] = None, - min_count: Optional[int] = None, - max_count: Optional[int] = None, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - - class AzureKeyVaultKms(_Model): """Azure Key Vault key management service settings for the security profile. @@ -2194,89 +1884,6 @@ def __init__(self, *args: Any, **kwargs: Any) -> None: super().__init__(*args, **kwargs) -class Component(_Model): - """Component information for a Kubernetes version. - - :ivar name: Component name. - :vartype name: str - :ivar version: Component version. - :vartype version: str - :ivar has_breaking_changes: If upgraded component version contains breaking changes from the - current version. To see a detailed description of what the breaking changes are, visit - `https://learn.microsoft.com/azure/aks/supported-kubernetes-versions?tabs=azure-cli#aks-components-breaking-changes-by-version - `_. - :vartype has_breaking_changes: bool - """ - - name: Optional[str] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """Component name.""" - version: Optional[str] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """Component version.""" - has_breaking_changes: Optional[bool] = rest_field( - name="hasBreakingChanges", visibility=["read", "create", "update", "delete", "query"] - ) - """If upgraded component version contains breaking changes from the current version. To see a - detailed description of what the breaking changes are, visit - `https://learn.microsoft.com/azure/aks/supported-kubernetes-versions?tabs=azure-cli#aks-components-breaking-changes-by-version - `_.""" - - @overload - def __init__( - self, - *, - name: Optional[str] = None, - version: Optional[str] = None, - has_breaking_changes: Optional[bool] = None, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - - -class ComponentsByRelease(_Model): - """components of given Kubernetes version. - - :ivar kubernetes_version: The Kubernetes version (major.minor). - :vartype kubernetes_version: str - :ivar components: components of current or upgraded Kubernetes version in the cluster. - :vartype components: list[~azure.mgmt.containerservice.models.Component] - """ - - kubernetes_version: Optional[str] = rest_field( - name="kubernetesVersion", visibility=["read", "create", "update", "delete", "query"] - ) - """The Kubernetes version (major.minor).""" - components: Optional[list["_models.Component"]] = rest_field( - visibility=["read", "create", "update", "delete", "query"] - ) - """components of current or upgraded Kubernetes version in the cluster.""" - - @overload - def __init__( - self, - *, - kubernetes_version: Optional[str] = None, - components: Optional[list["_models.Component"]] = None, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - - class ContainerServiceLinuxProfile(_Model): """Profile for Linux VMs in the container service cluster. @@ -2343,8 +1950,7 @@ class ContainerServiceNetworkProfile(_Model): :ivar outbound_type: The outbound (egress) routing method. This can only be set at cluster creation time and cannot be changed later. For more information see `egress outbound type `_. Known values are: "loadBalancer", - "userDefinedRouting", "managedNATGateway", "managedNATGatewayV2", "userAssignedNATGateway", and - "none". + "userDefinedRouting", "managedNATGateway", "userAssignedNATGateway", and "none". :vartype outbound_type: str or ~azure.mgmt.containerservice.models.OutboundType :ivar load_balancer_sku: The load balancer sku for the managed cluster. The default is 'standard'. See `Azure Load Balancer SKUs @@ -2375,17 +1981,6 @@ class ContainerServiceNetworkProfile(_Model): families are used to determine single-stack or dual-stack clusters. For single-stack, the expected value is IPv4. For dual-stack, the expected values are IPv4 and IPv6. :vartype ip_families: list[str or ~azure.mgmt.containerservice.models.IPFamily] - :ivar pod_link_local_access: Defines access to special link local addresses (Azure Instance - Metadata Service, aka IMDS) for pods with hostNetwork=false. if not specified, the default is - 'IMDS'. Known values are: "IMDS" and "None". - :vartype pod_link_local_access: str or ~azure.mgmt.containerservice.models.PodLinkLocalAccess - :ivar kube_proxy_config: Holds configuration customizations for kube-proxy. Any values not - defined will use the kube-proxy defaulting behavior. See `https://v - `_.docs.kubernetes.io/docs/reference/command-line-tools-reference/kube-proxy/ - where is represented by a - string. Kubernetes version - 1.23 would be '1-23'. - :vartype kube_proxy_config: - ~azure.mgmt.containerservice.models.ContainerServiceNetworkProfileKubeProxyConfig """ network_plugin: Optional[Union[str, "_models.NetworkPlugin"]] = rest_field( @@ -2434,8 +2029,8 @@ class ContainerServiceNetworkProfile(_Model): """The outbound (egress) routing method. This can only be set at cluster creation time and cannot be changed later. For more information see `egress outbound type `_. Known values are: - \"loadBalancer\", \"userDefinedRouting\", \"managedNATGateway\", \"managedNATGatewayV2\", - \"userAssignedNATGateway\", and \"none\".""" + \"loadBalancer\", \"userDefinedRouting\", \"managedNATGateway\", \"userAssignedNATGateway\", + and \"none\".""" load_balancer_sku: Optional[Union[str, "_models.LoadBalancerSku"]] = rest_field( name="loadBalancerSku", visibility=["read", "create", "update", "delete", "query"] ) @@ -2473,20 +2068,6 @@ class ContainerServiceNetworkProfile(_Model): """The IP families used to specify IP versions available to the cluster. IP families are used to determine single-stack or dual-stack clusters. For single-stack, the expected value is IPv4. For dual-stack, the expected values are IPv4 and IPv6.""" - pod_link_local_access: Optional[Union[str, "_models.PodLinkLocalAccess"]] = rest_field( - name="podLinkLocalAccess", visibility=["read", "create", "update", "delete", "query"] - ) - """Defines access to special link local addresses (Azure Instance Metadata Service, aka IMDS) for - pods with hostNetwork=false. if not specified, the default is 'IMDS'. Known values are: - \"IMDS\" and \"None\".""" - kube_proxy_config: Optional["_models.ContainerServiceNetworkProfileKubeProxyConfig"] = rest_field( - name="kubeProxyConfig", visibility=["read", "create", "update", "delete", "query"] - ) - """Holds configuration customizations for kube-proxy. Any values not defined will use the - kube-proxy defaulting behavior. See `https://v - `_.docs.kubernetes.io/docs/reference/command-line-tools-reference/kube-proxy/ - where is represented by a - string. Kubernetes version - 1.23 would be '1-23'.""" @overload def __init__( @@ -2509,119 +2090,6 @@ def __init__( pod_cidrs: Optional[list[str]] = None, service_cidrs: Optional[list[str]] = None, ip_families: Optional[list[Union[str, "_models.IPFamily"]]] = None, - pod_link_local_access: Optional[Union[str, "_models.PodLinkLocalAccess"]] = None, - kube_proxy_config: Optional["_models.ContainerServiceNetworkProfileKubeProxyConfig"] = None, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - - -class ContainerServiceNetworkProfileKubeProxyConfig(_Model): # pylint: disable=name-too-long - """Holds configuration customizations for kube-proxy. Any values not defined will use the - kube-proxy defaulting behavior. See `https://v - `_.docs.kubernetes.io/docs/reference/command-line-tools-reference/kube-proxy/ - where is represented by a - string. Kubernetes version - 1.23 would be '1-23'. - - :ivar enabled: Whether to enable on kube-proxy on the cluster (if no 'kubeProxyConfig' exists, - kube-proxy is enabled in AKS by default without these customizations). - :vartype enabled: bool - :ivar mode: Specify which proxy mode to use ('IPTABLES', 'IPVS' or 'NFTABLES'). Known values - are: "IPTABLES", "IPVS", and "NFTABLES". - :vartype mode: str or ~azure.mgmt.containerservice.models.Mode - :ivar ipvs_config: Holds configuration customizations for IPVS. May only be specified if 'mode' - is set to 'IPVS'. - :vartype ipvs_config: - ~azure.mgmt.containerservice.models.ContainerServiceNetworkProfileKubeProxyConfigIpvsConfig - """ - - enabled: Optional[bool] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """Whether to enable on kube-proxy on the cluster (if no 'kubeProxyConfig' exists, kube-proxy is - enabled in AKS by default without these customizations).""" - mode: Optional[Union[str, "_models.Mode"]] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """Specify which proxy mode to use ('IPTABLES', 'IPVS' or 'NFTABLES'). Known values are: - \"IPTABLES\", \"IPVS\", and \"NFTABLES\".""" - ipvs_config: Optional["_models.ContainerServiceNetworkProfileKubeProxyConfigIpvsConfig"] = rest_field( - name="ipvsConfig", visibility=["read", "create", "update", "delete", "query"] - ) - """Holds configuration customizations for IPVS. May only be specified if 'mode' is set to 'IPVS'.""" - - @overload - def __init__( - self, - *, - enabled: Optional[bool] = None, - mode: Optional[Union[str, "_models.Mode"]] = None, - ipvs_config: Optional["_models.ContainerServiceNetworkProfileKubeProxyConfigIpvsConfig"] = None, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - - -class ContainerServiceNetworkProfileKubeProxyConfigIpvsConfig(_Model): # pylint: disable=name-too-long - """Holds configuration customizations for IPVS. May only be specified if 'mode' is set to 'IPVS'. - - :ivar scheduler: IPVS scheduler, for more information please see - `http://www.linuxvirtualserver.org/docs/scheduling.html - `_. Known values are: "RoundRobin" and - "LeastConnection". - :vartype scheduler: str or ~azure.mgmt.containerservice.models.IpvsScheduler - :ivar tcp_timeout_seconds: The timeout value used for idle IPVS TCP sessions in seconds. Must - be a positive integer value. - :vartype tcp_timeout_seconds: int - :ivar tcp_fin_timeout_seconds: The timeout value used for IPVS TCP sessions after receiving a - FIN in seconds. Must be a positive integer value. - :vartype tcp_fin_timeout_seconds: int - :ivar udp_timeout_seconds: The timeout value used for IPVS UDP packets in seconds. Must be a - positive integer value. - :vartype udp_timeout_seconds: int - """ - - scheduler: Optional[Union[str, "_models.IpvsScheduler"]] = rest_field( - visibility=["read", "create", "update", "delete", "query"] - ) - """IPVS scheduler, for more information please see - `http://www.linuxvirtualserver.org/docs/scheduling.html - `_. Known values are: \"RoundRobin\" - and \"LeastConnection\".""" - tcp_timeout_seconds: Optional[int] = rest_field( - name="tcpTimeoutSeconds", visibility=["read", "create", "update", "delete", "query"] - ) - """The timeout value used for idle IPVS TCP sessions in seconds. Must be a positive integer value.""" - tcp_fin_timeout_seconds: Optional[int] = rest_field( - name="tcpFinTimeoutSeconds", visibility=["read", "create", "update", "delete", "query"] - ) - """The timeout value used for IPVS TCP sessions after receiving a FIN in seconds. Must be a - positive integer value.""" - udp_timeout_seconds: Optional[int] = rest_field( - name="udpTimeoutSeconds", visibility=["read", "create", "update", "delete", "query"] - ) - """The timeout value used for IPVS UDP packets in seconds. Must be a positive integer value.""" - - @overload - def __init__( - self, - *, - scheduler: Optional[Union[str, "_models.IpvsScheduler"]] = None, - tcp_timeout_seconds: Optional[int] = None, - tcp_fin_timeout_seconds: Optional[int] = None, - udp_timeout_seconds: Optional[int] = None, ) -> None: ... @overload @@ -3056,14 +2524,6 @@ class GPUProfile(_Model): :ivar driver: Whether to install GPU drivers. When it's not specified, default is Install. Known values are: "Install" and "None". :vartype driver: str or ~azure.mgmt.containerservice.models.GPUDriver - :ivar driver_type: Specify the type of GPU driver to install when creating Windows agent pools. - If not provided, AKS selects the driver based on system compatibility. This cannot be changed - once the AgentPool has been created. This cannot be set on Linux AgentPools. For Linux - AgentPools, the driver is selected based on system compatibility. Known values are: "GRID" and - "CUDA". - :vartype driver_type: str or ~azure.mgmt.containerservice.models.DriverType - :ivar nvidia: NVIDIA-specific GPU settings. - :vartype nvidia: ~azure.mgmt.containerservice.models.NvidiaGPUProfile """ driver: Optional[Union[str, "_models.GPUDriver"]] = rest_field( @@ -3071,25 +2531,12 @@ class GPUProfile(_Model): ) """Whether to install GPU drivers. When it's not specified, default is Install. Known values are: \"Install\" and \"None\".""" - driver_type: Optional[Union[str, "_models.DriverType"]] = rest_field( - name="driverType", visibility=["read", "create", "update", "delete", "query"] - ) - """Specify the type of GPU driver to install when creating Windows agent pools. If not provided, - AKS selects the driver based on system compatibility. This cannot be changed once the AgentPool - has been created. This cannot be set on Linux AgentPools. For Linux AgentPools, the driver is - selected based on system compatibility. Known values are: \"GRID\" and \"CUDA\".""" - nvidia: Optional["_models.NvidiaGPUProfile"] = rest_field( - visibility=["read", "create", "update", "delete", "query"] - ) - """NVIDIA-specific GPU settings.""" @overload def __init__( self, *, driver: Optional[Union[str, "_models.GPUDriver"]] = None, - driver_type: Optional[Union[str, "_models.DriverType"]] = None, - nvidia: Optional["_models.NvidiaGPUProfile"] = None, ) -> None: ... @overload @@ -3103,8 +2550,8 @@ def __init__(self, *args: Any, **kwargs: Any) -> None: super().__init__(*args, **kwargs) -class GuardrailsAvailableVersion(ProxyResource): - """Available Guardrails Version. +class IdentityBinding(ProxyResource): + """The IdentityBinding resource. :ivar id: Fully qualified resource ID for the resource. Ex - /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}. @@ -3117,20 +2564,30 @@ class GuardrailsAvailableVersion(ProxyResource): :ivar system_data: Azure Resource Manager metadata containing createdBy and modifiedBy information. :vartype system_data: ~azure.mgmt.containerservice.models.SystemData - :ivar properties: Whether the version is default or not and support info. Required. - :vartype properties: ~azure.mgmt.containerservice.models.GuardrailsAvailableVersionsProperties + :ivar properties: The resource-specific properties for this resource. + :vartype properties: ~azure.mgmt.containerservice.models.IdentityBindingProperties + :ivar e_tag: If eTag is provided in the response body, it may also be provided as a header per + the normal etag convention. Entity tags are used for comparing two or more entities from the + same requested resource. HTTP/1.1 uses entity tags in the etag (section 14.19), If-Match + (section 14.24), If-None-Match (section 14.26), and If-Range (section 14.27) header fields. + :vartype e_tag: str """ - properties: "_models.GuardrailsAvailableVersionsProperties" = rest_field( + properties: Optional["_models.IdentityBindingProperties"] = rest_field( visibility=["read", "create", "update", "delete", "query"] ) - """Whether the version is default or not and support info. Required.""" + """The resource-specific properties for this resource.""" + e_tag: Optional[str] = rest_field(name="eTag", visibility=["read"]) + """If eTag is provided in the response body, it may also be provided as a header per the normal + etag convention. Entity tags are used for comparing two or more entities from the same + requested resource. HTTP/1.1 uses entity tags in the etag (section 14.19), If-Match (section + 14.24), If-None-Match (section 14.26), and If-Range (section 14.27) header fields.""" @overload def __init__( self, *, - properties: "_models.GuardrailsAvailableVersionsProperties", + properties: Optional["_models.IdentityBindingProperties"] = None, ) -> None: ... @overload @@ -3144,144 +2601,17 @@ def __init__(self, *args: Any, **kwargs: Any) -> None: super().__init__(*args, **kwargs) -class GuardrailsAvailableVersionsProperties(_Model): - """Whether the version is default or not and support info. - - :ivar is_default_version: Whether this is the default version. - :vartype is_default_version: bool - :ivar support: Whether the version is preview or stable. Known values are: "Preview" and - "Stable". - :vartype support: str or ~azure.mgmt.containerservice.models.GuardrailsSupport - """ - - is_default_version: Optional[bool] = rest_field(name="isDefaultVersion", visibility=["read"]) - """Whether this is the default version.""" - support: Optional[Union[str, "_models.GuardrailsSupport"]] = rest_field(visibility=["read"]) - """Whether the version is preview or stable. Known values are: \"Preview\" and \"Stable\".""" - - -class HardEvictionThreshold(_Model): - """Hard eviction thresholds for kubelet. These thresholds trigger pod eviction when node resources - drop below the specified values. Values must be greater than or equal to the documented - minimums for each signal. Supported formats are Ki, Mi, Gi, or percentages using %. +class IdentityBindingManagedIdentityProfile(_Model): + """Managed identity profile for the identity binding. - :ivar memory_available: The threshold for available memory below which pod eviction is - triggered. Accepts absolute values (e.g. '500Mi') or percentage values (e.g. '5%'). Absolute - values must be greater than or equal to 100Mi. Percentage values must be greater than or equal - to 2%. - :vartype memory_available: str - :ivar node_fs_available: The threshold for available node filesystem space below which pod - eviction is triggered. Accepts absolute values (e.g. '1Gi') or percentage values (e.g. '10%'). - Must be greater than or equal to the system default of 10%. - :vartype node_fs_available: str - :ivar node_fs_inodes_free: The threshold for available inodes on the node filesystem below - which pod eviction is triggered. Accepts absolute inode counts (e.g. '100000') or percentage - values (e.g. '5%'). Percentage values must be greater than or equal to the system default of - 5%. - :vartype node_fs_inodes_free: str - """ - - memory_available: Optional[str] = rest_field( - name="memoryAvailable", visibility=["read", "create", "update", "delete", "query"] - ) - """The threshold for available memory below which pod eviction is triggered. Accepts absolute - values (e.g. '500Mi') or percentage values (e.g. '5%'). Absolute values must be greater than or - equal to 100Mi. Percentage values must be greater than or equal to 2%.""" - node_fs_available: Optional[str] = rest_field( - name="nodeFsAvailable", visibility=["read", "create", "update", "delete", "query"] - ) - """The threshold for available node filesystem space below which pod eviction is triggered. - Accepts absolute values (e.g. '1Gi') or percentage values (e.g. '10%'). Must be greater than or - equal to the system default of 10%.""" - node_fs_inodes_free: Optional[str] = rest_field( - name="nodeFsInodesFree", visibility=["read", "create", "update", "delete", "query"] - ) - """The threshold for available inodes on the node filesystem below which pod eviction is - triggered. Accepts absolute inode counts (e.g. '100000') or percentage values (e.g. '5%'). - Percentage values must be greater than or equal to the system default of 5%.""" - - @overload - def __init__( - self, - *, - memory_available: Optional[str] = None, - node_fs_available: Optional[str] = None, - node_fs_inodes_free: Optional[str] = None, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - - -class IdentityBinding(ProxyResource): - """The IdentityBinding resource. - - :ivar id: Fully qualified resource ID for the resource. Ex - - /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}. - :vartype id: str - :ivar name: The name of the resource. - :vartype name: str - :ivar type: The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or - "Microsoft.Storage/storageAccounts". - :vartype type: str - :ivar system_data: Azure Resource Manager metadata containing createdBy and modifiedBy - information. - :vartype system_data: ~azure.mgmt.containerservice.models.SystemData - :ivar properties: The resource-specific properties for this resource. - :vartype properties: ~azure.mgmt.containerservice.models.IdentityBindingProperties - :ivar e_tag: If eTag is provided in the response body, it may also be provided as a header per - the normal etag convention. Entity tags are used for comparing two or more entities from the - same requested resource. HTTP/1.1 uses entity tags in the etag (section 14.19), If-Match - (section 14.24), If-None-Match (section 14.26), and If-Range (section 14.27) header fields. - :vartype e_tag: str - """ - - properties: Optional["_models.IdentityBindingProperties"] = rest_field( - visibility=["read", "create", "update", "delete", "query"] - ) - """The resource-specific properties for this resource.""" - e_tag: Optional[str] = rest_field(name="eTag", visibility=["read"]) - """If eTag is provided in the response body, it may also be provided as a header per the normal - etag convention. Entity tags are used for comparing two or more entities from the same - requested resource. HTTP/1.1 uses entity tags in the etag (section 14.19), If-Match (section - 14.24), If-None-Match (section 14.26), and If-Range (section 14.27) header fields.""" - - @overload - def __init__( - self, - *, - properties: Optional["_models.IdentityBindingProperties"] = None, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - - -class IdentityBindingManagedIdentityProfile(_Model): - """Managed identity profile for the identity binding. - - :ivar resource_id: The resource ID of the managed identity. Required. - :vartype resource_id: str - :ivar object_id: The object ID of the managed identity. - :vartype object_id: str - :ivar client_id: The client ID of the managed identity. - :vartype client_id: str - :ivar tenant_id: The tenant ID of the managed identity. - :vartype tenant_id: str + :ivar resource_id: The resource ID of the managed identity. Required. + :vartype resource_id: str + :ivar object_id: The object ID of the managed identity. + :vartype object_id: str + :ivar client_id: The client ID of the managed identity. + :vartype client_id: str + :ivar tenant_id: The tenant ID of the managed identity. + :vartype tenant_id: str """ resource_id: str = rest_field(name="resourceId", visibility=["read", "create"]) @@ -3678,46 +3008,119 @@ def __init__(self, *args: Any, **kwargs: Any) -> None: super().__init__(*args, **kwargs) -class JWTAuthenticator(ProxyResource): - """Configuration for JWT authenticator in the managed cluster. +class KubeletConfig(_Model): + """Kubelet configurations of agent nodes. See `AKS custom node configuration + `_ for more details. - :ivar id: Fully qualified resource ID for the resource. Ex - - /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}. - :vartype id: str - :ivar name: The name of the resource. - :vartype name: str - :ivar type: The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or - "Microsoft.Storage/storageAccounts". - :vartype type: str - :ivar system_data: Azure Resource Manager metadata containing createdBy and modifiedBy - information. - :vartype system_data: ~azure.mgmt.containerservice.models.SystemData - :ivar properties: The properties of JWTAuthenticator. For details on how to configure the - properties of a JWT authenticator, please refer to the Kubernetes documentation: - `https://kubernetes.io/docs/reference/access-authn-authz/authentication/#using-authentication-configuration - `_. - Please note that not all fields available in the Kubernetes documentation are supported by AKS. - For troubleshooting, please see `https://aka.ms/aks-external-issuers-docs - `_. Required. - :vartype properties: ~azure.mgmt.containerservice.models.JWTAuthenticatorProperties + :ivar cpu_manager_policy: The CPU Manager policy to use. The default is 'none'. See `Kubernetes + CPU management policies + `_ + for more information. Allowed values are 'none' and 'static'. + :vartype cpu_manager_policy: str + :ivar cpu_cfs_quota: If CPU CFS quota enforcement is enabled for containers that specify CPU + limits. The default is true. + :vartype cpu_cfs_quota: bool + :ivar cpu_cfs_quota_period: The CPU CFS quota period value. The default is '100ms.' Valid + values are a sequence of decimal numbers with an optional fraction and a unit suffix. For + example: '300ms', '2h45m'. Supported units are 'ns', 'us', 'ms', 's', 'm', and 'h'. + :vartype cpu_cfs_quota_period: str + :ivar image_gc_high_threshold: The percent of disk usage after which image garbage collection + is always run. To disable image garbage collection, set to 100. The default is 85%. + :vartype image_gc_high_threshold: int + :ivar image_gc_low_threshold: The percent of disk usage before which image garbage collection + is never run. This cannot be set higher than imageGcHighThreshold. The default is 80%. + :vartype image_gc_low_threshold: int + :ivar topology_manager_policy: The Topology Manager policy to use. For more information see + `Kubernetes Topology Manager + `_. The default is + 'none'. Allowed values are 'none', 'best-effort', 'restricted', and 'single-numa-node'. + :vartype topology_manager_policy: str + :ivar allowed_unsafe_sysctls: Allowed list of unsafe sysctls or unsafe sysctl patterns (ending + in ``*``). + :vartype allowed_unsafe_sysctls: list[str] + :ivar fail_swap_on: If set to true it will make the Kubelet fail to start if swap is enabled on + the node. + :vartype fail_swap_on: bool + :ivar container_log_max_size_mb: The maximum size (e.g. 10Mi) of container log file before it + is rotated. + :vartype container_log_max_size_mb: int + :ivar container_log_max_files: The maximum number of container log files that can be present + for a container. The number must be ≥ 2. + :vartype container_log_max_files: int + :ivar pod_max_pids: The maximum number of processes per pod. + :vartype pod_max_pids: int """ - properties: "_models.JWTAuthenticatorProperties" = rest_field( - visibility=["read", "create", "update", "delete", "query"] + cpu_manager_policy: Optional[str] = rest_field( + name="cpuManagerPolicy", visibility=["read", "create", "update", "delete", "query"] + ) + """The CPU Manager policy to use. The default is 'none'. See `Kubernetes CPU management policies + `_ + for more information. Allowed values are 'none' and 'static'.""" + cpu_cfs_quota: Optional[bool] = rest_field( + name="cpuCfsQuota", visibility=["read", "create", "update", "delete", "query"] + ) + """If CPU CFS quota enforcement is enabled for containers that specify CPU limits. The default is + true.""" + cpu_cfs_quota_period: Optional[str] = rest_field( + name="cpuCfsQuotaPeriod", visibility=["read", "create", "update", "delete", "query"] + ) + """The CPU CFS quota period value. The default is '100ms.' Valid values are a sequence of decimal + numbers with an optional fraction and a unit suffix. For example: '300ms', '2h45m'. Supported + units are 'ns', 'us', 'ms', 's', 'm', and 'h'.""" + image_gc_high_threshold: Optional[int] = rest_field( + name="imageGcHighThreshold", visibility=["read", "create", "update", "delete", "query"] + ) + """The percent of disk usage after which image garbage collection is always run. To disable image + garbage collection, set to 100. The default is 85%.""" + image_gc_low_threshold: Optional[int] = rest_field( + name="imageGcLowThreshold", visibility=["read", "create", "update", "delete", "query"] + ) + """The percent of disk usage before which image garbage collection is never run. This cannot be + set higher than imageGcHighThreshold. The default is 80%.""" + topology_manager_policy: Optional[str] = rest_field( + name="topologyManagerPolicy", visibility=["read", "create", "update", "delete", "query"] + ) + """The Topology Manager policy to use. For more information see `Kubernetes Topology Manager + `_. The default is + 'none'. Allowed values are 'none', 'best-effort', 'restricted', and 'single-numa-node'.""" + allowed_unsafe_sysctls: Optional[list[str]] = rest_field( + name="allowedUnsafeSysctls", visibility=["read", "create", "update", "delete", "query"] + ) + """Allowed list of unsafe sysctls or unsafe sysctl patterns (ending in ``*``).""" + fail_swap_on: Optional[bool] = rest_field( + name="failSwapOn", visibility=["read", "create", "update", "delete", "query"] + ) + """If set to true it will make the Kubelet fail to start if swap is enabled on the node.""" + container_log_max_size_mb: Optional[int] = rest_field( + name="containerLogMaxSizeMB", visibility=["read", "create", "update", "delete", "query"] + ) + """The maximum size (e.g. 10Mi) of container log file before it is rotated.""" + container_log_max_files: Optional[int] = rest_field( + name="containerLogMaxFiles", visibility=["read", "create", "update", "delete", "query"] + ) + """The maximum number of container log files that can be present for a container. The number must + be ≥ 2.""" + pod_max_pids: Optional[int] = rest_field( + name="podMaxPids", visibility=["read", "create", "update", "delete", "query"] ) - """The properties of JWTAuthenticator. For details on how to configure the properties of a JWT - authenticator, please refer to the Kubernetes documentation: - `https://kubernetes.io/docs/reference/access-authn-authz/authentication/#using-authentication-configuration - `_. - Please note that not all fields available in the Kubernetes documentation are supported by AKS. - For troubleshooting, please see `https://aka.ms/aks-external-issuers-docs - `_. Required.""" + """The maximum number of processes per pod.""" @overload def __init__( self, *, - properties: "_models.JWTAuthenticatorProperties", + cpu_manager_policy: Optional[str] = None, + cpu_cfs_quota: Optional[bool] = None, + cpu_cfs_quota_period: Optional[str] = None, + image_gc_high_threshold: Optional[int] = None, + image_gc_low_threshold: Optional[int] = None, + topology_manager_policy: Optional[str] = None, + allowed_unsafe_sysctls: Optional[list[str]] = None, + fail_swap_on: Optional[bool] = None, + container_log_max_size_mb: Optional[int] = None, + container_log_max_files: Optional[int] = None, + pod_max_pids: Optional[int] = None, ) -> None: ... @overload @@ -3731,21 +3134,21 @@ def __init__(self, *args: Any, **kwargs: Any) -> None: super().__init__(*args, **kwargs) -class JWTAuthenticatorClaimMappingExpression(_Model): - """The claim mapping expression for JWTAuthenticator. +class KubernetesPatchVersion(_Model): + """Kubernetes patch version profile. - :ivar expression: The CEL expression used to access token claims. Required. - :vartype expression: str + :ivar upgrades: Possible upgrade path for given patch version. + :vartype upgrades: list[str] """ - expression: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The CEL expression used to access token claims. Required.""" + upgrades: Optional[list[str]] = rest_field(visibility=["read", "create", "update", "delete", "query"]) + """Possible upgrade path for given patch version.""" @overload def __init__( self, *, - expression: str, + upgrades: Optional[list[str]] = None, ) -> None: ... @overload @@ -3759,51 +3162,49 @@ def __init__(self, *args: Any, **kwargs: Any) -> None: super().__init__(*args, **kwargs) -class JWTAuthenticatorClaimMappings(_Model): - """The claim mappings for JWTAuthenticator. +class KubernetesVersion(_Model): + """Kubernetes version profile for given major.minor release. - :ivar username: The expression to extract username attribute from the token claims. Required. - :vartype username: ~azure.mgmt.containerservice.models.JWTAuthenticatorClaimMappingExpression - :ivar groups: The expression to extract groups attribute from the token claims. When not - provided, no groups are extracted from the token claims. - :vartype groups: ~azure.mgmt.containerservice.models.JWTAuthenticatorClaimMappingExpression - :ivar uid: The expression to extract uid attribute from the token claims. When not provided, no - uid is extracted from the token claims. - :vartype uid: ~azure.mgmt.containerservice.models.JWTAuthenticatorClaimMappingExpression - :ivar extra: The expression to extract extra attribute from the token claims. When not - provided, no extra attributes are extracted from the token claims. - :vartype extra: - list[~azure.mgmt.containerservice.models.JWTAuthenticatorExtraClaimMappingExpression] + :ivar version: major.minor version of Kubernetes release. + :vartype version: str + :ivar capabilities: Capabilities on this Kubernetes version. + :vartype capabilities: ~azure.mgmt.containerservice.models.KubernetesVersionCapabilities + :ivar is_default: Whether this version is default. + :vartype is_default: bool + :ivar is_preview: Whether this version is in preview mode. + :vartype is_preview: bool + :ivar patch_versions: Patch versions of Kubernetes release. + :vartype patch_versions: dict[str, ~azure.mgmt.containerservice.models.KubernetesPatchVersion] """ - username: "_models.JWTAuthenticatorClaimMappingExpression" = rest_field( + version: Optional[str] = rest_field(visibility=["read", "create", "update", "delete", "query"]) + """major.minor version of Kubernetes release.""" + capabilities: Optional["_models.KubernetesVersionCapabilities"] = rest_field( visibility=["read", "create", "update", "delete", "query"] ) - """The expression to extract username attribute from the token claims. Required.""" - groups: Optional["_models.JWTAuthenticatorClaimMappingExpression"] = rest_field( - visibility=["read", "create", "update", "delete", "query"] + """Capabilities on this Kubernetes version.""" + is_default: Optional[bool] = rest_field( + name="isDefault", visibility=["read", "create", "update", "delete", "query"] ) - """The expression to extract groups attribute from the token claims. When not provided, no groups - are extracted from the token claims.""" - uid: Optional["_models.JWTAuthenticatorClaimMappingExpression"] = rest_field( - visibility=["read", "create", "update", "delete", "query"] + """Whether this version is default.""" + is_preview: Optional[bool] = rest_field( + name="isPreview", visibility=["read", "create", "update", "delete", "query"] ) - """The expression to extract uid attribute from the token claims. When not provided, no uid is - extracted from the token claims.""" - extra: Optional[list["_models.JWTAuthenticatorExtraClaimMappingExpression"]] = rest_field( - visibility=["read", "create", "update", "delete", "query"] + """Whether this version is in preview mode.""" + patch_versions: Optional[dict[str, "_models.KubernetesPatchVersion"]] = rest_field( + name="patchVersions", visibility=["read", "create", "update", "delete", "query"] ) - """The expression to extract extra attribute from the token claims. When not provided, no extra - attributes are extracted from the token claims.""" + """Patch versions of Kubernetes release.""" @overload def __init__( self, *, - username: "_models.JWTAuthenticatorClaimMappingExpression", - groups: Optional["_models.JWTAuthenticatorClaimMappingExpression"] = None, - uid: Optional["_models.JWTAuthenticatorClaimMappingExpression"] = None, - extra: Optional[list["_models.JWTAuthenticatorExtraClaimMappingExpression"]] = None, + version: Optional[str] = None, + capabilities: Optional["_models.KubernetesVersionCapabilities"] = None, + is_default: Optional[bool] = None, + is_preview: Optional[bool] = None, + patch_versions: Optional[dict[str, "_models.KubernetesPatchVersion"]] = None, ) -> None: ... @overload @@ -3817,29 +3218,23 @@ def __init__(self, *args: Any, **kwargs: Any) -> None: super().__init__(*args, **kwargs) -class JWTAuthenticatorExtraClaimMappingExpression(_Model): # pylint: disable=name-too-long - """The extra claim mapping expression for JWTAuthenticator. +class KubernetesVersionCapabilities(_Model): + """Capabilities on this Kubernetes version. - :ivar key: The key of the extra attribute. Required. - :vartype key: str - :ivar value_expression: The CEL expression used to extract the value of the extra attribute. - Required. - :vartype value_expression: str + :ivar support_plan: Kubernetes support plans available for this version. + :vartype support_plan: list[str or ~azure.mgmt.containerservice.models.KubernetesSupportPlan] """ - key: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The key of the extra attribute. Required.""" - value_expression: str = rest_field( - name="valueExpression", visibility=["read", "create", "update", "delete", "query"] + support_plan: Optional[list[Union[str, "_models.KubernetesSupportPlan"]]] = rest_field( + name="supportPlan", visibility=["read", "create", "update", "delete", "query"] ) - """The CEL expression used to extract the value of the extra attribute. Required.""" + """Kubernetes support plans available for this version.""" @overload def __init__( self, *, - key: str, - value_expression: str, + support_plan: Optional[list[Union[str, "_models.KubernetesSupportPlan"]]] = None, ) -> None: ... @overload @@ -3853,104 +3248,23 @@ def __init__(self, *args: Any, **kwargs: Any) -> None: super().__init__(*args, **kwargs) -class JWTAuthenticatorIssuer(_Model): - """The OIDC issuer details for JWTAuthenticator. +class KubernetesVersionListResult(_Model): + """Hold values properties, which is array of KubernetesVersion. - :ivar url: The issuer URL. The URL must begin with the scheme https and cannot contain a query - string or fragment. This must match the "iss" claim in the presented JWT, and the issuer - returned from discovery. Required. - :vartype url: str - :ivar audiences: The set of acceptable audiences the JWT must be issued to. At least one is - required. When multiple is set, AudienceMatchPolicy is used in API Server configuration. - Required. - :vartype audiences: list[str] + :ivar values_property: Array of AKS supported Kubernetes versions. + :vartype values_property: list[~azure.mgmt.containerservice.models.KubernetesVersion] """ - url: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The issuer URL. The URL must begin with the scheme https and cannot contain a query string or - fragment. This must match the \"iss\" claim in the presented JWT, and the issuer returned from - discovery. Required.""" - audiences: list[str] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The set of acceptable audiences the JWT must be issued to. At least one is required. When - multiple is set, AudienceMatchPolicy is used in API Server configuration. Required.""" - - @overload - def __init__( - self, - *, - url: str, - audiences: list[str], - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - - -class JWTAuthenticatorProperties(_Model): - """The properties of JWTAuthenticator. For details on how to configure the properties of a JWT - authenticator, please refer to the Kubernetes documentation: - `https://kubernetes.io/docs/reference/access-authn-authz/authentication/#using-authentication-configuration - `_. - Please note that not all fields available in the Kubernetes documentation are supported by AKS. - For troubleshooting, please see `https://aka.ms/aks-external-issuers-docs - `_. - - :ivar provisioning_state: The current provisioning state of the JWT authenticator. Known values - are: "Succeeded", "Failed", "Canceled", "Creating", "Updating", and "Deleting". - :vartype provisioning_state: str or - ~azure.mgmt.containerservice.models.JWTAuthenticatorProvisioningState - :ivar issuer: The JWT OIDC issuer details. Required. - :vartype issuer: ~azure.mgmt.containerservice.models.JWTAuthenticatorIssuer - :ivar claim_validation_rules: The rules that are applied to validate token claims to - authenticate users. All the expressions must evaluate to true for validation to succeed. - :vartype claim_validation_rules: - list[~azure.mgmt.containerservice.models.JWTAuthenticatorValidationRule] - :ivar claim_mappings: The mappings that define how user attributes are extracted from the token - claims. Required. - :vartype claim_mappings: ~azure.mgmt.containerservice.models.JWTAuthenticatorClaimMappings - :ivar user_validation_rules: The rules that are applied to the mapped user before completing - authentication. All the expressions must evaluate to true for validation to succeed. - :vartype user_validation_rules: - list[~azure.mgmt.containerservice.models.JWTAuthenticatorValidationRule] - """ - - provisioning_state: Optional[Union[str, "_models.JWTAuthenticatorProvisioningState"]] = rest_field( - name="provisioningState", visibility=["read"] - ) - """The current provisioning state of the JWT authenticator. Known values are: \"Succeeded\", - \"Failed\", \"Canceled\", \"Creating\", \"Updating\", and \"Deleting\".""" - issuer: "_models.JWTAuthenticatorIssuer" = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The JWT OIDC issuer details. Required.""" - claim_validation_rules: Optional[list["_models.JWTAuthenticatorValidationRule"]] = rest_field( - name="claimValidationRules", visibility=["read", "create", "update", "delete", "query"] - ) - """The rules that are applied to validate token claims to authenticate users. All the expressions - must evaluate to true for validation to succeed.""" - claim_mappings: "_models.JWTAuthenticatorClaimMappings" = rest_field( - name="claimMappings", visibility=["read", "create", "update", "delete", "query"] - ) - """The mappings that define how user attributes are extracted from the token claims. Required.""" - user_validation_rules: Optional[list["_models.JWTAuthenticatorValidationRule"]] = rest_field( - name="userValidationRules", visibility=["read", "create", "update", "delete", "query"] + values_property: Optional[list["_models.KubernetesVersion"]] = rest_field( + name="values", visibility=["read", "create", "update", "delete", "query"], original_tsp_name="values" ) - """The rules that are applied to the mapped user before completing authentication. All the - expressions must evaluate to true for validation to succeed.""" + """Array of AKS supported Kubernetes versions.""" @overload def __init__( self, *, - issuer: "_models.JWTAuthenticatorIssuer", - claim_mappings: "_models.JWTAuthenticatorClaimMappings", - claim_validation_rules: Optional[list["_models.JWTAuthenticatorValidationRule"]] = None, - user_validation_rules: Optional[list["_models.JWTAuthenticatorValidationRule"]] = None, + values_property: Optional[list["_models.KubernetesVersion"]] = None, ) -> None: ... @overload @@ -3964,26 +3278,55 @@ def __init__(self, *args: Any, **kwargs: Any) -> None: super().__init__(*args, **kwargs) -class JWTAuthenticatorValidationRule(_Model): - """The validation rule for JWTAuthenticator. +class LinuxOSConfig(_Model): + """OS configurations of Linux agent nodes. See `AKS custom node configuration + `_ for more details. - :ivar expression: The CEL expression used to validate the claim or attribute. Required. - :vartype expression: str - :ivar message: The validation error message. - :vartype message: str + :ivar sysctls: Sysctl settings for Linux agent nodes. + :vartype sysctls: ~azure.mgmt.containerservice.models.SysctlConfig + :ivar transparent_huge_page_enabled: Whether transparent hugepages are enabled. Valid values + are 'always', 'madvise', and 'never'. The default is 'always'. For more information see + `Transparent Hugepages + `_. + :vartype transparent_huge_page_enabled: str + :ivar transparent_huge_page_defrag: Whether the kernel should make aggressive use of memory + compaction to make more hugepages available. Valid values are 'always', 'defer', + 'defer+madvise', 'madvise' and 'never'. The default is 'madvise'. For more information see + `Transparent Hugepages + `_. + :vartype transparent_huge_page_defrag: str + :ivar swap_file_size_mb: The size in MB of a swap file that will be created on each node. + :vartype swap_file_size_mb: int """ - expression: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The CEL expression used to validate the claim or attribute. Required.""" - message: Optional[str] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The validation error message.""" + sysctls: Optional["_models.SysctlConfig"] = rest_field(visibility=["read", "create", "update", "delete", "query"]) + """Sysctl settings for Linux agent nodes.""" + transparent_huge_page_enabled: Optional[str] = rest_field( + name="transparentHugePageEnabled", visibility=["read", "create", "update", "delete", "query"] + ) + """Whether transparent hugepages are enabled. Valid values are 'always', 'madvise', and 'never'. + The default is 'always'. For more information see `Transparent Hugepages + `_.""" + transparent_huge_page_defrag: Optional[str] = rest_field( + name="transparentHugePageDefrag", visibility=["read", "create", "update", "delete", "query"] + ) + """Whether the kernel should make aggressive use of memory compaction to make more hugepages + available. Valid values are 'always', 'defer', 'defer+madvise', 'madvise' and 'never'. The + default is 'madvise'. For more information see `Transparent Hugepages + `_.""" + swap_file_size_mb: Optional[int] = rest_field( + name="swapFileSizeMB", visibility=["read", "create", "update", "delete", "query"] + ) + """The size in MB of a swap file that will be created on each node.""" @overload def __init__( self, *, - expression: str, - message: Optional[str] = None, + sysctls: Optional["_models.SysctlConfig"] = None, + transparent_huge_page_enabled: Optional[str] = None, + transparent_huge_page_defrag: Optional[str] = None, + swap_file_size_mb: Optional[int] = None, ) -> None: ... @overload @@ -3997,153 +3340,91 @@ def __init__(self, *args: Any, **kwargs: Any) -> None: super().__init__(*args, **kwargs) -class KubeletConfig(_Model): - """Kubelet configurations of agent nodes. See `AKS custom node configuration - `_ for more details. +class LocalDNSOverride(_Model): + """Overrides for localDNS profile. - :ivar cpu_manager_policy: The CPU Manager policy to use. The default is 'none'. See `Kubernetes - CPU management policies - `_ - for more information. Allowed values are 'none' and 'static'. - :vartype cpu_manager_policy: str - :ivar cpu_cfs_quota: If CPU CFS quota enforcement is enabled for containers that specify CPU - limits. The default is true. - :vartype cpu_cfs_quota: bool - :ivar cpu_cfs_quota_period: The CPU CFS quota period value. The default is '100ms.' Valid - values are a sequence of decimal numbers with an optional fraction and a unit suffix. For - example: '300ms', '2h45m'. Supported units are 'ns', 'us', 'ms', 's', 'm', and 'h'. - :vartype cpu_cfs_quota_period: str - :ivar image_gc_high_threshold: The percent of disk usage after which image garbage collection - is always run. To disable image garbage collection, set to 100. The default is 85%. - :vartype image_gc_high_threshold: int - :ivar image_gc_low_threshold: The percent of disk usage before which image garbage collection - is never run. This cannot be set higher than imageGcHighThreshold. The default is 80%. - :vartype image_gc_low_threshold: int - :ivar topology_manager_policy: The Topology Manager policy to use. For more information see - `Kubernetes Topology Manager - `_. The default is - 'none'. Allowed values are 'none', 'best-effort', 'restricted', and 'single-numa-node'. - :vartype topology_manager_policy: str - :ivar allowed_unsafe_sysctls: Allowed list of unsafe sysctls or unsafe sysctl patterns (ending - in ``*``). - :vartype allowed_unsafe_sysctls: list[str] - :ivar fail_swap_on: If set to true it will make the Kubelet fail to start if swap is enabled on - the node. - :vartype fail_swap_on: bool - :ivar container_log_max_size_mb: The maximum size (e.g. 10Mi) of container log file before it - is rotated. - :vartype container_log_max_size_mb: int - :ivar container_log_max_files: The maximum number of container log files that can be present - for a container. The number must be ≥ 2. - :vartype container_log_max_files: int - :ivar pod_max_pids: The maximum number of processes per pod. - :vartype pod_max_pids: int - :ivar seccomp_default: Specifies the default seccomp profile applied to all workloads. If not - specified, 'Unconfined' will be used by default. Known values are: "Unconfined" and - "RuntimeDefault". - :vartype seccomp_default: str or ~azure.mgmt.containerservice.models.SeccompDefault - :ivar kube_reserved: Kube-reserved values for kubelet. When a value is not set, the - system-computed default based on VM size is used. See `AKS node resource reservations - `_ for details on computed defaults. Only applicable for - Linux nodepools. - :vartype kube_reserved: ~azure.mgmt.containerservice.models.KubeReserved - :ivar hard_eviction_threshold: Hard eviction thresholds for kubelet. When a threshold is not - set, the system default is used. See `AKS node resource reservations - `_ for details on computed defaults. Only applicable for - Linux nodepools. - :vartype hard_eviction_threshold: ~azure.mgmt.containerservice.models.HardEvictionThreshold + :ivar query_logging: Log level for DNS queries in localDNS. Known values are: "Error" and + "Log". + :vartype query_logging: str or ~azure.mgmt.containerservice.models.LocalDNSQueryLogging + :ivar protocol: Enforce TCP or prefer UDP protocol for connections from localDNS to upstream + DNS server. Known values are: "PreferUDP" and "ForceTCP". + :vartype protocol: str or ~azure.mgmt.containerservice.models.LocalDNSProtocol + :ivar forward_destination: Destination server for DNS queries to be forwarded from localDNS. + Known values are: "ClusterCoreDNS" and "VnetDNS". + :vartype forward_destination: str or + ~azure.mgmt.containerservice.models.LocalDNSForwardDestination + :ivar forward_policy: Forward policy for selecting upstream DNS server. See `forward plugin + `_ for more information. Known values are: "Sequential", + "RoundRobin", and "Random". + :vartype forward_policy: str or ~azure.mgmt.containerservice.models.LocalDNSForwardPolicy + :ivar max_concurrent: Maximum number of concurrent queries. See `forward plugin + `_ for more information. + :vartype max_concurrent: int + :ivar cache_duration_in_seconds: Cache max TTL in seconds. See `cache plugin + `_ for more information. + :vartype cache_duration_in_seconds: int + :ivar serve_stale_duration_in_seconds: Serve stale duration in seconds. See `cache plugin + `_ for more information. + :vartype serve_stale_duration_in_seconds: int + :ivar serve_stale: Policy for serving stale data. See `cache plugin + `_ for more information. Known values are: "Verify", + "Immediate", and "Disable". + :vartype serve_stale: str or ~azure.mgmt.containerservice.models.LocalDNSServeStale """ - cpu_manager_policy: Optional[str] = rest_field( - name="cpuManagerPolicy", visibility=["read", "create", "update", "delete", "query"] - ) - """The CPU Manager policy to use. The default is 'none'. See `Kubernetes CPU management policies - `_ - for more information. Allowed values are 'none' and 'static'.""" - cpu_cfs_quota: Optional[bool] = rest_field( - name="cpuCfsQuota", visibility=["read", "create", "update", "delete", "query"] - ) - """If CPU CFS quota enforcement is enabled for containers that specify CPU limits. The default is - true.""" - cpu_cfs_quota_period: Optional[str] = rest_field( - name="cpuCfsQuotaPeriod", visibility=["read", "create", "update", "delete", "query"] - ) - """The CPU CFS quota period value. The default is '100ms.' Valid values are a sequence of decimal - numbers with an optional fraction and a unit suffix. For example: '300ms', '2h45m'. Supported - units are 'ns', 'us', 'ms', 's', 'm', and 'h'.""" - image_gc_high_threshold: Optional[int] = rest_field( - name="imageGcHighThreshold", visibility=["read", "create", "update", "delete", "query"] - ) - """The percent of disk usage after which image garbage collection is always run. To disable image - garbage collection, set to 100. The default is 85%.""" - image_gc_low_threshold: Optional[int] = rest_field( - name="imageGcLowThreshold", visibility=["read", "create", "update", "delete", "query"] - ) - """The percent of disk usage before which image garbage collection is never run. This cannot be - set higher than imageGcHighThreshold. The default is 80%.""" - topology_manager_policy: Optional[str] = rest_field( - name="topologyManagerPolicy", visibility=["read", "create", "update", "delete", "query"] - ) - """The Topology Manager policy to use. For more information see `Kubernetes Topology Manager - `_. The default is - 'none'. Allowed values are 'none', 'best-effort', 'restricted', and 'single-numa-node'.""" - allowed_unsafe_sysctls: Optional[list[str]] = rest_field( - name="allowedUnsafeSysctls", visibility=["read", "create", "update", "delete", "query"] + query_logging: Optional[Union[str, "_models.LocalDNSQueryLogging"]] = rest_field( + name="queryLogging", visibility=["read", "create", "update", "delete", "query"] ) - """Allowed list of unsafe sysctls or unsafe sysctl patterns (ending in ``*``).""" - fail_swap_on: Optional[bool] = rest_field( - name="failSwapOn", visibility=["read", "create", "update", "delete", "query"] + """Log level for DNS queries in localDNS. Known values are: \"Error\" and \"Log\".""" + protocol: Optional[Union[str, "_models.LocalDNSProtocol"]] = rest_field( + visibility=["read", "create", "update", "delete", "query"] ) - """If set to true it will make the Kubelet fail to start if swap is enabled on the node.""" - container_log_max_size_mb: Optional[int] = rest_field( - name="containerLogMaxSizeMB", visibility=["read", "create", "update", "delete", "query"] + """Enforce TCP or prefer UDP protocol for connections from localDNS to upstream DNS server. Known + values are: \"PreferUDP\" and \"ForceTCP\".""" + forward_destination: Optional[Union[str, "_models.LocalDNSForwardDestination"]] = rest_field( + name="forwardDestination", visibility=["read", "create", "update", "delete", "query"] ) - """The maximum size (e.g. 10Mi) of container log file before it is rotated.""" - container_log_max_files: Optional[int] = rest_field( - name="containerLogMaxFiles", visibility=["read", "create", "update", "delete", "query"] + """Destination server for DNS queries to be forwarded from localDNS. Known values are: + \"ClusterCoreDNS\" and \"VnetDNS\".""" + forward_policy: Optional[Union[str, "_models.LocalDNSForwardPolicy"]] = rest_field( + name="forwardPolicy", visibility=["read", "create", "update", "delete", "query"] ) - """The maximum number of container log files that can be present for a container. The number must - be ≥ 2.""" - pod_max_pids: Optional[int] = rest_field( - name="podMaxPids", visibility=["read", "create", "update", "delete", "query"] + """Forward policy for selecting upstream DNS server. See `forward plugin + `_ for more information. Known values are: \"Sequential\", + \"RoundRobin\", and \"Random\".""" + max_concurrent: Optional[int] = rest_field( + name="maxConcurrent", visibility=["read", "create", "update", "delete", "query"] ) - """The maximum number of processes per pod.""" - seccomp_default: Optional[Union[str, "_models.SeccompDefault"]] = rest_field( - name="seccompDefault", visibility=["read", "create", "update", "delete", "query"] + """Maximum number of concurrent queries. See `forward plugin + `_ for more information.""" + cache_duration_in_seconds: Optional[int] = rest_field( + name="cacheDurationInSeconds", visibility=["read", "create", "update", "delete", "query"] ) - """Specifies the default seccomp profile applied to all workloads. If not specified, 'Unconfined' - will be used by default. Known values are: \"Unconfined\" and \"RuntimeDefault\".""" - kube_reserved: Optional["_models.KubeReserved"] = rest_field( - name="kubeReserved", visibility=["read", "create", "update", "delete", "query"] + """Cache max TTL in seconds. See `cache plugin `_ for more + information.""" + serve_stale_duration_in_seconds: Optional[int] = rest_field( + name="serveStaleDurationInSeconds", visibility=["read", "create", "update", "delete", "query"] ) - """Kube-reserved values for kubelet. When a value is not set, the system-computed default based on - VM size is used. See `AKS node resource reservations `_ - for details on computed defaults. Only applicable for Linux nodepools.""" - hard_eviction_threshold: Optional["_models.HardEvictionThreshold"] = rest_field( - name="hardEvictionThreshold", visibility=["read", "create", "update", "delete", "query"] + """Serve stale duration in seconds. See `cache plugin `_ for + more information.""" + serve_stale: Optional[Union[str, "_models.LocalDNSServeStale"]] = rest_field( + name="serveStale", visibility=["read", "create", "update", "delete", "query"] ) - """Hard eviction thresholds for kubelet. When a threshold is not set, the system default is used. - See `AKS node resource reservations `_ for details on - computed defaults. Only applicable for Linux nodepools.""" + """Policy for serving stale data. See `cache plugin `_ for more + information. Known values are: \"Verify\", \"Immediate\", and \"Disable\".""" @overload def __init__( self, *, - cpu_manager_policy: Optional[str] = None, - cpu_cfs_quota: Optional[bool] = None, - cpu_cfs_quota_period: Optional[str] = None, - image_gc_high_threshold: Optional[int] = None, - image_gc_low_threshold: Optional[int] = None, - topology_manager_policy: Optional[str] = None, - allowed_unsafe_sysctls: Optional[list[str]] = None, - fail_swap_on: Optional[bool] = None, - container_log_max_size_mb: Optional[int] = None, - container_log_max_files: Optional[int] = None, - pod_max_pids: Optional[int] = None, - seccomp_default: Optional[Union[str, "_models.SeccompDefault"]] = None, - kube_reserved: Optional["_models.KubeReserved"] = None, - hard_eviction_threshold: Optional["_models.HardEvictionThreshold"] = None, + query_logging: Optional[Union[str, "_models.LocalDNSQueryLogging"]] = None, + protocol: Optional[Union[str, "_models.LocalDNSProtocol"]] = None, + forward_destination: Optional[Union[str, "_models.LocalDNSForwardDestination"]] = None, + forward_policy: Optional[Union[str, "_models.LocalDNSForwardPolicy"]] = None, + max_concurrent: Optional[int] = None, + cache_duration_in_seconds: Optional[int] = None, + serve_stale_duration_in_seconds: Optional[int] = None, + serve_stale: Optional[Union[str, "_models.LocalDNSServeStale"]] = None, ) -> None: ... @overload @@ -4157,1301 +3438,49 @@ def __init__(self, *args: Any, **kwargs: Any) -> None: super().__init__(*args, **kwargs) -class KubeReserved(_Model): - """Kube-reserved values for kubelet. When a value is not set, the system-computed default based on - VM size is used. See `AKS node resource reservations `_ - for details on computed defaults. Only applicable for Linux nodepools. +class LocalDNSProfile(_Model): + """Configures the per-node local DNS, with VnetDNS and KubeDNS overrides. LocalDNS helps improve + performance and reliability of DNS resolution in an AKS cluster. For more details see + aka.ms/aks/localdns. - :ivar cpu_millicores: The amount of CPU reserved for Kubernetes system daemons, in millicores. - Must be greater than or equal to 140. For example, a value of 200 means 200m (0.2 CPU cores). - :vartype cpu_millicores: int - :ivar memory_mb: The amount of memory reserved for Kubernetes system daemons, in MiB. Must be - greater than or equal to 750. - :vartype memory_mb: int + :ivar mode: Mode of enablement for localDNS. Known values are: "Preferred", "Required", and + "Disabled". + :vartype mode: str or ~azure.mgmt.containerservice.models.LocalDNSMode + :ivar state: System-generated state of localDNS. Known values are: "Enabled" and "Disabled". + :vartype state: str or ~azure.mgmt.containerservice.models.LocalDNSState + :ivar vnet_dns_overrides: VnetDNS overrides apply to DNS traffic from pods with + dnsPolicy:default or kubelet (referred to as VnetDNS traffic). + :vartype vnet_dns_overrides: dict[str, ~azure.mgmt.containerservice.models.LocalDNSOverride] + :ivar kube_dns_overrides: KubeDNS overrides apply to DNS traffic from pods with + dnsPolicy:ClusterFirst (referred to as KubeDNS traffic). + :vartype kube_dns_overrides: dict[str, ~azure.mgmt.containerservice.models.LocalDNSOverride] """ - cpu_millicores: Optional[int] = rest_field( - name="cpuMillicores", visibility=["read", "create", "update", "delete", "query"] + mode: Optional[Union[str, "_models.LocalDNSMode"]] = rest_field( + visibility=["read", "create", "update", "delete", "query"] ) - """The amount of CPU reserved for Kubernetes system daemons, in millicores. Must be greater than - or equal to 140. For example, a value of 200 means 200m (0.2 CPU cores).""" - memory_mb: Optional[int] = rest_field(name="memoryMB", visibility=["read", "create", "update", "delete", "query"]) - """The amount of memory reserved for Kubernetes system daemons, in MiB. Must be greater than or - equal to 750.""" - - @overload - def __init__( - self, - *, - cpu_millicores: Optional[int] = None, - memory_mb: Optional[int] = None, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - - -class KubernetesPatchVersion(_Model): - """Kubernetes patch version profile. - - :ivar upgrades: Possible upgrade path for given patch version. - :vartype upgrades: list[str] - """ - - upgrades: Optional[list[str]] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """Possible upgrade path for given patch version.""" - - @overload - def __init__( - self, - *, - upgrades: Optional[list[str]] = None, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - - -class KubernetesResourceObjectEncryptionProfile(_Model): # pylint: disable=name-too-long - """Encryption at rest of Kubernetes resource objects using service-managed keys. More information - on this can be found under `https://aka.ms/aks/kubernetesResourceObjectEncryption - `_. - - :ivar infrastructure_encryption: Whether to enable encryption at rest of Kubernetes resource - objects using service-managed keys. More information on this can be found under - `https://aka.ms/aks/kubernetesResourceObjectEncryption - `_. Known values are: "Enabled" and - "Disabled". - :vartype infrastructure_encryption: str or - ~azure.mgmt.containerservice.models.InfrastructureEncryption - """ - - infrastructure_encryption: Optional[Union[str, "_models.InfrastructureEncryption"]] = rest_field( - name="infrastructureEncryption", visibility=["read", "create", "update", "delete", "query"] - ) - """Whether to enable encryption at rest of Kubernetes resource objects using service-managed keys. - More information on this can be found under - `https://aka.ms/aks/kubernetesResourceObjectEncryption - `_. Known values are: \"Enabled\" and + """Mode of enablement for localDNS. Known values are: \"Preferred\", \"Required\", and \"Disabled\".""" - - @overload - def __init__( - self, - *, - infrastructure_encryption: Optional[Union[str, "_models.InfrastructureEncryption"]] = None, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - - -class KubernetesVersion(_Model): - """Kubernetes version profile for given major.minor release. - - :ivar version: major.minor version of Kubernetes release. - :vartype version: str - :ivar capabilities: Capabilities on this Kubernetes version. - :vartype capabilities: ~azure.mgmt.containerservice.models.KubernetesVersionCapabilities - :ivar is_default: Whether this version is default. - :vartype is_default: bool - :ivar is_preview: Whether this version is in preview mode. - :vartype is_preview: bool - :ivar patch_versions: Patch versions of Kubernetes release. - :vartype patch_versions: dict[str, ~azure.mgmt.containerservice.models.KubernetesPatchVersion] - """ - - version: Optional[str] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """major.minor version of Kubernetes release.""" - capabilities: Optional["_models.KubernetesVersionCapabilities"] = rest_field( - visibility=["read", "create", "update", "delete", "query"] - ) - """Capabilities on this Kubernetes version.""" - is_default: Optional[bool] = rest_field( - name="isDefault", visibility=["read", "create", "update", "delete", "query"] - ) - """Whether this version is default.""" - is_preview: Optional[bool] = rest_field( - name="isPreview", visibility=["read", "create", "update", "delete", "query"] - ) - """Whether this version is in preview mode.""" - patch_versions: Optional[dict[str, "_models.KubernetesPatchVersion"]] = rest_field( - name="patchVersions", visibility=["read", "create", "update", "delete", "query"] - ) - """Patch versions of Kubernetes release.""" - - @overload - def __init__( - self, - *, - version: Optional[str] = None, - capabilities: Optional["_models.KubernetesVersionCapabilities"] = None, - is_default: Optional[bool] = None, - is_preview: Optional[bool] = None, - patch_versions: Optional[dict[str, "_models.KubernetesPatchVersion"]] = None, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - - -class KubernetesVersionCapabilities(_Model): - """Capabilities on this Kubernetes version. - - :ivar support_plan: Kubernetes support plans available for this version. - :vartype support_plan: list[str or ~azure.mgmt.containerservice.models.KubernetesSupportPlan] - """ - - support_plan: Optional[list[Union[str, "_models.KubernetesSupportPlan"]]] = rest_field( - name="supportPlan", visibility=["read", "create", "update", "delete", "query"] - ) - """Kubernetes support plans available for this version.""" - - @overload - def __init__( - self, - *, - support_plan: Optional[list[Union[str, "_models.KubernetesSupportPlan"]]] = None, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - - -class KubernetesVersionListResult(_Model): - """Hold values properties, which is array of KubernetesVersion. - - :ivar values_property: Array of AKS supported Kubernetes versions. - :vartype values_property: list[~azure.mgmt.containerservice.models.KubernetesVersion] - """ - - values_property: Optional[list["_models.KubernetesVersion"]] = rest_field( - name="values", visibility=["read", "create", "update", "delete", "query"], original_tsp_name="values" - ) - """Array of AKS supported Kubernetes versions.""" - - @overload - def __init__( - self, - *, - values_property: Optional[list["_models.KubernetesVersion"]] = None, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - - -class LabelSelector(_Model): - """A label selector is a label query over a set of resources. The result of matchLabels and - matchExpressions are ANDed. An empty label selector matches all objects. A null label selector - matches no objects. - - :ivar match_labels: matchLabels is an array of {key=value} pairs. A single {key=value} in the - matchLabels map is equivalent to an element of matchExpressions, whose key field is ``key``, - the operator is ``In``, and the values array contains only ``value``. The requirements are - ANDed. - :vartype match_labels: list[str] - :ivar match_expressions: matchExpressions is a list of label selector requirements. The - requirements are ANDed. - :vartype match_expressions: list[~azure.mgmt.containerservice.models.LabelSelectorRequirement] - """ - - match_labels: Optional[list[str]] = rest_field( - name="matchLabels", visibility=["read", "create", "update", "delete", "query"] - ) - """matchLabels is an array of {key=value} pairs. A single {key=value} in the matchLabels map is - equivalent to an element of matchExpressions, whose key field is ``key``, the operator is - ``In``, and the values array contains only ``value``. The requirements are ANDed.""" - match_expressions: Optional[list["_models.LabelSelectorRequirement"]] = rest_field( - name="matchExpressions", visibility=["read", "create", "update", "delete", "query"] - ) - """matchExpressions is a list of label selector requirements. The requirements are ANDed.""" - - @overload - def __init__( - self, - *, - match_labels: Optional[list[str]] = None, - match_expressions: Optional[list["_models.LabelSelectorRequirement"]] = None, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - - -class LabelSelectorRequirement(_Model): - """A label selector requirement is a selector that contains values, a key, and an operator that - relates the key and values. - - :ivar key: key is the label key that the selector applies to. - :vartype key: str - :ivar operator: operator represents a key's relationship to a set of values. Valid operators - are In and NotIn. Known values are: "In", "NotIn", "Exists", and "DoesNotExist". - :vartype operator: str or ~azure.mgmt.containerservice.models.Operator - :ivar values_property: values is an array of string values, the values array must be non-empty. - :vartype values_property: list[str] - """ - - key: Optional[str] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """key is the label key that the selector applies to.""" - operator: Optional[Union[str, "_models.Operator"]] = rest_field( - visibility=["read", "create", "update", "delete", "query"] + state: Optional[Union[str, "_models.LocalDNSState"]] = rest_field(visibility=["read"]) + """System-generated state of localDNS. Known values are: \"Enabled\" and \"Disabled\".""" + vnet_dns_overrides: Optional[dict[str, "_models.LocalDNSOverride"]] = rest_field( + name="vnetDNSOverrides", visibility=["read", "create", "update", "delete", "query"] ) - """operator represents a key's relationship to a set of values. Valid operators are In and NotIn. - Known values are: \"In\", \"NotIn\", \"Exists\", and \"DoesNotExist\".""" - values_property: Optional[list[str]] = rest_field( - name="values", visibility=["read", "create", "update", "delete", "query"], original_tsp_name="values" + """VnetDNS overrides apply to DNS traffic from pods with dnsPolicy:default or kubelet (referred to + as VnetDNS traffic).""" + kube_dns_overrides: Optional[dict[str, "_models.LocalDNSOverride"]] = rest_field( + name="kubeDNSOverrides", visibility=["read", "create", "update", "delete", "query"] ) - """values is an array of string values, the values array must be non-empty.""" - - @overload - def __init__( - self, - *, - key: Optional[str] = None, - operator: Optional[Union[str, "_models.Operator"]] = None, - values_property: Optional[list[str]] = None, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - - -class LinuxOSConfig(_Model): - """OS configurations of Linux agent nodes. See `AKS custom node configuration - `_ for more details. - - :ivar sysctls: Sysctl settings for Linux agent nodes. - :vartype sysctls: ~azure.mgmt.containerservice.models.SysctlConfig - :ivar transparent_huge_page_enabled: Whether transparent hugepages are enabled. Valid values - are 'always', 'madvise', and 'never'. The default is 'always'. For more information see - `Transparent Hugepages - `_. - :vartype transparent_huge_page_enabled: str - :ivar transparent_huge_page_defrag: Whether the kernel should make aggressive use of memory - compaction to make more hugepages available. Valid values are 'always', 'defer', - 'defer+madvise', 'madvise' and 'never'. The default is 'madvise'. For more information see - `Transparent Hugepages - `_. - :vartype transparent_huge_page_defrag: str - :ivar swap_file_size_mb: The size in MB of a swap file that will be created on each node. - :vartype swap_file_size_mb: int - """ - - sysctls: Optional["_models.SysctlConfig"] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """Sysctl settings for Linux agent nodes.""" - transparent_huge_page_enabled: Optional[str] = rest_field( - name="transparentHugePageEnabled", visibility=["read", "create", "update", "delete", "query"] - ) - """Whether transparent hugepages are enabled. Valid values are 'always', 'madvise', and 'never'. - The default is 'always'. For more information see `Transparent Hugepages - `_.""" - transparent_huge_page_defrag: Optional[str] = rest_field( - name="transparentHugePageDefrag", visibility=["read", "create", "update", "delete", "query"] - ) - """Whether the kernel should make aggressive use of memory compaction to make more hugepages - available. Valid values are 'always', 'defer', 'defer+madvise', 'madvise' and 'never'. The - default is 'madvise'. For more information see `Transparent Hugepages - `_.""" - swap_file_size_mb: Optional[int] = rest_field( - name="swapFileSizeMB", visibility=["read", "create", "update", "delete", "query"] - ) - """The size in MB of a swap file that will be created on each node.""" - - @overload - def __init__( - self, - *, - sysctls: Optional["_models.SysctlConfig"] = None, - transparent_huge_page_enabled: Optional[str] = None, - transparent_huge_page_defrag: Optional[str] = None, - swap_file_size_mb: Optional[int] = None, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - - -class LoadBalancer(ProxyResource): - """The configurations regarding multiple standard load balancers. If not supplied, single load - balancer mode will be used. Multiple standard load balancers mode will be used if at lease one - configuration is supplied. There has to be a configuration named ``kubernetes``. The name field - will be the name of the corresponding public load balancer. There will be an internal load - balancer created if needed, and the name will be ``-internal``. The internal lb shares - the same configurations as the external one. The internal lbs are not needed to be included in - LoadBalancer list. - - :ivar id: Fully qualified resource ID for the resource. Ex - - /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}. - :vartype id: str - :ivar name: The name of the resource. - :vartype name: str - :ivar type: The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or - "Microsoft.Storage/storageAccounts". - :vartype type: str - :ivar system_data: Azure Resource Manager metadata containing createdBy and modifiedBy - information. - :vartype system_data: ~azure.mgmt.containerservice.models.SystemData - :ivar properties: The properties of the load balancer. - :vartype properties: ~azure.mgmt.containerservice.models.LoadBalancerProperties - """ - - properties: Optional["_models.LoadBalancerProperties"] = rest_field( - visibility=["read", "create", "update", "delete", "query"] - ) - """The properties of the load balancer.""" - - __flattened_items = [ - "primary_agent_pool_name", - "allow_service_placement", - "service_label_selector", - "service_namespace_selector", - "node_selector", - "provisioning_state", - ] - - @overload - def __init__( - self, - *, - properties: Optional["_models.LoadBalancerProperties"] = None, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - _flattened_input = {k: kwargs.pop(k) for k in kwargs.keys() & self.__flattened_items} - super().__init__(*args, **kwargs) - for k, v in _flattened_input.items(): - setattr(self, k, v) - - def __getattr__(self, name: str) -> Any: - if name in self.__flattened_items: - if self.properties is None: - return None - return getattr(self.properties, name) - raise AttributeError(f"'{self.__class__.__name__}' object has no attribute '{name}'") - - def __setattr__(self, key: str, value: Any) -> None: - if key in self.__flattened_items: - if self.properties is None: - self.properties = self._attr_to_rest_field["properties"]._class_type() - setattr(self.properties, key, value) - else: - super().__setattr__(key, value) - - -class LoadBalancerProperties(_Model): - """Properties for a load balancer resource. - - :ivar primary_agent_pool_name: Required field. A string value that must specify the ID of an - existing agent pool. All nodes in the given pool will always be added to this load balancer. - This agent pool must have at least one node and minCount>=1 for autoscaling operations. An - agent pool can only be the primary pool for a single load balancer. Required. - :vartype primary_agent_pool_name: str - :ivar allow_service_placement: Whether to automatically place services on the load balancer. If - not supplied, the default value is true. If set to false manually, both of the external and the - internal load balancer will not be selected for services unless they explicitly target it. - :vartype allow_service_placement: bool - :ivar service_label_selector: Only services that must match this selector can be placed on this - load balancer. - :vartype service_label_selector: ~azure.mgmt.containerservice.models.LabelSelector - :ivar service_namespace_selector: Services created in namespaces that match the selector can be - placed on this load balancer. - :vartype service_namespace_selector: ~azure.mgmt.containerservice.models.LabelSelector - :ivar node_selector: Nodes that match this selector will be possible members of this load - balancer. - :vartype node_selector: ~azure.mgmt.containerservice.models.LabelSelector - :ivar provisioning_state: The current provisioning state. - :vartype provisioning_state: str - """ - - primary_agent_pool_name: str = rest_field( - name="primaryAgentPoolName", visibility=["read", "create", "update", "delete", "query"] - ) - """Required field. A string value that must specify the ID of an existing agent pool. All nodes in - the given pool will always be added to this load balancer. This agent pool must have at least - one node and minCount>=1 for autoscaling operations. An agent pool can only be the primary pool - for a single load balancer. Required.""" - allow_service_placement: Optional[bool] = rest_field( - name="allowServicePlacement", visibility=["read", "create", "update", "delete", "query"] - ) - """Whether to automatically place services on the load balancer. If not supplied, the default - value is true. If set to false manually, both of the external and the internal load balancer - will not be selected for services unless they explicitly target it.""" - service_label_selector: Optional["_models.LabelSelector"] = rest_field( - name="serviceLabelSelector", visibility=["read", "create", "update", "delete", "query"] - ) - """Only services that must match this selector can be placed on this load balancer.""" - service_namespace_selector: Optional["_models.LabelSelector"] = rest_field( - name="serviceNamespaceSelector", visibility=["read", "create", "update", "delete", "query"] - ) - """Services created in namespaces that match the selector can be placed on this load balancer.""" - node_selector: Optional["_models.LabelSelector"] = rest_field( - name="nodeSelector", visibility=["read", "create", "update", "delete", "query"] - ) - """Nodes that match this selector will be possible members of this load balancer.""" - provisioning_state: Optional[str] = rest_field(name="provisioningState", visibility=["read"]) - """The current provisioning state.""" - - @overload - def __init__( - self, - *, - primary_agent_pool_name: str, - allow_service_placement: Optional[bool] = None, - service_label_selector: Optional["_models.LabelSelector"] = None, - service_namespace_selector: Optional["_models.LabelSelector"] = None, - node_selector: Optional["_models.LabelSelector"] = None, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - - -class LocalDNSOverride(_Model): - """Overrides for localDNS profile. - - :ivar query_logging: Log level for DNS queries in localDNS. Known values are: "Error" and - "Log". - :vartype query_logging: str or ~azure.mgmt.containerservice.models.LocalDNSQueryLogging - :ivar protocol: Enforce TCP or prefer UDP protocol for connections from localDNS to upstream - DNS server. Known values are: "PreferUDP" and "ForceTCP". - :vartype protocol: str or ~azure.mgmt.containerservice.models.LocalDNSProtocol - :ivar forward_destination: Destination server for DNS queries to be forwarded from localDNS. - Known values are: "ClusterCoreDNS" and "VnetDNS". - :vartype forward_destination: str or - ~azure.mgmt.containerservice.models.LocalDNSForwardDestination - :ivar forward_policy: Forward policy for selecting upstream DNS server. See `forward plugin - `_ for more information. Known values are: "Sequential", - "RoundRobin", and "Random". - :vartype forward_policy: str or ~azure.mgmt.containerservice.models.LocalDNSForwardPolicy - :ivar max_concurrent: Maximum number of concurrent queries. See `forward plugin - `_ for more information. - :vartype max_concurrent: int - :ivar cache_duration_in_seconds: Cache max TTL in seconds. See `cache plugin - `_ for more information. - :vartype cache_duration_in_seconds: int - :ivar serve_stale_duration_in_seconds: Serve stale duration in seconds. See `cache plugin - `_ for more information. - :vartype serve_stale_duration_in_seconds: int - :ivar serve_stale: Policy for serving stale data. See `cache plugin - `_ for more information. Known values are: "Verify", - "Immediate", and "Disable". - :vartype serve_stale: str or ~azure.mgmt.containerservice.models.LocalDNSServeStale - """ - - query_logging: Optional[Union[str, "_models.LocalDNSQueryLogging"]] = rest_field( - name="queryLogging", visibility=["read", "create", "update", "delete", "query"] - ) - """Log level for DNS queries in localDNS. Known values are: \"Error\" and \"Log\".""" - protocol: Optional[Union[str, "_models.LocalDNSProtocol"]] = rest_field( - visibility=["read", "create", "update", "delete", "query"] - ) - """Enforce TCP or prefer UDP protocol for connections from localDNS to upstream DNS server. Known - values are: \"PreferUDP\" and \"ForceTCP\".""" - forward_destination: Optional[Union[str, "_models.LocalDNSForwardDestination"]] = rest_field( - name="forwardDestination", visibility=["read", "create", "update", "delete", "query"] - ) - """Destination server for DNS queries to be forwarded from localDNS. Known values are: - \"ClusterCoreDNS\" and \"VnetDNS\".""" - forward_policy: Optional[Union[str, "_models.LocalDNSForwardPolicy"]] = rest_field( - name="forwardPolicy", visibility=["read", "create", "update", "delete", "query"] - ) - """Forward policy for selecting upstream DNS server. See `forward plugin - `_ for more information. Known values are: \"Sequential\", - \"RoundRobin\", and \"Random\".""" - max_concurrent: Optional[int] = rest_field( - name="maxConcurrent", visibility=["read", "create", "update", "delete", "query"] - ) - """Maximum number of concurrent queries. See `forward plugin - `_ for more information.""" - cache_duration_in_seconds: Optional[int] = rest_field( - name="cacheDurationInSeconds", visibility=["read", "create", "update", "delete", "query"] - ) - """Cache max TTL in seconds. See `cache plugin `_ for more - information.""" - serve_stale_duration_in_seconds: Optional[int] = rest_field( - name="serveStaleDurationInSeconds", visibility=["read", "create", "update", "delete", "query"] - ) - """Serve stale duration in seconds. See `cache plugin `_ for - more information.""" - serve_stale: Optional[Union[str, "_models.LocalDNSServeStale"]] = rest_field( - name="serveStale", visibility=["read", "create", "update", "delete", "query"] - ) - """Policy for serving stale data. See `cache plugin `_ for more - information. Known values are: \"Verify\", \"Immediate\", and \"Disable\".""" - - @overload - def __init__( - self, - *, - query_logging: Optional[Union[str, "_models.LocalDNSQueryLogging"]] = None, - protocol: Optional[Union[str, "_models.LocalDNSProtocol"]] = None, - forward_destination: Optional[Union[str, "_models.LocalDNSForwardDestination"]] = None, - forward_policy: Optional[Union[str, "_models.LocalDNSForwardPolicy"]] = None, - max_concurrent: Optional[int] = None, - cache_duration_in_seconds: Optional[int] = None, - serve_stale_duration_in_seconds: Optional[int] = None, - serve_stale: Optional[Union[str, "_models.LocalDNSServeStale"]] = None, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - - -class LocalDNSProfile(_Model): - """Configures the per-node local DNS, with VnetDNS and KubeDNS overrides. LocalDNS helps improve - performance and reliability of DNS resolution in an AKS cluster. For more details see - aka.ms/aks/localdns. - - :ivar mode: Mode of enablement for localDNS. Known values are: "Preferred", "Required", and - "Disabled". - :vartype mode: str or ~azure.mgmt.containerservice.models.LocalDNSMode - :ivar state: System-generated state of localDNS. Known values are: "Enabled" and "Disabled". - :vartype state: str or ~azure.mgmt.containerservice.models.LocalDNSState - :ivar vnet_dns_overrides: VnetDNS overrides apply to DNS traffic from pods with - dnsPolicy:default or kubelet (referred to as VnetDNS traffic). - :vartype vnet_dns_overrides: dict[str, ~azure.mgmt.containerservice.models.LocalDNSOverride] - :ivar kube_dns_overrides: KubeDNS overrides apply to DNS traffic from pods with - dnsPolicy:ClusterFirst (referred to as KubeDNS traffic). - :vartype kube_dns_overrides: dict[str, ~azure.mgmt.containerservice.models.LocalDNSOverride] - """ - - mode: Optional[Union[str, "_models.LocalDNSMode"]] = rest_field( - visibility=["read", "create", "update", "delete", "query"] - ) - """Mode of enablement for localDNS. Known values are: \"Preferred\", \"Required\", and - \"Disabled\".""" - state: Optional[Union[str, "_models.LocalDNSState"]] = rest_field(visibility=["read"]) - """System-generated state of localDNS. Known values are: \"Enabled\" and \"Disabled\".""" - vnet_dns_overrides: Optional[dict[str, "_models.LocalDNSOverride"]] = rest_field( - name="vnetDNSOverrides", visibility=["read", "create", "update", "delete", "query"] - ) - """VnetDNS overrides apply to DNS traffic from pods with dnsPolicy:default or kubelet (referred to - as VnetDNS traffic).""" - kube_dns_overrides: Optional[dict[str, "_models.LocalDNSOverride"]] = rest_field( - name="kubeDNSOverrides", visibility=["read", "create", "update", "delete", "query"] - ) - """KubeDNS overrides apply to DNS traffic from pods with dnsPolicy:ClusterFirst (referred to as - KubeDNS traffic).""" - - @overload - def __init__( - self, - *, - mode: Optional[Union[str, "_models.LocalDNSMode"]] = None, - vnet_dns_overrides: Optional[dict[str, "_models.LocalDNSOverride"]] = None, - kube_dns_overrides: Optional[dict[str, "_models.LocalDNSOverride"]] = None, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - - -class Machine(ProxyResource): - """A machine. Contains details about the underlying virtual machine. A machine may be visible here - but not in kubectl get nodes; if so it may be because the machine has not been registered with - the Kubernetes API Server yet. - - :ivar id: Fully qualified resource ID for the resource. Ex - - /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}. - :vartype id: str - :ivar name: The name of the resource. - :vartype name: str - :ivar type: The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or - "Microsoft.Storage/storageAccounts". - :vartype type: str - :ivar system_data: Azure Resource Manager metadata containing createdBy and modifiedBy - information. - :vartype system_data: ~azure.mgmt.containerservice.models.SystemData - :ivar properties: The properties of the machine. - :vartype properties: ~azure.mgmt.containerservice.models.MachineProperties - :ivar zones: The Availability zone in which machine is located. - :vartype zones: list[str] - """ - - properties: Optional["_models.MachineProperties"] = rest_field( - visibility=["read", "create", "update", "delete", "query"] - ) - """The properties of the machine.""" - zones: Optional[list[str]] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The Availability zone in which machine is located.""" - - @overload - def __init__( - self, - *, - properties: Optional["_models.MachineProperties"] = None, - zones: Optional[list[str]] = None, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - - -class MachineBillingProfile(_Model): - """The properties having to do with machine billing. - - :ivar spot_max_price: The max price (in US Dollars) you are willing to pay for spot instances. - Possible values are any decimal value greater than zero or -1 which indicates default price to - be up-to on-demand. For more details on spot pricing, see `spot VMs pricing - `_. - :vartype spot_max_price: float - """ - - spot_max_price: Optional[float] = rest_field( - name="spotMaxPrice", visibility=["read", "create", "update", "delete", "query"] - ) - """The max price (in US Dollars) you are willing to pay for spot instances. Possible values are - any decimal value greater than zero or -1 which indicates default price to be up-to on-demand. - For more details on spot pricing, see `spot VMs pricing - `_.""" - - @overload - def __init__( - self, - *, - spot_max_price: Optional[float] = None, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - - -class MachineHardwareProfile(_Model): - """The hardware and GPU settings of the machine. - - :ivar vm_size: The size of the VM. VM size availability varies by region. If a node contains - insufficient compute resources (memory, cpu, etc) pods might fail to run correctly. For more - details on restricted VM sizes, see: `https://docs.microsoft.com/azure/aks/quotas-skus-regions - `_. - :vartype vm_size: str - :ivar gpu_instance_profile: GPUInstanceProfile to be used to specify GPU MIG instance profile - for supported GPU VM SKU. Known values are: "MIG1g", "MIG2g", "MIG3g", "MIG4g", and "MIG7g". - :vartype gpu_instance_profile: str or ~azure.mgmt.containerservice.models.GPUInstanceProfile - :ivar gpu_profile: The GPU settings of the machine. - :vartype gpu_profile: ~azure.mgmt.containerservice.models.GPUProfile - :ivar ultra_ssd_enabled: Whether to enable UltraSSD. - :vartype ultra_ssd_enabled: bool - """ - - vm_size: Optional[str] = rest_field(name="vmSize", visibility=["read", "create", "update", "delete", "query"]) - """The size of the VM. VM size availability varies by region. If a node contains insufficient - compute resources (memory, cpu, etc) pods might fail to run correctly. For more details on - restricted VM sizes, see: `https://docs.microsoft.com/azure/aks/quotas-skus-regions - `_.""" - gpu_instance_profile: Optional[Union[str, "_models.GPUInstanceProfile"]] = rest_field( - name="gpuInstanceProfile", visibility=["read", "create", "update", "delete", "query"] - ) - """GPUInstanceProfile to be used to specify GPU MIG instance profile for supported GPU VM SKU. - Known values are: \"MIG1g\", \"MIG2g\", \"MIG3g\", \"MIG4g\", and \"MIG7g\".""" - gpu_profile: Optional["_models.GPUProfile"] = rest_field( - name="gpuProfile", visibility=["read", "create", "update", "delete", "query"] - ) - """The GPU settings of the machine.""" - ultra_ssd_enabled: Optional[bool] = rest_field( - name="ultraSsdEnabled", visibility=["read", "create", "update", "delete", "query"] - ) - """Whether to enable UltraSSD.""" - - @overload - def __init__( - self, - *, - vm_size: Optional[str] = None, - gpu_instance_profile: Optional[Union[str, "_models.GPUInstanceProfile"]] = None, - gpu_profile: Optional["_models.GPUProfile"] = None, - ultra_ssd_enabled: Optional[bool] = None, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - - -class MachineIpAddress(_Model): - """The machine IP address details. - - :ivar family: To determine if address belongs IPv4 or IPv6 family. Known values are: "IPv4" and - "IPv6". - :vartype family: str or ~azure.mgmt.containerservice.models.IPFamily - :ivar ip: IPv4 or IPv6 address of the machine. - :vartype ip: str - """ - - family: Optional[Union[str, "_models.IPFamily"]] = rest_field(visibility=["read"]) - """To determine if address belongs IPv4 or IPv6 family. Known values are: \"IPv4\" and \"IPv6\".""" - ip: Optional[str] = rest_field(visibility=["read"]) - """IPv4 or IPv6 address of the machine.""" - - -class MachineKubernetesProfile(_Model): - """The Kubernetes configurations used by the machine. - - :ivar node_labels: The node labels on the machine. - :vartype node_labels: dict[str, str] - :ivar orchestrator_version: The version of Kubernetes specified by the user. Both patch version - and are supported. When is specified, the - latest supported patch version is chosen automatically. - :vartype orchestrator_version: str - :ivar current_orchestrator_version: The version of Kubernetes running on the machine. If - orchestratorVersion was a fully specified version , this field will be - exactly equal to it. If orchestratorVersion was , this field will contain the full - version being used. - :vartype current_orchestrator_version: str - :ivar kubelet_disk_type: Determines the placement of emptyDir volumes, container runtime data - root, and Kubelet ephemeral storage. Known values are: "OS" and "Temporary". - :vartype kubelet_disk_type: str or ~azure.mgmt.containerservice.models.KubeletDiskType - :ivar kubelet_config: The Kubelet configuration on the machine. - :vartype kubelet_config: ~azure.mgmt.containerservice.models.KubeletConfig - :ivar node_initialization_taints: Taints added on the node during creation that will not be - reconciled by AKS. These taints will not be reconciled by AKS and can be removed with a kubectl - call. These taints allow for required configuration to run before the node is ready to accept - workloads, for example 'key1=value1:NoSchedule' that then can be removed with ``kubectl taint - nodes node1 key1=value1:NoSchedule-``. - :vartype node_initialization_taints: list[str] - :ivar node_taints: The taints added to new node during machine create. For example, - key=value:NoSchedule. - :vartype node_taints: list[str] - :ivar max_pods: The maximum number of pods that can run on a node. - :vartype max_pods: int - :ivar node_name: The node name in the Kubernetes cluster. - :vartype node_name: str - :ivar workload_runtime: Determines the type of workload a node can run. Known values are: - "OCIContainer", "WasmWasi", "KataMshvVmIsolation", and "KataVmIsolation". - :vartype workload_runtime: str or ~azure.mgmt.containerservice.models.WorkloadRuntime - :ivar artifact_streaming_profile: Configuration for using artifact streaming on AKS. - :vartype artifact_streaming_profile: - ~azure.mgmt.containerservice.models.AgentPoolArtifactStreamingProfile - """ - - node_labels: Optional[dict[str, str]] = rest_field( - name="nodeLabels", visibility=["read", "create", "update", "delete", "query"] - ) - """The node labels on the machine.""" - orchestrator_version: Optional[str] = rest_field( - name="orchestratorVersion", visibility=["read", "create", "update", "delete", "query"] - ) - """The version of Kubernetes specified by the user. Both patch version and - are supported. When is specified, the latest supported patch - version is chosen automatically.""" - current_orchestrator_version: Optional[str] = rest_field(name="currentOrchestratorVersion", visibility=["read"]) - """The version of Kubernetes running on the machine. If orchestratorVersion was a fully specified - version , this field will be exactly equal to it. If orchestratorVersion was - , this field will contain the full version being used.""" - kubelet_disk_type: Optional[Union[str, "_models.KubeletDiskType"]] = rest_field( - name="kubeletDiskType", visibility=["read", "create", "update", "delete", "query"] - ) - """Determines the placement of emptyDir volumes, container runtime data root, and Kubelet - ephemeral storage. Known values are: \"OS\" and \"Temporary\".""" - kubelet_config: Optional["_models.KubeletConfig"] = rest_field( - name="kubeletConfig", visibility=["read", "create", "update", "delete", "query"] - ) - """The Kubelet configuration on the machine.""" - node_initialization_taints: Optional[list[str]] = rest_field( - name="nodeInitializationTaints", visibility=["read", "create", "update", "delete", "query"] - ) - """Taints added on the node during creation that will not be reconciled by AKS. These taints will - not be reconciled by AKS and can be removed with a kubectl call. These taints allow for - required configuration to run before the node is ready to accept workloads, for example - 'key1=value1:NoSchedule' that then can be removed with ``kubectl taint nodes node1 - key1=value1:NoSchedule-``.""" - node_taints: Optional[list[str]] = rest_field( - name="nodeTaints", visibility=["read", "create", "update", "delete", "query"] - ) - """The taints added to new node during machine create. For example, key=value:NoSchedule.""" - max_pods: Optional[int] = rest_field(name="maxPods", visibility=["read", "create", "update", "delete", "query"]) - """The maximum number of pods that can run on a node.""" - node_name: Optional[str] = rest_field(name="nodeName", visibility=["read"]) - """The node name in the Kubernetes cluster.""" - workload_runtime: Optional[Union[str, "_models.WorkloadRuntime"]] = rest_field( - name="workloadRuntime", visibility=["read", "create", "update", "delete", "query"] - ) - """Determines the type of workload a node can run. Known values are: \"OCIContainer\", - \"WasmWasi\", \"KataMshvVmIsolation\", and \"KataVmIsolation\".""" - artifact_streaming_profile: Optional["_models.AgentPoolArtifactStreamingProfile"] = rest_field( - name="artifactStreamingProfile", visibility=["read", "create", "update", "delete", "query"] - ) - """Configuration for using artifact streaming on AKS.""" - - @overload - def __init__( - self, - *, - node_labels: Optional[dict[str, str]] = None, - orchestrator_version: Optional[str] = None, - kubelet_disk_type: Optional[Union[str, "_models.KubeletDiskType"]] = None, - kubelet_config: Optional["_models.KubeletConfig"] = None, - node_initialization_taints: Optional[list[str]] = None, - node_taints: Optional[list[str]] = None, - max_pods: Optional[int] = None, - workload_runtime: Optional[Union[str, "_models.WorkloadRuntime"]] = None, - artifact_streaming_profile: Optional["_models.AgentPoolArtifactStreamingProfile"] = None, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - - -class MachineNetworkProperties(_Model): - """network properties of the machine. - - :ivar ip_addresses: IPv4, IPv6 addresses of the machine. - :vartype ip_addresses: list[~azure.mgmt.containerservice.models.MachineIpAddress] - :ivar vnet_subnet_id: The ID of the subnet which node and optionally pods will join on startup. - If this is not specified, a VNET and subnet will be generated and used. If no podSubnetID is - specified, this applies to nodes and pods, otherwise it applies to just nodes. This is of the - form: - /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworks/{virtualNetworkName}/subnets/{subnetName}. - :vartype vnet_subnet_id: str - :ivar pod_subnet_id: The ID of the subnet which pods will join when launched. If omitted, pod - IPs are statically assigned on the node subnet (see vnetSubnetID for more details). This is of - the form: - /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworks/{virtualNetworkName}/subnets/{subnetName}. - :vartype pod_subnet_id: str - :ivar enable_node_public_ip: Whether the machine is allocated its own public IP. Some scenarios - may require the machine to receive their own dedicated public IP addresses. A common scenario - is for gaming workloads, where a console needs to make a direct connection to a cloud virtual - machine to minimize hops. The default is false. - :vartype enable_node_public_ip: bool - :ivar node_public_ip_prefix_id: The public IP prefix ID which VM node should use IPs from. This - is of the form: - /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/publicIPPrefixes/{publicIPPrefixName}. - :vartype node_public_ip_prefix_id: str - :ivar node_public_ip_tags: IPTags of instance-level public IPs. - :vartype node_public_ip_tags: list[~azure.mgmt.containerservice.models.IPTag] - """ - - ip_addresses: Optional[list["_models.MachineIpAddress"]] = rest_field(name="ipAddresses", visibility=["read"]) - """IPv4, IPv6 addresses of the machine.""" - vnet_subnet_id: Optional[str] = rest_field( - name="vnetSubnetID", visibility=["read", "create", "update", "delete", "query"] - ) - """The ID of the subnet which node and optionally pods will join on startup. If this is not - specified, a VNET and subnet will be generated and used. If no podSubnetID is specified, this - applies to nodes and pods, otherwise it applies to just nodes. This is of the form: - /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworks/{virtualNetworkName}/subnets/{subnetName}.""" - pod_subnet_id: Optional[str] = rest_field( - name="podSubnetID", visibility=["read", "create", "update", "delete", "query"] - ) - """The ID of the subnet which pods will join when launched. If omitted, pod IPs are statically - assigned on the node subnet (see vnetSubnetID for more details). This is of the form: - /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworks/{virtualNetworkName}/subnets/{subnetName}.""" - enable_node_public_ip: Optional[bool] = rest_field( - name="enableNodePublicIP", visibility=["read", "create", "update", "delete", "query"] - ) - """Whether the machine is allocated its own public IP. Some scenarios may require the machine to - receive their own dedicated public IP addresses. A common scenario is for gaming workloads, - where a console needs to make a direct connection to a cloud virtual machine to minimize hops. - The default is false.""" - node_public_ip_prefix_id: Optional[str] = rest_field( - name="nodePublicIPPrefixID", visibility=["read", "create", "update", "delete", "query"] - ) - """The public IP prefix ID which VM node should use IPs from. This is of the form: - /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/publicIPPrefixes/{publicIPPrefixName}.""" - node_public_ip_tags: Optional[list["_models.IPTag"]] = rest_field( - name="nodePublicIPTags", visibility=["read", "create", "update", "delete", "query"] - ) - """IPTags of instance-level public IPs.""" - - @overload - def __init__( - self, - *, - vnet_subnet_id: Optional[str] = None, - pod_subnet_id: Optional[str] = None, - enable_node_public_ip: Optional[bool] = None, - node_public_ip_prefix_id: Optional[str] = None, - node_public_ip_tags: Optional[list["_models.IPTag"]] = None, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - - -class MachineOSProfile(_Model): - """The operating system and disk used by the machine. - - :ivar os_type: The operating system type. The default is Linux. Known values are: "Linux" and - "Windows". - :vartype os_type: str or ~azure.mgmt.containerservice.models.OSType - :ivar os_sku: Specifies the OS SKU used by the agent pool. If not specified, the default is - Ubuntu if OSType=Linux or Windows2019 if OSType=Windows. And the default Windows OSSKU will be - changed to Windows2022 after Windows2019 is deprecated. Known values are: "Ubuntu", - "AzureLinux", "AzureLinux3", "Mariner", "Flatcar", "CBLMariner", "Windows2019", "Windows2022", - "Ubuntu2204", "Windows2025", "WindowsAnnual", "Ubuntu2404", and "AzureContainerLinux". - :vartype os_sku: str or ~azure.mgmt.containerservice.models.OSSKU - :ivar os_disk_size_gb: OS Disk Size in GB to be used to specify the disk size for every machine - in the master/agent pool. If you specify 0, it will apply the default osDisk size according to - the vmSize specified. - :vartype os_disk_size_gb: int - :ivar os_disk_type: The OS disk type to be used for machines in the agent pool. The default is - 'Ephemeral' if the VM supports it and has a cache disk larger than the requested OSDiskSizeGB. - Otherwise, defaults to 'Managed'. May not be changed after creation. For more information see - `Ephemeral OS `_. - Known values are: "Managed" and "Ephemeral". - :vartype os_disk_type: str or ~azure.mgmt.containerservice.models.OSDiskType - :ivar enable_fips: Whether to use a FIPS-enabled OS. - :vartype enable_fips: bool - :ivar linux_profile: The Linux machine's specific profile. - :vartype linux_profile: ~azure.mgmt.containerservice.models.MachineOSProfileLinuxProfile - :ivar windows_profile: The Windows machine's specific profile. - :vartype windows_profile: ~azure.mgmt.containerservice.models.AgentPoolWindowsProfile - """ - - os_type: Optional[Union[str, "_models.OSType"]] = rest_field( - name="osType", visibility=["read", "create", "update", "delete", "query"] - ) - """The operating system type. The default is Linux. Known values are: \"Linux\" and \"Windows\".""" - os_sku: Optional[Union[str, "_models.OSSKU"]] = rest_field( - name="osSKU", visibility=["read", "create", "update", "delete", "query"] - ) - """Specifies the OS SKU used by the agent pool. If not specified, the default is Ubuntu if - OSType=Linux or Windows2019 if OSType=Windows. And the default Windows OSSKU will be changed to - Windows2022 after Windows2019 is deprecated. Known values are: \"Ubuntu\", \"AzureLinux\", - \"AzureLinux3\", \"Mariner\", \"Flatcar\", \"CBLMariner\", \"Windows2019\", \"Windows2022\", - \"Ubuntu2204\", \"Windows2025\", \"WindowsAnnual\", \"Ubuntu2404\", and - \"AzureContainerLinux\".""" - os_disk_size_gb: Optional[int] = rest_field( - name="osDiskSizeGB", visibility=["read", "create", "update", "delete", "query"] - ) - """OS Disk Size in GB to be used to specify the disk size for every machine in the master/agent - pool. If you specify 0, it will apply the default osDisk size according to the vmSize - specified.""" - os_disk_type: Optional[Union[str, "_models.OSDiskType"]] = rest_field( - name="osDiskType", visibility=["read", "create", "update", "delete", "query"] - ) - """The OS disk type to be used for machines in the agent pool. The default is 'Ephemeral' if the - VM supports it and has a cache disk larger than the requested OSDiskSizeGB. Otherwise, defaults - to 'Managed'. May not be changed after creation. For more information see `Ephemeral OS - `_. Known values are: - \"Managed\" and \"Ephemeral\".""" - enable_fips: Optional[bool] = rest_field( - name="enableFIPS", visibility=["read", "create", "update", "delete", "query"] - ) - """Whether to use a FIPS-enabled OS.""" - linux_profile: Optional["_models.MachineOSProfileLinuxProfile"] = rest_field( - name="linuxProfile", visibility=["read", "create", "update", "delete", "query"] - ) - """The Linux machine's specific profile.""" - windows_profile: Optional["_models.AgentPoolWindowsProfile"] = rest_field( - name="windowsProfile", visibility=["read", "create", "update", "delete", "query"] - ) - """The Windows machine's specific profile.""" - - @overload - def __init__( - self, - *, - os_type: Optional[Union[str, "_models.OSType"]] = None, - os_sku: Optional[Union[str, "_models.OSSKU"]] = None, - os_disk_size_gb: Optional[int] = None, - os_disk_type: Optional[Union[str, "_models.OSDiskType"]] = None, - enable_fips: Optional[bool] = None, - linux_profile: Optional["_models.MachineOSProfileLinuxProfile"] = None, - windows_profile: Optional["_models.AgentPoolWindowsProfile"] = None, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - - -class MachineOSProfileLinuxProfile(_Model): - """The Linux machine's specific profile. - - :ivar linux_os_config: The OS configuration of Linux machine. - :vartype linux_os_config: ~azure.mgmt.containerservice.models.LinuxOSConfig - :ivar message_of_the_day: Message of the day for Linux nodes, base64-encoded. A base64-encoded - string which will be written to /etc/motd after decoding. This allows customization of the - message of the day for Linux nodes. It must not be specified for Windows nodes. It must be a - static string (i.e., will be printed raw and not be executed as a script). - :vartype message_of_the_day: str - """ - - linux_os_config: Optional["_models.LinuxOSConfig"] = rest_field( - name="linuxOSConfig", visibility=["read", "create", "update", "delete", "query"] - ) - """The OS configuration of Linux machine.""" - message_of_the_day: Optional[str] = rest_field( - name="messageOfTheDay", visibility=["read", "create", "update", "delete", "query"] - ) - """Message of the day for Linux nodes, base64-encoded. A base64-encoded string which will be - written to /etc/motd after decoding. This allows customization of the message of the day for - Linux nodes. It must not be specified for Windows nodes. It must be a static string (i.e., will - be printed raw and not be executed as a script).""" - - @overload - def __init__( - self, - *, - linux_os_config: Optional["_models.LinuxOSConfig"] = None, - message_of_the_day: Optional[str] = None, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - - -class MachineProperties(_Model): - """The properties of the machine. - - :ivar network: network properties of the machine. - :vartype network: ~azure.mgmt.containerservice.models.MachineNetworkProperties - :ivar resource_id: Azure resource id of the machine. It can be used to GET underlying VM - Instance. - :vartype resource_id: str - :ivar hardware: The hardware and GPU settings of the machine. - :vartype hardware: ~azure.mgmt.containerservice.models.MachineHardwareProfile - :ivar operating_system: The operating system and disk used by the machine. - :vartype operating_system: ~azure.mgmt.containerservice.models.MachineOSProfile - :ivar kubernetes: The Kubernetes configurations used by the machine. - :vartype kubernetes: ~azure.mgmt.containerservice.models.MachineKubernetesProfile - :ivar mode: Machine only allows 'System' and 'User' mode. Known values are: "System", "User", - "Gateway", "ManagedSystem", and "Machines". - :vartype mode: str or ~azure.mgmt.containerservice.models.AgentPoolMode - :ivar security: The security settings of the machine. - :vartype security: ~azure.mgmt.containerservice.models.MachineSecurityProfile - :ivar priority: The priority for the machine. If not specified, the default is 'Regular'. Known - values are: "Spot" and "Regular". - :vartype priority: str or ~azure.mgmt.containerservice.models.ScaleSetPriority - :ivar eviction_policy: The eviction policy for machine. This cannot be specified unless the - priority is 'Spot'. If not specified, the default is 'Delete'. Known values are: "Delete" and - "Deallocate". - :vartype eviction_policy: str or ~azure.mgmt.containerservice.models.ScaleSetEvictionPolicy - :ivar billing: The properties having to do with machine billing. - :vartype billing: ~azure.mgmt.containerservice.models.MachineBillingProfile - :ivar node_image_version: The version of node image. - :vartype node_image_version: str - :ivar provisioning_state: The current deployment or provisioning state. - :vartype provisioning_state: str - :ivar tags: The tags to be persisted on the machine. - :vartype tags: dict[str, str] - :ivar e_tag: Unique read-only string used to implement optimistic concurrency. The eTag value - will change when the resource is updated. Specify an if-match or if-none-match header with the - eTag value for a subsequent request to enable optimistic concurrency per the normal eTag - convention. - :vartype e_tag: str - :ivar status: Contains read-only information about the machine. - :vartype status: ~azure.mgmt.containerservice.models.MachineStatus - :ivar local_dns_profile: Configures the per-node local DNS, with VnetDNS and KubeDNS overrides. - LocalDNS helps improve performance and reliability of DNS resolution in an AKS cluster. For - more details see aka.ms/aks/localdns. - :vartype local_dns_profile: ~azure.mgmt.containerservice.models.LocalDNSProfile - """ - - network: Optional["_models.MachineNetworkProperties"] = rest_field( - visibility=["read", "create", "update", "delete", "query"] - ) - """network properties of the machine.""" - resource_id: Optional[str] = rest_field(name="resourceId", visibility=["read"]) - """Azure resource id of the machine. It can be used to GET underlying VM Instance.""" - hardware: Optional["_models.MachineHardwareProfile"] = rest_field( - visibility=["read", "create", "update", "delete", "query"] - ) - """The hardware and GPU settings of the machine.""" - operating_system: Optional["_models.MachineOSProfile"] = rest_field( - name="operatingSystem", visibility=["read", "create", "update", "delete", "query"] - ) - """The operating system and disk used by the machine.""" - kubernetes: Optional["_models.MachineKubernetesProfile"] = rest_field( - visibility=["read", "create", "update", "delete", "query"] - ) - """The Kubernetes configurations used by the machine.""" - mode: Optional[Union[str, "_models.AgentPoolMode"]] = rest_field( - visibility=["read", "create", "update", "delete", "query"] - ) - """Machine only allows 'System' and 'User' mode. Known values are: \"System\", \"User\", - \"Gateway\", \"ManagedSystem\", and \"Machines\".""" - security: Optional["_models.MachineSecurityProfile"] = rest_field( - visibility=["read", "create", "update", "delete", "query"] - ) - """The security settings of the machine.""" - priority: Optional[Union[str, "_models.ScaleSetPriority"]] = rest_field( - visibility=["read", "create", "update", "delete", "query"] - ) - """The priority for the machine. If not specified, the default is 'Regular'. Known values are: - \"Spot\" and \"Regular\".""" - eviction_policy: Optional[Union[str, "_models.ScaleSetEvictionPolicy"]] = rest_field( - name="evictionPolicy", visibility=["read", "create", "update", "delete", "query"] - ) - """The eviction policy for machine. This cannot be specified unless the priority is 'Spot'. If not - specified, the default is 'Delete'. Known values are: \"Delete\" and \"Deallocate\".""" - billing: Optional["_models.MachineBillingProfile"] = rest_field( - visibility=["read", "create", "update", "delete", "query"] - ) - """The properties having to do with machine billing.""" - node_image_version: Optional[str] = rest_field(name="nodeImageVersion", visibility=["read"]) - """The version of node image.""" - provisioning_state: Optional[str] = rest_field(name="provisioningState", visibility=["read"]) - """The current deployment or provisioning state.""" - tags: Optional[dict[str, str]] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The tags to be persisted on the machine.""" - e_tag: Optional[str] = rest_field(name="eTag", visibility=["read"]) - """Unique read-only string used to implement optimistic concurrency. The eTag value will change - when the resource is updated. Specify an if-match or if-none-match header with the eTag value - for a subsequent request to enable optimistic concurrency per the normal eTag convention.""" - status: Optional["_models.MachineStatus"] = rest_field(visibility=["read"]) - """Contains read-only information about the machine.""" - local_dns_profile: Optional["_models.LocalDNSProfile"] = rest_field( - name="localDNSProfile", visibility=["read", "create", "update", "delete", "query"] - ) - """Configures the per-node local DNS, with VnetDNS and KubeDNS overrides. LocalDNS helps improve - performance and reliability of DNS resolution in an AKS cluster. For more details see - aka.ms/aks/localdns.""" + """KubeDNS overrides apply to DNS traffic from pods with dnsPolicy:ClusterFirst (referred to as + KubeDNS traffic).""" @overload def __init__( self, *, - network: Optional["_models.MachineNetworkProperties"] = None, - hardware: Optional["_models.MachineHardwareProfile"] = None, - operating_system: Optional["_models.MachineOSProfile"] = None, - kubernetes: Optional["_models.MachineKubernetesProfile"] = None, - mode: Optional[Union[str, "_models.AgentPoolMode"]] = None, - security: Optional["_models.MachineSecurityProfile"] = None, - priority: Optional[Union[str, "_models.ScaleSetPriority"]] = None, - eviction_policy: Optional[Union[str, "_models.ScaleSetEvictionPolicy"]] = None, - billing: Optional["_models.MachineBillingProfile"] = None, - tags: Optional[dict[str, str]] = None, - local_dns_profile: Optional["_models.LocalDNSProfile"] = None, + mode: Optional[Union[str, "_models.LocalDNSMode"]] = None, + vnet_dns_overrides: Optional[dict[str, "_models.LocalDNSOverride"]] = None, + kube_dns_overrides: Optional[dict[str, "_models.LocalDNSOverride"]] = None, ) -> None: ... @overload @@ -5465,60 +3494,40 @@ def __init__(self, *args: Any, **kwargs: Any) -> None: super().__init__(*args, **kwargs) -class MachineSecurityProfile(_Model): - """The security settings of the machine. +class Machine(ProxyResource): + """A machine. Contains details about the underlying virtual machine. A machine may be visible here + but not in kubectl get nodes; if so it may be because the machine has not been registered with + the Kubernetes API Server yet. - :ivar enable_vtpm: vTPM is a Trusted Launch feature for configuring a dedicated secure vault - for keys and measurements held locally on the node. For more details, see - aka.ms/aks/trustedlaunch. If not specified, the default is false. - :vartype enable_vtpm: bool - :ivar enable_secure_boot: Secure Boot is a feature of Trusted Launch which ensures that only - signed operating systems and drivers can boot. For more details, see aka.ms/aks/trustedlaunch. - If not specified, the default is false. - :vartype enable_secure_boot: bool - :ivar ssh_access: SSH access method of an agent pool. Known values are: "LocalUser", - "Disabled", and "EntraId". - :vartype ssh_access: str or ~azure.mgmt.containerservice.models.AgentPoolSSHAccess - :ivar enable_encryption_at_host: Whether to enable host based OS and data drive encryption. - This is only supported on certain VM sizes and in certain Azure regions. For more information, - see: `https://docs.microsoft.com/azure/aks/enable-host-encryption - `_. - :vartype enable_encryption_at_host: bool + :ivar id: Fully qualified resource ID for the resource. Ex - + /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}. + :vartype id: str + :ivar name: The name of the resource. + :vartype name: str + :ivar type: The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or + "Microsoft.Storage/storageAccounts". + :vartype type: str + :ivar system_data: Azure Resource Manager metadata containing createdBy and modifiedBy + information. + :vartype system_data: ~azure.mgmt.containerservice.models.SystemData + :ivar properties: The properties of the machine. + :vartype properties: ~azure.mgmt.containerservice.models.MachineProperties + :ivar zones: The Availability zone in which machine is located. + :vartype zones: list[str] """ - enable_vtpm: Optional[bool] = rest_field( - name="enableVTPM", visibility=["read", "create", "update", "delete", "query"] - ) - """vTPM is a Trusted Launch feature for configuring a dedicated secure vault for keys and - measurements held locally on the node. For more details, see aka.ms/aks/trustedlaunch. If not - specified, the default is false.""" - enable_secure_boot: Optional[bool] = rest_field( - name="enableSecureBoot", visibility=["read", "create", "update", "delete", "query"] - ) - """Secure Boot is a feature of Trusted Launch which ensures that only signed operating systems and - drivers can boot. For more details, see aka.ms/aks/trustedlaunch. If not specified, the - default is false.""" - ssh_access: Optional[Union[str, "_models.AgentPoolSSHAccess"]] = rest_field( - name="sshAccess", visibility=["read", "create", "update", "delete", "query"] - ) - """SSH access method of an agent pool. Known values are: \"LocalUser\", \"Disabled\", and - \"EntraId\".""" - enable_encryption_at_host: Optional[bool] = rest_field( - name="enableEncryptionAtHost", visibility=["read", "create", "update", "delete", "query"] + properties: Optional["_models.MachineProperties"] = rest_field( + visibility=["read", "create", "update", "delete", "query"] ) - """Whether to enable host based OS and data drive encryption. This is only supported on certain VM - sizes and in certain Azure regions. For more information, see: - `https://docs.microsoft.com/azure/aks/enable-host-encryption - `_.""" + """The properties of the machine.""" + zones: Optional[list[str]] = rest_field(visibility=["read"]) + """The Availability zone in which machine is located.""" @overload def __init__( self, *, - enable_vtpm: Optional[bool] = None, - enable_secure_boot: Optional[bool] = None, - ssh_access: Optional[Union[str, "_models.AgentPoolSSHAccess"]] = None, - enable_encryption_at_host: Optional[bool] = None, + properties: Optional["_models.MachineProperties"] = None, ) -> None: ... @overload @@ -5532,43 +3541,47 @@ def __init__(self, *args: Any, **kwargs: Any) -> None: super().__init__(*args, **kwargs) -class MachineStatus(_Model): - """Contains read-only information about the machine. +class MachineIpAddress(_Model): + """The machine IP address details. - :ivar provisioning_error: The error details information of the machine. Preserves the detailed - info of failure. If there was no error, this field is omitted. - :vartype provisioning_error: ~azure.mgmt.containerservice.models.ErrorDetail - :ivar creation_timestamp: Specifies the time at which the machine was created. - :vartype creation_timestamp: ~datetime.datetime - :ivar drift_action: The drift action of the machine. Indicates whether a machine has deviated - from its expected state due to changes in managed cluster properties, requiring corrective - action. Known values are: "Synced" and "Recreate". - :vartype drift_action: str or ~azure.mgmt.containerservice.models.DriftAction - :ivar drift_reason: Reason for machine drift. Provides detailed information on why the machine - has drifted. This field is omitted if the machine is up to date. - :vartype drift_reason: str - :ivar vm_state: Virtual machine state. Indicates the current state of the underlying virtual - machine. Known values are: "Running" and "Deleted". - :vartype vm_state: str or ~azure.mgmt.containerservice.models.VmState + :ivar family: To determine if address belongs IPv4 or IPv6 family. Known values are: "IPv4" and + "IPv6". + :vartype family: str or ~azure.mgmt.containerservice.models.IPFamily + :ivar ip: IPv4 or IPv6 address of the machine. + :vartype ip: str """ - provisioning_error: Optional["_models.ErrorDetail"] = rest_field(name="provisioningError", visibility=["read"]) - """The error details information of the machine. Preserves the detailed info of failure. If there - was no error, this field is omitted.""" - creation_timestamp: Optional[datetime.datetime] = rest_field( - name="creationTimestamp", visibility=["read"], format="rfc3339" - ) - """Specifies the time at which the machine was created.""" - drift_action: Optional[Union[str, "_models.DriftAction"]] = rest_field(name="driftAction", visibility=["read"]) - """The drift action of the machine. Indicates whether a machine has deviated from its expected - state due to changes in managed cluster properties, requiring corrective action. Known values - are: \"Synced\" and \"Recreate\".""" - drift_reason: Optional[str] = rest_field(name="driftReason", visibility=["read"]) - """Reason for machine drift. Provides detailed information on why the machine has drifted. This - field is omitted if the machine is up to date.""" - vm_state: Optional[Union[str, "_models.VmState"]] = rest_field(name="vmState", visibility=["read"]) - """Virtual machine state. Indicates the current state of the underlying virtual machine. Known - values are: \"Running\" and \"Deleted\".""" + family: Optional[Union[str, "_models.IPFamily"]] = rest_field(visibility=["read"]) + """To determine if address belongs IPv4 or IPv6 family. Known values are: \"IPv4\" and \"IPv6\".""" + ip: Optional[str] = rest_field(visibility=["read"]) + """IPv4 or IPv6 address of the machine.""" + + +class MachineNetworkProperties(_Model): + """network properties of the machine. + + :ivar ip_addresses: IPv4, IPv6 addresses of the machine. + :vartype ip_addresses: list[~azure.mgmt.containerservice.models.MachineIpAddress] + """ + + ip_addresses: Optional[list["_models.MachineIpAddress"]] = rest_field(name="ipAddresses", visibility=["read"]) + """IPv4, IPv6 addresses of the machine.""" + + +class MachineProperties(_Model): + """The properties of the machine. + + :ivar network: network properties of the machine. + :vartype network: ~azure.mgmt.containerservice.models.MachineNetworkProperties + :ivar resource_id: Azure resource id of the machine. It can be used to GET underlying VM + Instance. + :vartype resource_id: str + """ + + network: Optional["_models.MachineNetworkProperties"] = rest_field(visibility=["read"]) + """network properties of the machine.""" + resource_id: Optional[str] = rest_field(name="resourceId", visibility=["read"]) + """Azure resource id of the machine. It can be used to GET underlying VM Instance.""" class MaintenanceConfiguration(ProxyResource): @@ -5859,7 +3872,6 @@ class ManagedCluster(TrackedResource): __flattened_items = [ "provisioning_state", "power_state", - "creation_data", "max_agent_pools", "kubernetes_version", "current_kubernetes_version", @@ -5879,8 +3891,6 @@ class ManagedCluster(TrackedResource): "node_resource_group_profile", "enable_rbac", "support_plan", - "enable_fips", - "enable_namespace_resources", "network_profile", "aad_profile", "auto_upgrade_profile", @@ -5904,11 +3914,7 @@ class ManagedCluster(TrackedResource): "node_provisioning_profile", "bootstrap_profile", "ai_toolchain_operator_profile", - "scheduler_profile", "hosted_system_profile", - "health_monitor_profile", - "control_plane_scaling_profile", - "node_disruption_profile", "status", ] @@ -6239,7 +4245,7 @@ class ManagedClusterAgentPoolProfileProperties(_Model): root, and Kubelet ephemeral storage. Known values are: "OS" and "Temporary". :vartype kubelet_disk_type: str or ~azure.mgmt.containerservice.models.KubeletDiskType :ivar workload_runtime: Determines the type of workload a node can run. Known values are: - "OCIContainer", "WasmWasi", "KataMshvVmIsolation", and "KataVmIsolation". + "OCIContainer", "WasmWasi", and "KataVmIsolation". :vartype workload_runtime: str or ~azure.mgmt.containerservice.models.WorkloadRuntime :ivar message_of_the_day: Message of the day for Linux nodes, base64-encoded. A base64-encoded string which will be written to /etc/motd after decoding. This allows customization of the @@ -6268,9 +4274,9 @@ class ManagedClusterAgentPoolProfileProperties(_Model): :vartype os_type: str or ~azure.mgmt.containerservice.models.OSType :ivar os_sku: Specifies the OS SKU used by the agent pool. The default is Ubuntu if OSType is Linux. The default is Windows2019 when Kubernetes <= 1.24 or Windows2022 when Kubernetes >= - 1.25 if OSType is Windows. Known values are: "Ubuntu", "AzureLinux", "AzureLinux3", "Mariner", - "Flatcar", "CBLMariner", "Windows2019", "Windows2022", "Ubuntu2204", "Windows2025", - "WindowsAnnual", "Ubuntu2404", and "AzureContainerLinux". + 1.25 if OSType is Windows. Known values are: "Ubuntu", "AzureLinux", "AzureLinux3", + "CBLMariner", "Windows2019", "Windows2022", "Ubuntu2204", "Windows2025", "Ubuntu2404", and + "AzureContainerLinux". :vartype os_sku: str or ~azure.mgmt.containerservice.models.OSSKU :ivar max_count: The maximum number of nodes for auto-scaling. :vartype max_count: int @@ -6289,7 +4295,7 @@ class ManagedClusterAgentPoolProfileProperties(_Model): all times. For additional information on agent pool restrictions and best practices, see: `https://docs.microsoft.com/azure/aks/use-system-pools `_. Known values are: "System", "User", - "Gateway", "ManagedSystem", and "Machines". + and "Gateway". :vartype mode: str or ~azure.mgmt.containerservice.models.AgentPoolMode :ivar orchestrator_version: The version of Kubernetes specified by the user. Both patch version (e.g. 1.20.13) and (e.g. 1.20) are supported. When @@ -6307,21 +4313,11 @@ class ManagedClusterAgentPoolProfileProperties(_Model): exactly equal to it. If orchestratorVersion is , this field will contain the full version being used. :vartype current_orchestrator_version: str - :ivar node_image_version: The version of node image. + :ivar node_image_version: The version of the node image. Setting this value triggers an + agentPool rollback. Only values from ``recentlyUsedVersions`` are allowed. :vartype node_image_version: str - :ivar upgrade_strategy: Defines the upgrade strategy for the agent pool. The default is - Rolling. Known values are: "Rolling" and "BlueGreen". - :vartype upgrade_strategy: str or ~azure.mgmt.containerservice.models.UpgradeStrategy - :ivar enable_os_disk_full_caching: Whether to enable the full-cache ephemeral OS disk feature. - When this feature is enabled, the entire operating system will be locally cached on the - ephemeral OS disk, preventing E17 events caused by network failures. - :vartype enable_os_disk_full_caching: bool :ivar upgrade_settings: Settings for upgrading the agentpool. :vartype upgrade_settings: ~azure.mgmt.containerservice.models.AgentPoolUpgradeSettings - :ivar upgrade_settings_blue_green: Settings for Blue-Green upgrade on the agentpool. Applies - when upgrade strategy is set to BlueGreen. - :vartype upgrade_settings_blue_green: - ~azure.mgmt.containerservice.models.AgentPoolBlueGreenUpgradeSettings :ivar provisioning_state: The current deployment or provisioning state. :vartype provisioning_state: str :ivar power_state: Whether the Agent Pool is running or stopped. When an Agent Pool is first @@ -6366,14 +4362,6 @@ class ManagedClusterAgentPoolProfileProperties(_Model): :ivar node_taints: The taints added to new nodes during node pool create and scale. For example, key=value:NoSchedule. :vartype node_taints: list[str] - :ivar node_initialization_taints: Taints added on the nodes during creation that will not be - reconciled by AKS. These taints will not be reconciled by AKS and can be removed with a kubectl - call. This field can be modified after node pool is created, but nodes will not be recreated - with new taints until another operation that requires recreation (e.g. node image upgrade) - happens. These taints allow for required configuration to run before the node is ready to - accept workloads, for example 'key1=value1:NoSchedule' that then can be removed with ``kubectl - taint nodes node1 key1=value1:NoSchedule-``. - :vartype node_initialization_taints: list[str] :ivar proximity_placement_group_id: The ID for Proximity Placement Group. :vartype proximity_placement_group_id: str :ivar kubelet_config: The Kubelet configuration on the agent pool nodes. @@ -6437,10 +4425,6 @@ class ManagedClusterAgentPoolProfileProperties(_Model): LocalDNS helps improve performance and reliability of DNS resolution in an AKS cluster. For more details see aka.ms/aks/localdns. :vartype local_dns_profile: ~azure.mgmt.containerservice.models.LocalDNSProfile - :ivar prepared_image_specification_profile: Settings to determine the prepared image - specification used to provision nodes in a pool. - :vartype prepared_image_specification_profile: - ~azure.mgmt.containerservice.models.PreparedImageSpecificationProfile """ e_tag: Optional[str] = rest_field(name="eTag", visibility=["read"]) @@ -6479,7 +4463,7 @@ class ManagedClusterAgentPoolProfileProperties(_Model): name="workloadRuntime", visibility=["read", "create", "update", "delete", "query"] ) """Determines the type of workload a node can run. Known values are: \"OCIContainer\", - \"WasmWasi\", \"KataMshvVmIsolation\", and \"KataVmIsolation\".""" + \"WasmWasi\", and \"KataVmIsolation\".""" message_of_the_day: Optional[str] = rest_field( name="messageOfTheDay", visibility=["read", "create", "update", "delete", "query"] ) @@ -6517,9 +4501,9 @@ class ManagedClusterAgentPoolProfileProperties(_Model): ) """Specifies the OS SKU used by the agent pool. The default is Ubuntu if OSType is Linux. The default is Windows2019 when Kubernetes <= 1.24 or Windows2022 when Kubernetes >= 1.25 if OSType - is Windows. Known values are: \"Ubuntu\", \"AzureLinux\", \"AzureLinux3\", \"Mariner\", - \"Flatcar\", \"CBLMariner\", \"Windows2019\", \"Windows2022\", \"Ubuntu2204\", \"Windows2025\", - \"WindowsAnnual\", \"Ubuntu2404\", and \"AzureContainerLinux\".""" + is Windows. Known values are: \"Ubuntu\", \"AzureLinux\", \"AzureLinux3\", \"CBLMariner\", + \"Windows2019\", \"Windows2022\", \"Ubuntu2204\", \"Windows2025\", \"Ubuntu2404\", and + \"AzureContainerLinux\".""" max_count: Optional[int] = rest_field(name="maxCount", visibility=["read", "create", "update", "delete", "query"]) """The maximum number of nodes for auto-scaling.""" min_count: Optional[int] = rest_field(name="minCount", visibility=["read", "create", "update", "delete", "query"]) @@ -6546,7 +4530,7 @@ class ManagedClusterAgentPoolProfileProperties(_Model): For additional information on agent pool restrictions and best practices, see: `https://docs.microsoft.com/azure/aks/use-system-pools `_. Known values are: \"System\", - \"User\", \"Gateway\", \"ManagedSystem\", and \"Machines\".""" + \"User\", and \"Gateway\".""" orchestrator_version: Optional[str] = rest_field( name="orchestratorVersion", visibility=["read", "create", "update", "delete", "query"] ) @@ -6568,27 +4552,12 @@ class ManagedClusterAgentPoolProfileProperties(_Model): node_image_version: Optional[str] = rest_field( name="nodeImageVersion", visibility=["read", "create", "update", "delete", "query"] ) - """The version of node image.""" - upgrade_strategy: Optional[Union[str, "_models.UpgradeStrategy"]] = rest_field( - name="upgradeStrategy", visibility=["read", "create", "update", "delete", "query"] - ) - """Defines the upgrade strategy for the agent pool. The default is Rolling. Known values are: - \"Rolling\" and \"BlueGreen\".""" - enable_os_disk_full_caching: Optional[bool] = rest_field( - name="enableOSDiskFullCaching", visibility=["read", "create", "update", "delete", "query"] - ) - """Whether to enable the full-cache ephemeral OS disk feature. When this feature is enabled, the - entire operating system will be locally cached on the ephemeral OS disk, preventing E17 events - caused by network failures.""" + """The version of the node image. Setting this value triggers an agentPool rollback. Only values + from ``recentlyUsedVersions`` are allowed.""" upgrade_settings: Optional["_models.AgentPoolUpgradeSettings"] = rest_field( name="upgradeSettings", visibility=["read", "create", "update", "delete", "query"] ) """Settings for upgrading the agentpool.""" - upgrade_settings_blue_green: Optional["_models.AgentPoolBlueGreenUpgradeSettings"] = rest_field( - name="upgradeSettingsBlueGreen", visibility=["read", "create", "update", "delete", "query"] - ) - """Settings for Blue-Green upgrade on the agentpool. Applies when upgrade strategy is set to - BlueGreen.""" provisioning_state: Optional[str] = rest_field(name="provisioningState", visibility=["read"]) """The current deployment or provisioning state.""" power_state: Optional["_models.PowerState"] = rest_field( @@ -6647,16 +4616,6 @@ class ManagedClusterAgentPoolProfileProperties(_Model): ) """The taints added to new nodes during node pool create and scale. For example, key=value:NoSchedule.""" - node_initialization_taints: Optional[list[str]] = rest_field( - name="nodeInitializationTaints", visibility=["read", "create", "update", "delete", "query"] - ) - """Taints added on the nodes during creation that will not be reconciled by AKS. These taints will - not be reconciled by AKS and can be removed with a kubectl call. This field can be modified - after node pool is created, but nodes will not be recreated with new taints until another - operation that requires recreation (e.g. node image upgrade) happens. These taints allow for - required configuration to run before the node is ready to accept workloads, for example - 'key1=value1:NoSchedule' that then can be removed with ``kubectl taint nodes node1 - key1=value1:NoSchedule-``.""" proximity_placement_group_id: Optional[str] = rest_field( name="proximityPlacementGroupID", visibility=["read", "create", "update", "delete", "query"] ) @@ -6754,10 +4713,6 @@ class ManagedClusterAgentPoolProfileProperties(_Model): """Configures the per-node local DNS, with VnetDNS and KubeDNS overrides. LocalDNS helps improve performance and reliability of DNS resolution in an AKS cluster. For more details see aka.ms/aks/localdns.""" - prepared_image_specification_profile: Optional["_models.PreparedImageSpecificationProfile"] = rest_field( - name="preparedImageSpecificationProfile", visibility=["read", "create", "update", "delete", "query"] - ) - """Settings to determine the prepared image specification used to provision nodes in a pool.""" @overload def __init__( # pylint: disable=too-many-locals @@ -6784,10 +4739,7 @@ def __init__( # pylint: disable=too-many-locals mode: Optional[Union[str, "_models.AgentPoolMode"]] = None, orchestrator_version: Optional[str] = None, node_image_version: Optional[str] = None, - upgrade_strategy: Optional[Union[str, "_models.UpgradeStrategy"]] = None, - enable_os_disk_full_caching: Optional[bool] = None, upgrade_settings: Optional["_models.AgentPoolUpgradeSettings"] = None, - upgrade_settings_blue_green: Optional["_models.AgentPoolBlueGreenUpgradeSettings"] = None, power_state: Optional["_models.PowerState"] = None, availability_zones: Optional[list[str]] = None, enable_node_public_ip: Optional[bool] = None, @@ -6798,7 +4750,6 @@ def __init__( # pylint: disable=too-many-locals tags: Optional[dict[str, str]] = None, node_labels: Optional[dict[str, str]] = None, node_taints: Optional[list[str]] = None, - node_initialization_taints: Optional[list[str]] = None, proximity_placement_group_id: Optional[str] = None, kubelet_config: Optional["_models.KubeletConfig"] = None, linux_os_config: Optional["_models.LinuxOSConfig"] = None, @@ -6819,7 +4770,6 @@ def __init__( # pylint: disable=too-many-locals virtual_machine_nodes_status: Optional[list["_models.VirtualMachineNodes"]] = None, status: Optional["_models.AgentPoolStatus"] = None, local_dns_profile: Optional["_models.LocalDNSProfile"] = None, - prepared_image_specification_profile: Optional["_models.PreparedImageSpecificationProfile"] = None, ) -> None: ... @overload @@ -6865,7 +4815,7 @@ class ManagedClusterAgentPoolProfile(ManagedClusterAgentPoolProfileProperties): root, and Kubelet ephemeral storage. Known values are: "OS" and "Temporary". :vartype kubelet_disk_type: str or ~azure.mgmt.containerservice.models.KubeletDiskType :ivar workload_runtime: Determines the type of workload a node can run. Known values are: - "OCIContainer", "WasmWasi", "KataMshvVmIsolation", and "KataVmIsolation". + "OCIContainer", "WasmWasi", and "KataVmIsolation". :vartype workload_runtime: str or ~azure.mgmt.containerservice.models.WorkloadRuntime :ivar message_of_the_day: Message of the day for Linux nodes, base64-encoded. A base64-encoded string which will be written to /etc/motd after decoding. This allows customization of the @@ -6894,9 +4844,9 @@ class ManagedClusterAgentPoolProfile(ManagedClusterAgentPoolProfileProperties): :vartype os_type: str or ~azure.mgmt.containerservice.models.OSType :ivar os_sku: Specifies the OS SKU used by the agent pool. The default is Ubuntu if OSType is Linux. The default is Windows2019 when Kubernetes <= 1.24 or Windows2022 when Kubernetes >= - 1.25 if OSType is Windows. Known values are: "Ubuntu", "AzureLinux", "AzureLinux3", "Mariner", - "Flatcar", "CBLMariner", "Windows2019", "Windows2022", "Ubuntu2204", "Windows2025", - "WindowsAnnual", "Ubuntu2404", and "AzureContainerLinux". + 1.25 if OSType is Windows. Known values are: "Ubuntu", "AzureLinux", "AzureLinux3", + "CBLMariner", "Windows2019", "Windows2022", "Ubuntu2204", "Windows2025", "Ubuntu2404", and + "AzureContainerLinux". :vartype os_sku: str or ~azure.mgmt.containerservice.models.OSSKU :ivar max_count: The maximum number of nodes for auto-scaling. :vartype max_count: int @@ -6915,7 +4865,7 @@ class ManagedClusterAgentPoolProfile(ManagedClusterAgentPoolProfileProperties): all times. For additional information on agent pool restrictions and best practices, see: `https://docs.microsoft.com/azure/aks/use-system-pools `_. Known values are: "System", "User", - "Gateway", "ManagedSystem", and "Machines". + and "Gateway". :vartype mode: str or ~azure.mgmt.containerservice.models.AgentPoolMode :ivar orchestrator_version: The version of Kubernetes specified by the user. Both patch version (e.g. 1.20.13) and (e.g. 1.20) are supported. When @@ -6933,21 +4883,11 @@ class ManagedClusterAgentPoolProfile(ManagedClusterAgentPoolProfileProperties): exactly equal to it. If orchestratorVersion is , this field will contain the full version being used. :vartype current_orchestrator_version: str - :ivar node_image_version: The version of node image. + :ivar node_image_version: The version of the node image. Setting this value triggers an + agentPool rollback. Only values from ``recentlyUsedVersions`` are allowed. :vartype node_image_version: str - :ivar upgrade_strategy: Defines the upgrade strategy for the agent pool. The default is - Rolling. Known values are: "Rolling" and "BlueGreen". - :vartype upgrade_strategy: str or ~azure.mgmt.containerservice.models.UpgradeStrategy - :ivar enable_os_disk_full_caching: Whether to enable the full-cache ephemeral OS disk feature. - When this feature is enabled, the entire operating system will be locally cached on the - ephemeral OS disk, preventing E17 events caused by network failures. - :vartype enable_os_disk_full_caching: bool :ivar upgrade_settings: Settings for upgrading the agentpool. :vartype upgrade_settings: ~azure.mgmt.containerservice.models.AgentPoolUpgradeSettings - :ivar upgrade_settings_blue_green: Settings for Blue-Green upgrade on the agentpool. Applies - when upgrade strategy is set to BlueGreen. - :vartype upgrade_settings_blue_green: - ~azure.mgmt.containerservice.models.AgentPoolBlueGreenUpgradeSettings :ivar provisioning_state: The current deployment or provisioning state. :vartype provisioning_state: str :ivar power_state: Whether the Agent Pool is running or stopped. When an Agent Pool is first @@ -6992,14 +4932,6 @@ class ManagedClusterAgentPoolProfile(ManagedClusterAgentPoolProfileProperties): :ivar node_taints: The taints added to new nodes during node pool create and scale. For example, key=value:NoSchedule. :vartype node_taints: list[str] - :ivar node_initialization_taints: Taints added on the nodes during creation that will not be - reconciled by AKS. These taints will not be reconciled by AKS and can be removed with a kubectl - call. This field can be modified after node pool is created, but nodes will not be recreated - with new taints until another operation that requires recreation (e.g. node image upgrade) - happens. These taints allow for required configuration to run before the node is ready to - accept workloads, for example 'key1=value1:NoSchedule' that then can be removed with ``kubectl - taint nodes node1 key1=value1:NoSchedule-``. - :vartype node_initialization_taints: list[str] :ivar proximity_placement_group_id: The ID for Proximity Placement Group. :vartype proximity_placement_group_id: str :ivar kubelet_config: The Kubelet configuration on the agent pool nodes. @@ -7063,10 +4995,6 @@ class ManagedClusterAgentPoolProfile(ManagedClusterAgentPoolProfileProperties): LocalDNS helps improve performance and reliability of DNS resolution in an AKS cluster. For more details see aka.ms/aks/localdns. :vartype local_dns_profile: ~azure.mgmt.containerservice.models.LocalDNSProfile - :ivar prepared_image_specification_profile: Settings to determine the prepared image - specification used to provision nodes in a pool. - :vartype prepared_image_specification_profile: - ~azure.mgmt.containerservice.models.PreparedImageSpecificationProfile :ivar name: Unique name of the agent pool profile in the context of the subscription and resource group. Windows agent pool names must be 6 characters or less. Required. :vartype name: str @@ -7102,10 +5030,7 @@ def __init__( # pylint: disable=too-many-locals mode: Optional[Union[str, "_models.AgentPoolMode"]] = None, orchestrator_version: Optional[str] = None, node_image_version: Optional[str] = None, - upgrade_strategy: Optional[Union[str, "_models.UpgradeStrategy"]] = None, - enable_os_disk_full_caching: Optional[bool] = None, upgrade_settings: Optional["_models.AgentPoolUpgradeSettings"] = None, - upgrade_settings_blue_green: Optional["_models.AgentPoolBlueGreenUpgradeSettings"] = None, power_state: Optional["_models.PowerState"] = None, availability_zones: Optional[list[str]] = None, enable_node_public_ip: Optional[bool] = None, @@ -7116,7 +5041,6 @@ def __init__( # pylint: disable=too-many-locals tags: Optional[dict[str, str]] = None, node_labels: Optional[dict[str, str]] = None, node_taints: Optional[list[str]] = None, - node_initialization_taints: Optional[list[str]] = None, proximity_placement_group_id: Optional[str] = None, kubelet_config: Optional["_models.KubeletConfig"] = None, linux_os_config: Optional["_models.LinuxOSConfig"] = None, @@ -7137,7 +5061,6 @@ def __init__( # pylint: disable=too-many-locals virtual_machine_nodes_status: Optional[list["_models.VirtualMachineNodes"]] = None, status: Optional["_models.AgentPoolStatus"] = None, local_dns_profile: Optional["_models.LocalDNSProfile"] = None, - prepared_image_specification_profile: Optional["_models.PreparedImageSpecificationProfile"] = None, ) -> None: ... @overload @@ -7358,209 +5281,42 @@ def __init__(self, *args: Any, **kwargs: Any) -> None: super().__init__(*args, **kwargs) -class ManagedClusterAzureMonitorProfile(_Model): - """Azure Monitor addon profiles for monitoring the managed cluster. - - :ivar metrics: Metrics profile for the Azure Monitor managed service for Prometheus addon. - Collect out-of-the-box Kubernetes infrastructure metrics to send to an Azure Monitor Workspace - and configure additional scraping for custom targets. See aka.ms/AzureManagedPrometheus for an - overview. - :vartype metrics: ~azure.mgmt.containerservice.models.ManagedClusterAzureMonitorProfileMetrics - :ivar container_insights: Azure Monitor Container Insights Profile for Kubernetes Events, - Inventory and Container stdout & stderr logs etc. See aka.ms/AzureMonitorContainerInsights for - an overview. - :vartype container_insights: - ~azure.mgmt.containerservice.models.ManagedClusterAzureMonitorProfileContainerInsights - :ivar app_monitoring: Application Monitoring Profile for Kubernetes Application Container. - Collects application logs, metrics and traces through auto-instrumentation of the application - using Azure Monitor OpenTelemetry based SDKs. See aka.ms/AzureMonitorApplicationMonitoring for - an overview. - :vartype app_monitoring: - ~azure.mgmt.containerservice.models.ManagedClusterAzureMonitorProfileAppMonitoring - """ - - metrics: Optional["_models.ManagedClusterAzureMonitorProfileMetrics"] = rest_field( - visibility=["read", "create", "update", "delete", "query"] - ) - """Metrics profile for the Azure Monitor managed service for Prometheus addon. Collect - out-of-the-box Kubernetes infrastructure metrics to send to an Azure Monitor Workspace and - configure additional scraping for custom targets. See aka.ms/AzureManagedPrometheus for an - overview.""" - container_insights: Optional["_models.ManagedClusterAzureMonitorProfileContainerInsights"] = rest_field( - name="containerInsights", visibility=["read", "create", "update", "delete", "query"] - ) - """Azure Monitor Container Insights Profile for Kubernetes Events, Inventory and Container stdout - & stderr logs etc. See aka.ms/AzureMonitorContainerInsights for an overview.""" - app_monitoring: Optional["_models.ManagedClusterAzureMonitorProfileAppMonitoring"] = rest_field( - name="appMonitoring", visibility=["read", "create", "update", "delete", "query"] - ) - """Application Monitoring Profile for Kubernetes Application Container. Collects application logs, - metrics and traces through auto-instrumentation of the application using Azure Monitor - OpenTelemetry based SDKs. See aka.ms/AzureMonitorApplicationMonitoring for an overview.""" - - @overload - def __init__( - self, - *, - metrics: Optional["_models.ManagedClusterAzureMonitorProfileMetrics"] = None, - container_insights: Optional["_models.ManagedClusterAzureMonitorProfileContainerInsights"] = None, - app_monitoring: Optional["_models.ManagedClusterAzureMonitorProfileAppMonitoring"] = None, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - - -class ManagedClusterAzureMonitorProfileAppMonitoring(_Model): # pylint: disable=name-too-long - """Application Monitoring profile for AKS. - - :ivar auto_instrumentation: Application Monitoring auto-instrumentation for AKS. Deploys a - webhook that auto-instruments workloads with Microsoft OpenTelemetry Distros to collect - OpenTelemetry metrics, logs, and traces. See `https://aka.ms/AKSAppMonitoringDocs - `_ and `https://aka.ms/AzureMonitorApplicationMonitoring - `_ for an overview. - :vartype auto_instrumentation: - ~azure.mgmt.containerservice.models.ManagedClusterAzureMonitorProfileAppMonitoringAutoInstrumentation - :ivar open_telemetry_metrics: Application Monitoring Open Telemetry Metrics Profile for AKS. - Collects OpenTelemetry metrics of the application using Azure Monitor OpenTelemetry based SDKs. - See `https://aka.ms/AKSAppMonitoringDocs `_ and - `https://aka.ms/AzureMonitorApplicationMonitoring - `_ for an overview. - :vartype open_telemetry_metrics: - ~azure.mgmt.containerservice.models.ManagedClusterAzureMonitorProfileAppMonitoringOpenTelemetryMetrics - :ivar open_telemetry_logs_and_traces: Application Monitoring Open Telemetry Logs and Traces - Profile for AKS. Collects OpenTelemetry logs and traces of the application using Azure Monitor - OpenTelemetry based SDKs. See `https://aka.ms/AKSAppMonitoringDocs - `_ and `https://aka.ms/AzureMonitorApplicationMonitoring - `_ for an overview. - :vartype open_telemetry_logs_and_traces: - ~azure.mgmt.containerservice.models.ManagedClusterAzureMonitorProfileAppMonitoringOpenTelemetryLogsAndTraces - """ - - auto_instrumentation: Optional["_models.ManagedClusterAzureMonitorProfileAppMonitoringAutoInstrumentation"] = ( - rest_field(name="autoInstrumentation", visibility=["read", "create", "update", "delete", "query"]) - ) - """Application Monitoring auto-instrumentation for AKS. Deploys a webhook that auto-instruments - workloads with Microsoft OpenTelemetry Distros to collect OpenTelemetry metrics, logs, and - traces. See `https://aka.ms/AKSAppMonitoringDocs `_ and - `https://aka.ms/AzureMonitorApplicationMonitoring - `_ for an overview.""" - open_telemetry_metrics: Optional["_models.ManagedClusterAzureMonitorProfileAppMonitoringOpenTelemetryMetrics"] = ( - rest_field(name="openTelemetryMetrics", visibility=["read", "create", "update", "delete", "query"]) - ) - """Application Monitoring Open Telemetry Metrics Profile for AKS. Collects OpenTelemetry metrics - of the application using Azure Monitor OpenTelemetry based SDKs. See - `https://aka.ms/AKSAppMonitoringDocs `_ and - `https://aka.ms/AzureMonitorApplicationMonitoring - `_ for an overview.""" - open_telemetry_logs_and_traces: Optional[ - "_models.ManagedClusterAzureMonitorProfileAppMonitoringOpenTelemetryLogsAndTraces" - ] = rest_field(name="openTelemetryLogsAndTraces", visibility=["read", "create", "update", "delete", "query"]) - """Application Monitoring Open Telemetry Logs and Traces Profile for AKS. Collects OpenTelemetry - logs and traces of the application using Azure Monitor OpenTelemetry based SDKs. See - `https://aka.ms/AKSAppMonitoringDocs `_ and - `https://aka.ms/AzureMonitorApplicationMonitoring - `_ for an overview.""" - - @overload - def __init__( - self, - *, - auto_instrumentation: Optional[ - "_models.ManagedClusterAzureMonitorProfileAppMonitoringAutoInstrumentation" - ] = None, - open_telemetry_metrics: Optional[ - "_models.ManagedClusterAzureMonitorProfileAppMonitoringOpenTelemetryMetrics" - ] = None, - open_telemetry_logs_and_traces: Optional[ - "_models.ManagedClusterAzureMonitorProfileAppMonitoringOpenTelemetryLogsAndTraces" - ] = None, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - - -class ManagedClusterAzureMonitorProfileAppMonitoringAutoInstrumentation(_Model): # pylint: disable=name-too-long - """Application Monitoring auto-instrumentation for AKS. Deploys a webhook that auto-instruments - workloads with Microsoft OpenTelemetry Distros to collect OpenTelemetry metrics, logs, and - traces. See `https://aka.ms/AKSAppMonitoringDocs `_ and - `https://aka.ms/AzureMonitorApplicationMonitoring - `_ for an overview. - - :ivar enabled: Indicates if Application Monitoring Auto-instrumentation is enabled or not. - :vartype enabled: bool - """ - - enabled: Optional[bool] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """Indicates if Application Monitoring Auto-instrumentation is enabled or not.""" - - @overload - def __init__( - self, - *, - enabled: Optional[bool] = None, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - - -class ManagedClusterAzureMonitorProfileAppMonitoringOpenTelemetryLogsAndTraces(_Model): # pylint: disable=name-too-long - """Application Monitoring Open Telemetry Logs and Traces Profile for AKS. Collects OpenTelemetry - logs and traces of the application using Azure Monitor OpenTelemetry based SDKs. See - `https://aka.ms/AKSAppMonitoringDocs `_ and - `https://aka.ms/AzureMonitorApplicationMonitoring - `_ for an overview. +class ManagedClusterAzureMonitorProfile(_Model): + """Azure Monitor addon profiles for monitoring the managed cluster. - :ivar enabled: Indicates if Application Monitoring Open Telemetry Logs and traces is enabled or - not. - :vartype enabled: bool - :ivar http_port: The host port for Open Telemetry HTTP/PROTOBUF logs and traces. If not - specified, the default port is 28331. - :vartype http_port: int - :ivar grpc_port: The host port for Open Telemetry GRPC logs and traces. If not specified, the - default port is 28332. - :vartype grpc_port: int + :ivar metrics: Metrics profile for the Azure Monitor managed service for Prometheus addon. + Collect out-of-the-box Kubernetes infrastructure metrics to send to an Azure Monitor Workspace + and configure additional scraping for custom targets. See aka.ms/AzureManagedPrometheus for an + overview. + :vartype metrics: ~azure.mgmt.containerservice.models.ManagedClusterAzureMonitorProfileMetrics + :ivar app_monitoring: Application Monitoring Profile for Kubernetes Application Container. + Collects application logs, metrics and traces through auto-instrumentation of the application + using Azure Monitor OpenTelemetry based SDKs. See aka.ms/AzureMonitorApplicationMonitoring for + an overview. + :vartype app_monitoring: + ~azure.mgmt.containerservice.models.ManagedClusterAzureMonitorProfileAppMonitoring """ - enabled: Optional[bool] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """Indicates if Application Monitoring Open Telemetry Logs and traces is enabled or not.""" - http_port: Optional[int] = rest_field(name="httpPort", visibility=["read", "create", "update", "delete", "query"]) - """The host port for Open Telemetry HTTP/PROTOBUF logs and traces. If not specified, the default - port is 28331.""" - grpc_port: Optional[int] = rest_field(name="grpcPort", visibility=["read", "create", "update", "delete", "query"]) - """The host port for Open Telemetry GRPC logs and traces. If not specified, the default port is - 28332.""" + metrics: Optional["_models.ManagedClusterAzureMonitorProfileMetrics"] = rest_field( + visibility=["read", "create", "update", "delete", "query"] + ) + """Metrics profile for the Azure Monitor managed service for Prometheus addon. Collect + out-of-the-box Kubernetes infrastructure metrics to send to an Azure Monitor Workspace and + configure additional scraping for custom targets. See aka.ms/AzureManagedPrometheus for an + overview.""" + app_monitoring: Optional["_models.ManagedClusterAzureMonitorProfileAppMonitoring"] = rest_field( + name="appMonitoring", visibility=["read", "create", "update", "delete", "query"] + ) + """Application Monitoring Profile for Kubernetes Application Container. Collects application logs, + metrics and traces through auto-instrumentation of the application using Azure Monitor + OpenTelemetry based SDKs. See aka.ms/AzureMonitorApplicationMonitoring for an overview.""" @overload def __init__( self, *, - enabled: Optional[bool] = None, - http_port: Optional[int] = None, - grpc_port: Optional[int] = None, + metrics: Optional["_models.ManagedClusterAzureMonitorProfileMetrics"] = None, + app_monitoring: Optional["_models.ManagedClusterAzureMonitorProfileAppMonitoring"] = None, ) -> None: ... @overload @@ -7574,38 +5330,34 @@ def __init__(self, *args: Any, **kwargs: Any) -> None: super().__init__(*args, **kwargs) -class ManagedClusterAzureMonitorProfileAppMonitoringOpenTelemetryMetrics(_Model): # pylint: disable=name-too-long - """Application Monitoring Open Telemetry Metrics Profile for AKS. Collects OpenTelemetry metrics - of the application using Azure Monitor OpenTelemetry based SDKs. See - `https://aka.ms/AKSAppMonitoringDocs `_ and - `https://aka.ms/AzureMonitorApplicationMonitoring - `_ for an overview. +class ManagedClusterAzureMonitorProfileAppMonitoring(_Model): # pylint: disable=name-too-long + """Application Monitoring profile for AKS. - :ivar enabled: Indicates if Application Monitoring Open Telemetry Metrics is enabled or not. - :vartype enabled: bool - :ivar http_port: The host port for Open Telemetry HTTP/PROTOBUF metrics. If not specified, the - default port is 28333. - :vartype http_port: int - :ivar grpc_port: The host port for Open Telemetry GRPC metrics. If not specified, the default - port is 28334. - :vartype grpc_port: int + :ivar auto_instrumentation: Application Monitoring auto-instrumentation for AKS. Deploys a + webhook that auto-instruments workloads with Microsoft OpenTelemetry Distros to collect + OpenTelemetry metrics, logs, and traces. See `https://aka.ms/AKSAppMonitoringDocs + `_ and `https://aka.ms/AzureMonitorApplicationMonitoring + `_ for an overview. + :vartype auto_instrumentation: + ~azure.mgmt.containerservice.models.ManagedClusterAzureMonitorProfileAppMonitoringAutoInstrumentation """ - enabled: Optional[bool] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """Indicates if Application Monitoring Open Telemetry Metrics is enabled or not.""" - http_port: Optional[int] = rest_field(name="httpPort", visibility=["read", "create", "update", "delete", "query"]) - """The host port for Open Telemetry HTTP/PROTOBUF metrics. If not specified, the default port is - 28333.""" - grpc_port: Optional[int] = rest_field(name="grpcPort", visibility=["read", "create", "update", "delete", "query"]) - """The host port for Open Telemetry GRPC metrics. If not specified, the default port is 28334.""" + auto_instrumentation: Optional["_models.ManagedClusterAzureMonitorProfileAppMonitoringAutoInstrumentation"] = ( + rest_field(name="autoInstrumentation", visibility=["read", "create", "update", "delete", "query"]) + ) + """Application Monitoring auto-instrumentation for AKS. Deploys a webhook that auto-instruments + workloads with Microsoft OpenTelemetry Distros to collect OpenTelemetry metrics, logs, and + traces. See `https://aka.ms/AKSAppMonitoringDocs `_ and + `https://aka.ms/AzureMonitorApplicationMonitoring + `_ for an overview.""" @overload def __init__( self, *, - enabled: Optional[bool] = None, - http_port: Optional[int] = None, - grpc_port: Optional[int] = None, + auto_instrumentation: Optional[ + "_models.ManagedClusterAzureMonitorProfileAppMonitoringAutoInstrumentation" + ] = None, ) -> None: ... @overload @@ -7619,80 +5371,25 @@ def __init__(self, *args: Any, **kwargs: Any) -> None: super().__init__(*args, **kwargs) -class ManagedClusterAzureMonitorProfileContainerInsights(_Model): # pylint: disable=name-too-long - """Azure Monitor Container Insights Profile for Kubernetes Events, Inventory and Container stdout - & stderr logs etc. See aka.ms/AzureMonitorContainerInsights for an overview. +class ManagedClusterAzureMonitorProfileAppMonitoringAutoInstrumentation(_Model): # pylint: disable=name-too-long + """Application Monitoring auto-instrumentation for AKS. Deploys a webhook that auto-instruments + workloads with Microsoft OpenTelemetry Distros to collect OpenTelemetry metrics, logs, and + traces. See `https://aka.ms/AKSAppMonitoringDocs `_ and + `https://aka.ms/AzureMonitorApplicationMonitoring + `_ for an overview. - :ivar enabled: Indicates if Azure Monitor Container Insights Logs Addon is enabled or not. + :ivar enabled: Indicates if Application Monitoring Auto-instrumentation is enabled or not. :vartype enabled: bool - :ivar log_analytics_workspace_resource_id: Fully Qualified ARM Resource Id of Azure Log - Analytics Workspace for storing Azure Monitor Container Insights Logs. - :vartype log_analytics_workspace_resource_id: str - :ivar syslog_port: The syslog host port. If not specified, the default port is 28330. - :vartype syslog_port: int - :ivar disable_custom_metrics: Indicates whether custom metrics collection has to be disabled or - not. If not specified the default is false. No custom metrics will be emitted if this field is - false but the container insights enabled field is false. - :vartype disable_custom_metrics: bool - :ivar disable_prometheus_metrics_scraping: Indicates whether prometheus metrics scraping is - disabled or not. If not specified the default is false. No prometheus metrics will be emitted - if this field is false but the container insights enabled field is false. - :vartype disable_prometheus_metrics_scraping: bool - :ivar container_network_logs: Configures container network logs ingestion with Azure Monitor. - Which network logs to ingest is controlled by the CRD found in the following links. No network - logs are ingested by default. More information on container network logs can be found at - `https://aka.ms/ContainerNetworkLogsDoc `_. More - information on configuring container network log can be found at - `https://aka.ms/acns/howtoenablecnl `_. If not specified, - the default is Disabled. Known values are: "Disabled" and "Enabled". - :vartype container_network_logs: str or - ~azure.mgmt.containerservice.models.ContainerNetworkLogs """ enabled: Optional[bool] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """Indicates if Azure Monitor Container Insights Logs Addon is enabled or not.""" - log_analytics_workspace_resource_id: Optional[str] = rest_field( - name="logAnalyticsWorkspaceResourceId", visibility=["read", "create", "update", "delete", "query"] - ) - """Fully Qualified ARM Resource Id of Azure Log Analytics Workspace for storing Azure Monitor - Container Insights Logs.""" - syslog_port: Optional[int] = rest_field( - name="syslogPort", visibility=["read", "create", "update", "delete", "query"] - ) - """The syslog host port. If not specified, the default port is 28330.""" - disable_custom_metrics: Optional[bool] = rest_field( - name="disableCustomMetrics", visibility=["read", "create", "update", "delete", "query"] - ) - """Indicates whether custom metrics collection has to be disabled or not. If not specified the - default is false. No custom metrics will be emitted if this field is false but the container - insights enabled field is false.""" - disable_prometheus_metrics_scraping: Optional[bool] = rest_field( - name="disablePrometheusMetricsScraping", visibility=["read", "create", "update", "delete", "query"] - ) - """Indicates whether prometheus metrics scraping is disabled or not. If not specified the default - is false. No prometheus metrics will be emitted if this field is false but the container - insights enabled field is false.""" - container_network_logs: Optional[Union[str, "_models.ContainerNetworkLogs"]] = rest_field( - name="containerNetworkLogs", visibility=["read", "create", "update", "delete", "query"] - ) - """Configures container network logs ingestion with Azure Monitor. Which network logs to ingest is - controlled by the CRD found in the following links. No network logs are ingested by default. - More information on container network logs can be found at - `https://aka.ms/ContainerNetworkLogsDoc `_. More - information on configuring container network log can be found at - `https://aka.ms/acns/howtoenablecnl `_. If not specified, - the default is Disabled. Known values are: \"Disabled\" and \"Enabled\".""" + """Indicates if Application Monitoring Auto-instrumentation is enabled or not.""" @overload def __init__( self, *, enabled: Optional[bool] = None, - log_analytics_workspace_resource_id: Optional[str] = None, - syslog_port: Optional[int] = None, - disable_custom_metrics: Optional[bool] = None, - disable_prometheus_metrics_scraping: Optional[bool] = None, - container_network_logs: Optional[Union[str, "_models.ContainerNetworkLogs"]] = None, ) -> None: ... @overload @@ -7887,45 +5584,6 @@ def __init__(self, *args: Any, **kwargs: Any) -> None: super().__init__(*args, **kwargs) -class ManagedClusterControlPlaneScalingProfile(_Model): - """Profile for providing scaled and performance guaranteed control plane capacity to deliver - consistent performance under high workload. Requires Kubernetes version 1.33.0 or later. - - :ivar scaling_size: The scaling size of the control plane. Scaling sizes offer guaranteed - capacity and predictable Kubernetes performance beyond standard tier defaults. Higher H sizes - provide increased performance guarantees. See `https://aka.ms/aks/hyperscale - `_ for performance metrics details for each size. Required. - Known values are: "H2", "H4", and "H8". - :vartype scaling_size: str or ~azure.mgmt.containerservice.models.ControlPlaneScalingSize - """ - - scaling_size: Union[str, "_models.ControlPlaneScalingSize"] = rest_field( - name="scalingSize", visibility=["read", "create", "update", "delete", "query"] - ) - """The scaling size of the control plane. Scaling sizes offer guaranteed capacity and predictable - Kubernetes performance beyond standard tier defaults. Higher H sizes provide increased - performance guarantees. See `https://aka.ms/aks/hyperscale `_ - for performance metrics details for each size. Required. Known values are: \"H2\", \"H4\", and - \"H8\".""" - - @overload - def __init__( - self, - *, - scaling_size: Union[str, "_models.ControlPlaneScalingSize"], - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - - class ManagedClusterCostAnalysis(_Model): """The cost analysis configuration for the cluster. @@ -7960,44 +5618,6 @@ def __init__(self, *args: Any, **kwargs: Any) -> None: super().__init__(*args, **kwargs) -class ManagedClusterHealthMonitorProfile(_Model): - """Health monitor profile for the managed cluster. - - :ivar enable_continuous_control_plane_and_addon_monitor: Whether to enable continuous control - plane and addon monitor. - :vartype enable_continuous_control_plane_and_addon_monitor: bool - :ivar enable_on_demand_monitor: Whether to enable on-demand monitor. - :vartype enable_on_demand_monitor: bool - """ - - enable_continuous_control_plane_and_addon_monitor: Optional[bool] = rest_field( - name="enableContinuousControlPlaneAndAddonMonitor", visibility=["read", "create", "update", "delete", "query"] - ) - """Whether to enable continuous control plane and addon monitor.""" - enable_on_demand_monitor: Optional[bool] = rest_field( - name="enableOnDemandMonitor", visibility=["read", "create", "update", "delete", "query"] - ) - """Whether to enable on-demand monitor.""" - - @overload - def __init__( - self, - *, - enable_continuous_control_plane_and_addon_monitor: Optional[bool] = None, - enable_on_demand_monitor: Optional[bool] = None, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - - class ManagedClusterHostedSystemProfile(_Model): """Settings for hosted system addons. @@ -8065,9 +5685,6 @@ class ManagedClusterHTTPProxyConfig(_Model): :vartype https_proxy: str :ivar no_proxy: The endpoints that should not go through proxy. :vartype no_proxy: list[str] - :ivar effective_no_proxy: A read-only list of all endpoints for which traffic should not be - sent to the proxy. This list is a superset of noProxy and values injected by AKS. - :vartype effective_no_proxy: list[str] :ivar trusted_ca: Alternative CA cert to use for connecting to proxy servers. :vartype trusted_ca: str :ivar enabled: Whether to enable HTTP proxy. If disabled, the specified proxy configuration @@ -8085,9 +5702,6 @@ class ManagedClusterHTTPProxyConfig(_Model): name="noProxy", visibility=["read", "create", "update", "delete", "query"] ) """The endpoints that should not go through proxy.""" - effective_no_proxy: Optional[list[str]] = rest_field(name="effectiveNoProxy", visibility=["read"]) - """A read-only list of all endpoints for which traffic should not be sent to the proxy. This list - is a superset of noProxy and values injected by AKS.""" trusted_ca: Optional[str] = rest_field(name="trustedCa", visibility=["read", "create", "update", "delete", "query"]) """Alternative CA cert to use for connecting to proxy servers.""" enabled: Optional[bool] = rest_field(visibility=["read", "create", "update", "delete", "query"]) @@ -8187,40 +5801,6 @@ def __init__(self, *args: Any, **kwargs: Any) -> None: super().__init__(*args, **kwargs) -class ManagedClusterIngressDefaultDomainProfile(_Model): # pylint: disable=name-too-long - """Default domain profile for the managed cluster ingress profile. - - :ivar enabled: Whether to enable Default Domain. - :vartype enabled: bool - :ivar domain_name: The unique fully qualified domain name assigned to the cluster. This will - not change even if disabled then reenabled. - :vartype domain_name: str - """ - - enabled: Optional[bool] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """Whether to enable Default Domain.""" - domain_name: Optional[str] = rest_field(name="domainName", visibility=["read"]) - """The unique fully qualified domain name assigned to the cluster. This will not change even if - disabled then reenabled.""" - - @overload - def __init__( - self, - *, - enabled: Optional[bool] = None, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - - class ManagedClusterIngressProfile(_Model): """Ingress profile for the container service cluster. @@ -8233,10 +5813,6 @@ class ManagedClusterIngressProfile(_Model): :ivar gateway_api: Settings for the managed Gateway API installation. :vartype gateway_api: ~azure.mgmt.containerservice.models.ManagedClusterIngressProfileGatewayConfiguration - :ivar application_load_balancer: Settings for the managed Application Load Balancer - installation. - :vartype application_load_balancer: - ~azure.mgmt.containerservice.models.ManagedClusterIngressProfileApplicationLoadBalancer """ web_app_routing: Optional["_models.ManagedClusterIngressProfileWebAppRouting"] = rest_field( @@ -8250,10 +5826,6 @@ class ManagedClusterIngressProfile(_Model): name="gatewayAPI", visibility=["read", "create", "update", "delete", "query"] ) """Settings for the managed Gateway API installation.""" - application_load_balancer: Optional["_models.ManagedClusterIngressProfileApplicationLoadBalancer"] = rest_field( - name="applicationLoadBalancer", visibility=["read", "create", "update", "delete", "query"] - ) - """Settings for the managed Application Load Balancer installation.""" @overload def __init__( @@ -8261,42 +5833,6 @@ def __init__( *, web_app_routing: Optional["_models.ManagedClusterIngressProfileWebAppRouting"] = None, gateway_api: Optional["_models.ManagedClusterIngressProfileGatewayConfiguration"] = None, - application_load_balancer: Optional["_models.ManagedClusterIngressProfileApplicationLoadBalancer"] = None, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - - -class ManagedClusterIngressProfileApplicationLoadBalancer(_Model): # pylint: disable=name-too-long - """Application Load Balancer settings for the ingress profile. - - :ivar enabled: Whether to enable Application Load Balancer. - :vartype enabled: bool - :ivar identity: Managed identity of the Application Load Balancer add-on. This is the identity - that should be granted permissions to manage the associated Application Gateway for Containers - resource. - :vartype identity: ~azure.mgmt.containerservice.models.UserAssignedIdentity - """ - - enabled: Optional[bool] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """Whether to enable Application Load Balancer.""" - identity: Optional["_models.UserAssignedIdentity"] = rest_field(visibility=["read"]) - """Managed identity of the Application Load Balancer add-on. This is the identity that should be - granted permissions to manage the associated Application Gateway for Containers resource.""" - - @overload - def __init__( - self, - *, - enabled: Optional[bool] = None, ) -> None: ... @overload @@ -8404,11 +5940,6 @@ class ManagedClusterIngressProfileWebAppRouting(_Model): # pylint: disable=name `_ for more instructions. :vartype identity: ~azure.mgmt.containerservice.models.UserAssignedIdentity - :ivar default_domain: Configuration for the Default Domain. This is a unique, autogenerated - domain that comes with a signed TLS Certificate allowing for secure HTTPS. See `the Default - Domain documentation `_ for more instructions. - :vartype default_domain: - ~azure.mgmt.containerservice.models.ManagedClusterIngressDefaultDomainProfile """ enabled: Optional[bool] = rest_field(visibility=["read", "create", "update", "delete", "query"]) @@ -8438,12 +5969,6 @@ class ManagedClusterIngressProfileWebAppRouting(_Model): # pylint: disable=name Azure Key Vault. See `this overview of the add-on `_ for more instructions.""" - default_domain: Optional["_models.ManagedClusterIngressDefaultDomainProfile"] = rest_field( - name="defaultDomain", visibility=["read", "create", "update", "delete", "query"] - ) - """Configuration for the Default Domain. This is a unique, autogenerated domain that comes with a - signed TLS Certificate allowing for secure HTTPS. See `the Default Domain documentation - `_ for more instructions.""" @overload def __init__( @@ -8453,7 +5978,6 @@ def __init__( gateway_api_implementations: Optional["_models.ManagedClusterWebAppRoutingGatewayAPIImplementations"] = None, dns_zone_resource_ids: Optional[list[str]] = None, nginx: Optional["_models.ManagedClusterIngressProfileNginx"] = None, - default_domain: Optional["_models.ManagedClusterIngressDefaultDomainProfile"] = None, ) -> None: ... @overload @@ -8495,10 +6019,6 @@ class ManagedClusterLoadBalancerProfile(_Model): :ivar backend_pool_type: The type of the managed inbound Load Balancer BackendPool. Known values are: "NodeIPConfiguration" and "NodeIP". :vartype backend_pool_type: str or ~azure.mgmt.containerservice.models.BackendPoolType - :ivar cluster_service_load_balancer_health_probe_mode: The health probing behavior for External - Traffic Policy Cluster services. Known values are: "ServiceNodePort" and "Shared". - :vartype cluster_service_load_balancer_health_probe_mode: str or - ~azure.mgmt.containerservice.models.ClusterServiceLoadBalancerHealthProbeMode """ managed_outbound_i_ps: Optional["_models.ManagedClusterLoadBalancerProfileManagedOutboundIPs"] = rest_field( @@ -8536,13 +6056,6 @@ class ManagedClusterLoadBalancerProfile(_Model): ) """The type of the managed inbound Load Balancer BackendPool. Known values are: \"NodeIPConfiguration\" and \"NodeIP\".""" - cluster_service_load_balancer_health_probe_mode: Optional[ - Union[str, "_models.ClusterServiceLoadBalancerHealthProbeMode"] - ] = rest_field( - name="clusterServiceLoadBalancerHealthProbeMode", visibility=["read", "create", "update", "delete", "query"] - ) - """The health probing behavior for External Traffic Policy Cluster services. Known values are: - \"ServiceNodePort\" and \"Shared\".""" @overload def __init__( @@ -8555,9 +6068,6 @@ def __init__( idle_timeout_in_minutes: Optional[int] = None, enable_multiple_standard_load_balancers: Optional[bool] = None, backend_pool_type: Optional[Union[str, "_models.BackendPoolType"]] = None, - cluster_service_load_balancer_health_probe_mode: Optional[ - Union[str, "_models.ClusterServiceLoadBalancerHealthProbeMode"] - ] = None, ) -> None: ... @overload @@ -8677,26 +6187,17 @@ class ManagedClusterManagedOutboundIPProfile(_Model): :ivar count: The desired number of outbound IPs created/managed by Azure. Allowed values must be in the range of 1 to 16 (inclusive). The default value is 1. :vartype count: int - :ivar count_i_pv6: The desired number of IPv6 outbound IPs created/managed by Azure. Allowed - values must be in the range of 1 to 16 (inclusive). - :vartype count_i_pv6: int """ count: Optional[int] = rest_field(visibility=["read", "create", "update", "delete", "query"]) """The desired number of outbound IPs created/managed by Azure. Allowed values must be in the range of 1 to 16 (inclusive). The default value is 1.""" - count_i_pv6: Optional[int] = rest_field( - name="countIPv6", visibility=["read", "create", "update", "delete", "query"] - ) - """The desired number of IPv6 outbound IPs created/managed by Azure. Allowed values must be in the - range of 1 to 16 (inclusive).""" @overload def __init__( self, *, count: Optional[int] = None, - count_i_pv6: Optional[int] = None, ) -> None: ... @overload @@ -8717,111 +6218,16 @@ class ManagedClusterMetricsProfile(_Model): :vartype cost_analysis: ~azure.mgmt.containerservice.models.ManagedClusterCostAnalysis """ - cost_analysis: Optional["_models.ManagedClusterCostAnalysis"] = rest_field( - name="costAnalysis", visibility=["read", "create", "update", "delete", "query"] - ) - """The configuration for detailed per-Kubernetes resource cost analysis.""" - - @overload - def __init__( - self, - *, - cost_analysis: Optional["_models.ManagedClusterCostAnalysis"] = None, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - - -class ManagedClusterNATGatewayProfile(_Model): - """Profile of the managed cluster NAT gateway. - - :ivar managed_outbound_ip_profile: Profile of the managed outbound IP resources of the cluster - NAT gateway. - :vartype managed_outbound_ip_profile: - ~azure.mgmt.containerservice.models.ManagedClusterManagedOutboundIPProfile - :ivar effective_outbound_i_ps: The effective outbound IP resources of the cluster NAT gateway. - :vartype effective_outbound_i_ps: list[~azure.mgmt.containerservice.models.ResourceReference] - :ivar outbound_ip_prefixes: Desired outbound IP Prefix resources for the managed NAT Gateway. - Only compatible with NAT Gateway V2. - :vartype outbound_ip_prefixes: - ~azure.mgmt.containerservice.models.ManagedClusterNATGatewayProfileOutboundIpPrefixes - :ivar outbound_i_ps: Desired outbound IP resources for the managed NAT Gateway. - :vartype outbound_i_ps: - ~azure.mgmt.containerservice.models.ManagedClusterNATGatewayProfileOutboundIPs - :ivar idle_timeout_in_minutes: Desired outbound flow idle timeout in minutes. Allowed values - are in the range of 4 to 120 (inclusive). The default value is 4 minutes. - :vartype idle_timeout_in_minutes: int - """ - - managed_outbound_ip_profile: Optional["_models.ManagedClusterManagedOutboundIPProfile"] = rest_field( - name="managedOutboundIPProfile", visibility=["read", "create", "update", "delete", "query"] - ) - """Profile of the managed outbound IP resources of the cluster NAT gateway.""" - effective_outbound_i_ps: Optional[list["_models.ResourceReference"]] = rest_field( - name="effectiveOutboundIPs", visibility=["read"] - ) - """The effective outbound IP resources of the cluster NAT gateway.""" - outbound_ip_prefixes: Optional["_models.ManagedClusterNATGatewayProfileOutboundIpPrefixes"] = rest_field( - name="outboundIPPrefixes", visibility=["read", "create", "update", "delete", "query"] - ) - """Desired outbound IP Prefix resources for the managed NAT Gateway. Only compatible with NAT - Gateway V2.""" - outbound_i_ps: Optional["_models.ManagedClusterNATGatewayProfileOutboundIPs"] = rest_field( - name="outboundIPs", visibility=["read", "create", "update", "delete", "query"] - ) - """Desired outbound IP resources for the managed NAT Gateway.""" - idle_timeout_in_minutes: Optional[int] = rest_field( - name="idleTimeoutInMinutes", visibility=["read", "create", "update", "delete", "query"] - ) - """Desired outbound flow idle timeout in minutes. Allowed values are in the range of 4 to 120 - (inclusive). The default value is 4 minutes.""" - - @overload - def __init__( - self, - *, - managed_outbound_ip_profile: Optional["_models.ManagedClusterManagedOutboundIPProfile"] = None, - outbound_ip_prefixes: Optional["_models.ManagedClusterNATGatewayProfileOutboundIpPrefixes"] = None, - outbound_i_ps: Optional["_models.ManagedClusterNATGatewayProfileOutboundIPs"] = None, - idle_timeout_in_minutes: Optional[int] = None, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - - -class ManagedClusterNATGatewayProfileOutboundIpPrefixes(_Model): # pylint: disable=name-too-long - """ManagedClusterNATGatewayProfileOutboundIpPrefixes. - - :ivar public_ip_prefixes: A list of public IP prefix resources. - :vartype public_ip_prefixes: list[str] - """ - - public_ip_prefixes: Optional[list[str]] = rest_field( - name="publicIPPrefixes", visibility=["read", "create", "update", "delete", "query"] + cost_analysis: Optional["_models.ManagedClusterCostAnalysis"] = rest_field( + name="costAnalysis", visibility=["read", "create", "update", "delete", "query"] ) - """A list of public IP prefix resources.""" + """The configuration for detailed per-Kubernetes resource cost analysis.""" @overload def __init__( self, *, - public_ip_prefixes: Optional[list[str]] = None, + cost_analysis: Optional["_models.ManagedClusterCostAnalysis"] = None, ) -> None: ... @overload @@ -8835,23 +6241,40 @@ def __init__(self, *args: Any, **kwargs: Any) -> None: super().__init__(*args, **kwargs) -class ManagedClusterNATGatewayProfileOutboundIPs(_Model): # pylint: disable=name-too-long - """ManagedClusterNATGatewayProfileOutboundIPs. +class ManagedClusterNATGatewayProfile(_Model): + """Profile of the managed cluster NAT gateway. - :ivar public_i_ps: A list of public IP resources. - :vartype public_i_ps: list[str] + :ivar managed_outbound_ip_profile: Profile of the managed outbound IP resources of the cluster + NAT gateway. + :vartype managed_outbound_ip_profile: + ~azure.mgmt.containerservice.models.ManagedClusterManagedOutboundIPProfile + :ivar effective_outbound_i_ps: The effective outbound IP resources of the cluster NAT gateway. + :vartype effective_outbound_i_ps: list[~azure.mgmt.containerservice.models.ResourceReference] + :ivar idle_timeout_in_minutes: Desired outbound flow idle timeout in minutes. Allowed values + are in the range of 4 to 120 (inclusive). The default value is 4 minutes. + :vartype idle_timeout_in_minutes: int """ - public_i_ps: Optional[list[str]] = rest_field( - name="publicIPs", visibility=["read", "create", "update", "delete", "query"] + managed_outbound_ip_profile: Optional["_models.ManagedClusterManagedOutboundIPProfile"] = rest_field( + name="managedOutboundIPProfile", visibility=["read", "create", "update", "delete", "query"] ) - """A list of public IP resources.""" + """Profile of the managed outbound IP resources of the cluster NAT gateway.""" + effective_outbound_i_ps: Optional[list["_models.ResourceReference"]] = rest_field( + name="effectiveOutboundIPs", visibility=["read"] + ) + """The effective outbound IP resources of the cluster NAT gateway.""" + idle_timeout_in_minutes: Optional[int] = rest_field( + name="idleTimeoutInMinutes", visibility=["read", "create", "update", "delete", "query"] + ) + """Desired outbound flow idle timeout in minutes. Allowed values are in the range of 4 to 120 + (inclusive). The default value is 4 minutes.""" @overload def __init__( self, *, - public_i_ps: Optional[list[str]] = None, + managed_outbound_ip_profile: Optional["_models.ManagedClusterManagedOutboundIPProfile"] = None, + idle_timeout_in_minutes: Optional[int] = None, ) -> None: ... @overload @@ -9272,8 +6695,6 @@ class ManagedClusterPoolUpgradeProfile(_Model): :ivar upgrades: List of orchestrator types and versions available for upgrade. :vartype upgrades: list[~azure.mgmt.containerservice.models.ManagedClusterPoolUpgradeProfileUpgradesItem] - :ivar components_by_releases: List of components grouped by kubernetes major.minor version. - :vartype components_by_releases: list[~azure.mgmt.containerservice.models.ComponentsByRelease] """ kubernetes_version: str = rest_field( @@ -9291,10 +6712,6 @@ class ManagedClusterPoolUpgradeProfile(_Model): visibility=["read", "create", "update", "delete", "query"] ) """List of orchestrator types and versions available for upgrade.""" - components_by_releases: Optional[list["_models.ComponentsByRelease"]] = rest_field( - name="componentsByReleases", visibility=["read", "create", "update", "delete", "query"] - ) - """List of components grouped by kubernetes major.minor version.""" @overload def __init__( @@ -9304,7 +6721,6 @@ def __init__( os_type: Union[str, "_models.OSType"], name: Optional[str] = None, upgrades: Optional[list["_models.ManagedClusterPoolUpgradeProfileUpgradesItem"]] = None, - components_by_releases: Optional[list["_models.ComponentsByRelease"]] = None, ) -> None: ... @overload @@ -9325,8 +6741,6 @@ class ManagedClusterPoolUpgradeProfileUpgradesItem(_Model): # pylint: disable=n :vartype kubernetes_version: str :ivar is_preview: Whether the Kubernetes version is currently in preview. :vartype is_preview: bool - :ivar is_out_of_support: Whether the Kubernetes version is out of support. - :vartype is_out_of_support: bool """ kubernetes_version: Optional[str] = rest_field( @@ -9337,10 +6751,6 @@ class ManagedClusterPoolUpgradeProfileUpgradesItem(_Model): # pylint: disable=n name="isPreview", visibility=["read", "create", "update", "delete", "query"] ) """Whether the Kubernetes version is currently in preview.""" - is_out_of_support: Optional[bool] = rest_field( - name="isOutOfSupport", visibility=["read", "create", "update", "delete", "query"] - ) - """Whether the Kubernetes version is out of support.""" @overload def __init__( @@ -9348,7 +6758,6 @@ def __init__( *, kubernetes_version: Optional[str] = None, is_preview: Optional[bool] = None, - is_out_of_support: Optional[bool] = None, ) -> None: ... @overload @@ -9369,9 +6778,6 @@ class ManagedClusterProperties(_Model): :vartype provisioning_state: str :ivar power_state: The Power State of the cluster. :vartype power_state: ~azure.mgmt.containerservice.models.PowerState - :ivar creation_data: CreationData to be used to specify the source Snapshot ID if the cluster - will be created/upgraded using a snapshot. - :vartype creation_data: ~azure.mgmt.containerservice.models.CreationData :ivar max_agent_pools: The max number of agent pools for the managed cluster. :vartype max_agent_pools: int :ivar kubernetes_version: The version of Kubernetes specified by the user. Both patch version @@ -9437,17 +6843,6 @@ class ManagedClusterProperties(_Model): :ivar support_plan: The support plan for the Managed Cluster. If unspecified, the default is 'KubernetesOfficial'. Known values are: "KubernetesOfficial" and "AKSLongTermSupport". :vartype support_plan: str or ~azure.mgmt.containerservice.models.KubernetesSupportPlan - :ivar enable_fips: Whether to enable FIPS mode at the cluster level. When enabled, this setting - enforces FIPS compliance for all AKS-managed components, such as the node operating system, - addons, and `managed containerized components `_. See - `Enable cluster-wide FIPS `_ for more details. When this property is - enabled, all node pools in the cluster must also be FIPS-enabled. - :vartype enable_fips: bool - :ivar enable_namespace_resources: Enable namespace as Azure resource. The default value is - false. It can be enabled/disabled on creation and updating of the managed cluster. See - `https://aka.ms/NamespaceARMResource `_ for more details - on Namespace as a ARM Resource. - :vartype enable_namespace_resources: bool :ivar network_profile: The network configuration profile. :vartype network_profile: ~azure.mgmt.containerservice.models.ContainerServiceNetworkProfile :ivar aad_profile: The Azure Active Directory configuration. @@ -9488,7 +6883,7 @@ class ManagedClusterProperties(_Model): :ivar ingress_profile: Ingress profile for the managed cluster. :vartype ingress_profile: ~azure.mgmt.containerservice.models.ManagedClusterIngressProfile :ivar public_network_access: PublicNetworkAccess of the managedCluster. Allow or deny public - network access for AKS. Known values are: "Enabled", "Disabled", and "SecuredByPerimeter". + network access for AKS. Known values are: "Enabled" and "Disabled". :vartype public_network_access: str or ~azure.mgmt.containerservice.models.PublicNetworkAccess :ivar workload_auto_scaler_profile: Workload Auto-scaler profile for the managed cluster. :vartype workload_auto_scaler_profile: @@ -9512,23 +6907,11 @@ class ManagedClusterProperties(_Model): cluster. :vartype ai_toolchain_operator_profile: ~azure.mgmt.containerservice.models.ManagedClusterAIToolchainOperatorProfile - :ivar scheduler_profile: Profile of the pod scheduler configuration. - :vartype scheduler_profile: ~azure.mgmt.containerservice.models.SchedulerProfile :ivar hosted_system_profile: Settings for hosted system addons. For more information, see `https://aka.ms/aks/automatic/systemcomponents `_. :vartype hosted_system_profile: ~azure.mgmt.containerservice.models.ManagedClusterHostedSystemProfile - :ivar health_monitor_profile: Health monitor profile for the managed cluster. - :vartype health_monitor_profile: - ~azure.mgmt.containerservice.models.ManagedClusterHealthMonitorProfile - :ivar control_plane_scaling_profile: Profile for providing scaled and performance guaranteed - control plane capacity to deliver consistent performance under high workload. Requires - Kubernetes version 1.33.0 or later. - :vartype control_plane_scaling_profile: - ~azure.mgmt.containerservice.models.ManagedClusterControlPlaneScalingProfile - :ivar node_disruption_profile: Node disruption profile for a managed cluster. - :vartype node_disruption_profile: ~azure.mgmt.containerservice.models.NodeDisruptionProfile :ivar status: Contains read-only information about the Managed Cluster. :vartype status: ~azure.mgmt.containerservice.models.ManagedClusterStatus """ @@ -9537,11 +6920,6 @@ class ManagedClusterProperties(_Model): """The current provisioning state.""" power_state: Optional["_models.PowerState"] = rest_field(name="powerState", visibility=["read"]) """The Power State of the cluster.""" - creation_data: Optional["_models.CreationData"] = rest_field( - name="creationData", visibility=["read", "create", "update", "delete", "query"] - ) - """CreationData to be used to specify the source Snapshot ID if the cluster will be - created/upgraded using a snapshot.""" max_agent_pools: Optional[int] = rest_field(name="maxAgentPools", visibility=["read"]) """The max number of agent pools for the managed cluster.""" kubernetes_version: Optional[str] = rest_field( @@ -9627,20 +7005,6 @@ class ManagedClusterProperties(_Model): ) """The support plan for the Managed Cluster. If unspecified, the default is 'KubernetesOfficial'. Known values are: \"KubernetesOfficial\" and \"AKSLongTermSupport\".""" - enable_fips: Optional[bool] = rest_field( - name="enableFIPS", visibility=["read", "create", "update", "delete", "query"] - ) - """Whether to enable FIPS mode at the cluster level. When enabled, this setting enforces FIPS - compliance for all AKS-managed components, such as the node operating system, addons, and - `managed containerized components `_. See `Enable - cluster-wide FIPS `_ for more details. When this property is enabled, - all node pools in the cluster must also be FIPS-enabled.""" - enable_namespace_resources: Optional[bool] = rest_field( - name="enableNamespaceResources", visibility=["read", "create", "update", "delete", "query"] - ) - """Enable namespace as Azure resource. The default value is false. It can be enabled/disabled on - creation and updating of the managed cluster. See `https://aka.ms/NamespaceARMResource - `_ for more details on Namespace as a ARM Resource.""" network_profile: Optional["_models.ContainerServiceNetworkProfile"] = rest_field( name="networkProfile", visibility=["read", "create", "update", "delete", "query"] ) @@ -9709,7 +7073,7 @@ class ManagedClusterProperties(_Model): name="publicNetworkAccess", visibility=["read", "create", "update", "delete", "query"] ) """PublicNetworkAccess of the managedCluster. Allow or deny public network access for AKS. Known - values are: \"Enabled\", \"Disabled\", and \"SecuredByPerimeter\".""" + values are: \"Enabled\" and \"Disabled\".""" workload_auto_scaler_profile: Optional["_models.ManagedClusterWorkloadAutoScalerProfile"] = rest_field( name="workloadAutoScalerProfile", visibility=["read", "create", "update", "delete", "query"] ) @@ -9741,29 +7105,12 @@ class ManagedClusterProperties(_Model): name="aiToolchainOperatorProfile", visibility=["read", "create", "update", "delete", "query"] ) """AI toolchain operator settings that apply to the whole cluster.""" - scheduler_profile: Optional["_models.SchedulerProfile"] = rest_field( - name="schedulerProfile", visibility=["read", "create", "update", "delete", "query"] - ) - """Profile of the pod scheduler configuration.""" hosted_system_profile: Optional["_models.ManagedClusterHostedSystemProfile"] = rest_field( name="hostedSystemProfile", visibility=["read", "create", "update", "delete", "query"] ) """Settings for hosted system addons. For more information, see `https://aka.ms/aks/automatic/systemcomponents `_.""" - health_monitor_profile: Optional["_models.ManagedClusterHealthMonitorProfile"] = rest_field( - name="healthMonitorProfile", visibility=["read", "create", "update", "delete", "query"] - ) - """Health monitor profile for the managed cluster.""" - control_plane_scaling_profile: Optional["_models.ManagedClusterControlPlaneScalingProfile"] = rest_field( - name="controlPlaneScalingProfile", visibility=["read", "create", "update", "delete", "query"] - ) - """Profile for providing scaled and performance guaranteed control plane capacity to deliver - consistent performance under high workload. Requires Kubernetes version 1.33.0 or later.""" - node_disruption_profile: Optional["_models.NodeDisruptionProfile"] = rest_field( - name="nodeDisruptionProfile", visibility=["read", "create", "update", "delete", "query"] - ) - """Node disruption profile for a managed cluster.""" status: Optional["_models.ManagedClusterStatus"] = rest_field( visibility=["read", "create", "update", "delete", "query"] ) @@ -9773,7 +7120,6 @@ class ManagedClusterProperties(_Model): def __init__( # pylint: disable=too-many-locals self, *, - creation_data: Optional["_models.CreationData"] = None, kubernetes_version: Optional[str] = None, dns_prefix: Optional[str] = None, fqdn_subdomain: Optional[str] = None, @@ -9788,8 +7134,6 @@ def __init__( # pylint: disable=too-many-locals node_resource_group_profile: Optional["_models.ManagedClusterNodeResourceGroupProfile"] = None, enable_rbac: Optional[bool] = None, support_plan: Optional[Union[str, "_models.KubernetesSupportPlan"]] = None, - enable_fips: Optional[bool] = None, - enable_namespace_resources: Optional[bool] = None, network_profile: Optional["_models.ContainerServiceNetworkProfile"] = None, aad_profile: Optional["_models.ManagedClusterAADProfile"] = None, auto_upgrade_profile: Optional["_models.ManagedClusterAutoUpgradeProfile"] = None, @@ -9812,11 +7156,7 @@ def __init__( # pylint: disable=too-many-locals node_provisioning_profile: Optional["_models.ManagedClusterNodeProvisioningProfile"] = None, bootstrap_profile: Optional["_models.ManagedClusterBootstrapProfile"] = None, ai_toolchain_operator_profile: Optional["_models.ManagedClusterAIToolchainOperatorProfile"] = None, - scheduler_profile: Optional["_models.SchedulerProfile"] = None, hosted_system_profile: Optional["_models.ManagedClusterHostedSystemProfile"] = None, - health_monitor_profile: Optional["_models.ManagedClusterHealthMonitorProfile"] = None, - control_plane_scaling_profile: Optional["_models.ManagedClusterControlPlaneScalingProfile"] = None, - node_disruption_profile: Optional["_models.NodeDisruptionProfile"] = None, status: Optional["_models.ManagedClusterStatus"] = None, ) -> None: ... @@ -10070,31 +7410,6 @@ def __init__(self, *args: Any, **kwargs: Any) -> None: super().__init__(*args, **kwargs) -class ManagedClusterPropertiesForSnapshot(_Model): - """managed cluster properties for snapshot, these properties are read only. - - :ivar kubernetes_version: The current kubernetes version. - :vartype kubernetes_version: str - :ivar sku: The current managed cluster sku. - :vartype sku: ~azure.mgmt.containerservice.models.ManagedClusterSKU - :ivar enable_rbac: Whether the cluster has enabled Kubernetes Role-Based Access Control or not. - :vartype enable_rbac: bool - :ivar network_profile: The current network profile. - :vartype network_profile: ~azure.mgmt.containerservice.models.NetworkProfileForSnapshot - """ - - kubernetes_version: Optional[str] = rest_field(name="kubernetesVersion", visibility=["read"]) - """The current kubernetes version.""" - sku: Optional["_models.ManagedClusterSKU"] = rest_field(visibility=["read"]) - """The current managed cluster sku.""" - enable_rbac: Optional[bool] = rest_field(name="enableRbac", visibility=["read"]) - """Whether the cluster has enabled Kubernetes Role-Based Access Control or not.""" - network_profile: Optional["_models.NetworkProfileForSnapshot"] = rest_field( - name="networkProfile", visibility=["read"] - ) - """The current network profile.""" - - class ManagedClusterSecurityProfile(_Model): """Security profile for the container service cluster. @@ -10104,12 +7419,6 @@ class ManagedClusterSecurityProfile(_Model): `_ settings for the security profile. :vartype azure_key_vault_kms: ~azure.mgmt.containerservice.models.AzureKeyVaultKms - :ivar kubernetes_resource_object_encryption_profile: Encryption at rest of Kubernetes resource - objects. More information on this can be found under - `https://aka.ms/aks/kubernetesResourceObjectEncryption - `_. - :vartype kubernetes_resource_object_encryption_profile: - ~azure.mgmt.containerservice.models.KubernetesResourceObjectEncryptionProfile :ivar workload_identity: Workload identity settings for the security profile. Workload identity enables Kubernetes applications to access Azure cloud resources securely with Azure AD. See `https://aka.ms/aks/wi `_ for more details. @@ -10118,24 +7427,10 @@ class ManagedClusterSecurityProfile(_Model): :ivar image_cleaner: Image Cleaner settings for the security profile. :vartype image_cleaner: ~azure.mgmt.containerservice.models.ManagedClusterSecurityProfileImageCleaner - :ivar image_integrity: Image integrity is a feature that works with Azure Policy to verify - image integrity by signature. This will not have any effect unless Azure Policy is applied to - enforce image signatures. See `https://aka.ms/aks/image-integrity - `_ for how to use this feature via policy. - :vartype image_integrity: - ~azure.mgmt.containerservice.models.ManagedClusterSecurityProfileImageIntegrity - :ivar node_restriction: `Node Restriction - `_ - settings for the security profile. - :vartype node_restriction: - ~azure.mgmt.containerservice.models.ManagedClusterSecurityProfileNodeRestriction :ivar custom_ca_trust_certificates: A list of up to 10 base64 encoded CAs that will be added to the trust store on all nodes in the cluster. For more information see `Custom CA Trust Certificates `_. :vartype custom_ca_trust_certificates: list[bytes] - :ivar service_account_image_pull_profile: Defines service account based image pull settings. - :vartype service_account_image_pull_profile: - ~azure.mgmt.containerservice.models.ServiceAccountImagePullProfile """ defender: Optional["_models.ManagedClusterSecurityProfileDefender"] = rest_field( @@ -10148,14 +7443,6 @@ class ManagedClusterSecurityProfile(_Model): """Azure Key Vault `key management service `_ settings for the security profile.""" - kubernetes_resource_object_encryption_profile: Optional["_models.KubernetesResourceObjectEncryptionProfile"] = ( - rest_field( - name="kubernetesResourceObjectEncryptionProfile", visibility=["read", "create", "update", "delete", "query"] - ) - ) - """Encryption at rest of Kubernetes resource objects. More information on this can be found under - `https://aka.ms/aks/kubernetesResourceObjectEncryption - `_.""" workload_identity: Optional["_models.ManagedClusterSecurityProfileWorkloadIdentity"] = rest_field( name="workloadIdentity", visibility=["read", "create", "update", "delete", "query"] ) @@ -10166,29 +7453,12 @@ class ManagedClusterSecurityProfile(_Model): name="imageCleaner", visibility=["read", "create", "update", "delete", "query"] ) """Image Cleaner settings for the security profile.""" - image_integrity: Optional["_models.ManagedClusterSecurityProfileImageIntegrity"] = rest_field( - name="imageIntegrity", visibility=["read", "create", "update", "delete", "query"] - ) - """Image integrity is a feature that works with Azure Policy to verify image integrity by - signature. This will not have any effect unless Azure Policy is applied to enforce image - signatures. See `https://aka.ms/aks/image-integrity `_ for - how to use this feature via policy.""" - node_restriction: Optional["_models.ManagedClusterSecurityProfileNodeRestriction"] = rest_field( - name="nodeRestriction", visibility=["read", "create", "update", "delete", "query"] - ) - """`Node Restriction - `_ - settings for the security profile.""" custom_ca_trust_certificates: Optional[list[bytes]] = rest_field( name="customCATrustCertificates", visibility=["read", "create", "update", "delete", "query"], format="base64" ) """A list of up to 10 base64 encoded CAs that will be added to the trust store on all nodes in the cluster. For more information see `Custom CA Trust Certificates `_.""" - service_account_image_pull_profile: Optional["_models.ServiceAccountImagePullProfile"] = rest_field( - name="serviceAccountImagePullProfile", visibility=["read", "create", "update", "delete", "query"] - ) - """Defines service account based image pull settings.""" @overload def __init__( @@ -10196,15 +7466,9 @@ def __init__( *, defender: Optional["_models.ManagedClusterSecurityProfileDefender"] = None, azure_key_vault_kms: Optional["_models.AzureKeyVaultKms"] = None, - kubernetes_resource_object_encryption_profile: Optional[ - "_models.KubernetesResourceObjectEncryptionProfile" - ] = None, workload_identity: Optional["_models.ManagedClusterSecurityProfileWorkloadIdentity"] = None, image_cleaner: Optional["_models.ManagedClusterSecurityProfileImageCleaner"] = None, - image_integrity: Optional["_models.ManagedClusterSecurityProfileImageIntegrity"] = None, - node_restriction: Optional["_models.ManagedClusterSecurityProfileNodeRestriction"] = None, custom_ca_trust_certificates: Optional[list[bytes]] = None, - service_account_image_pull_profile: Optional["_models.ServiceAccountImagePullProfile"] = None, ) -> None: ... @overload @@ -10230,12 +7494,6 @@ class ManagedClusterSecurityProfileDefender(_Model): security profile. :vartype security_monitoring: ~azure.mgmt.containerservice.models.ManagedClusterSecurityProfileDefenderSecurityMonitoring - :ivar security_gating: Microsoft Defender settings for security gating, validates container - images eligibility for deployment based on Defender for Containers security findings. Using - Admission Controller, it either audits or prevents the deployment of images that do not meet - security standards. - :vartype security_gating: - ~azure.mgmt.containerservice.models.ManagedClusterSecurityProfileDefenderSecurityGating """ log_analytics_workspace_resource_id: Optional[str] = rest_field( @@ -10248,12 +7506,6 @@ class ManagedClusterSecurityProfileDefender(_Model): name="securityMonitoring", visibility=["read", "create", "update", "delete", "query"] ) """Microsoft Defender threat detection for Cloud settings for the security profile.""" - security_gating: Optional["_models.ManagedClusterSecurityProfileDefenderSecurityGating"] = rest_field( - name="securityGating", visibility=["read", "create", "update", "delete", "query"] - ) - """Microsoft Defender settings for security gating, validates container images eligibility for - deployment based on Defender for Containers security findings. Using Admission Controller, it - either audits or prevents the deployment of images that do not meet security standards.""" @overload def __init__( @@ -10261,108 +7513,6 @@ def __init__( *, log_analytics_workspace_resource_id: Optional[str] = None, security_monitoring: Optional["_models.ManagedClusterSecurityProfileDefenderSecurityMonitoring"] = None, - security_gating: Optional["_models.ManagedClusterSecurityProfileDefenderSecurityGating"] = None, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - - -class ManagedClusterSecurityProfileDefenderSecurityGating(_Model): # pylint: disable=name-too-long - """Microsoft Defender settings for security gating, validates container images eligibility for - deployment based on Defender for Containers security findings. Using Admission Controller, it - either audits or prevents the deployment of images that do not meet security standards. - - :ivar enabled: Whether to enable Defender security gating. When enabled, the gating feature - will scan container images and audit or block the deployment of images that do not meet - security standards according to the configured security rules. - :vartype enabled: bool - :ivar identities: List of identities that the admission controller will make use of in order to - pull security artifacts from the registry. These are the same identities used by the cluster to - pull container images. Each identity provided should have federated identity credential - attached to it. - :vartype identities: - list[~azure.mgmt.containerservice.models.ManagedClusterSecurityProfileDefenderSecurityGatingIdentitiesItem] - :ivar allow_secret_access: In use only while registry access granted by secret rather than - managed identity. Set whether to grant the Defender gating agent access to the cluster's - secrets for pulling images from registries. If secret access is denied and the registry - requires pull secrets, the add-on will not perform any image validation. Default value is - false. - :vartype allow_secret_access: bool - """ - - enabled: Optional[bool] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """Whether to enable Defender security gating. When enabled, the gating feature will scan - container images and audit or block the deployment of images that do not meet security - standards according to the configured security rules.""" - identities: Optional[list["_models.ManagedClusterSecurityProfileDefenderSecurityGatingIdentitiesItem"]] = ( - rest_field(visibility=["read", "create", "update", "delete", "query"]) - ) - """List of identities that the admission controller will make use of in order to pull security - artifacts from the registry. These are the same identities used by the cluster to pull - container images. Each identity provided should have federated identity credential attached to - it.""" - allow_secret_access: Optional[bool] = rest_field( - name="allowSecretAccess", visibility=["read", "create", "update", "delete", "query"] - ) - """In use only while registry access granted by secret rather than managed identity. Set whether - to grant the Defender gating agent access to the cluster's secrets for pulling images from - registries. If secret access is denied and the registry requires pull secrets, the add-on will - not perform any image validation. Default value is false.""" - - @overload - def __init__( - self, - *, - enabled: Optional[bool] = None, - identities: Optional[list["_models.ManagedClusterSecurityProfileDefenderSecurityGatingIdentitiesItem"]] = None, - allow_secret_access: Optional[bool] = None, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - - -class ManagedClusterSecurityProfileDefenderSecurityGatingIdentitiesItem(_Model): # pylint: disable=name-too-long - """Identity information used by Defender security gating to access container registries. - - :ivar azure_container_registry: The container registry for which the identity will be used; the - identity specified here should have a federated identity credential attached to it. - :vartype azure_container_registry: str - :ivar identity: The identity object used to access the registry. - :vartype identity: ~azure.mgmt.containerservice.models.UserAssignedIdentity - """ - - azure_container_registry: Optional[str] = rest_field( - name="azureContainerRegistry", visibility=["read", "create", "update", "delete", "query"] - ) - """The container registry for which the identity will be used; the identity specified here should - have a federated identity credential attached to it.""" - identity: Optional["_models.UserAssignedIdentity"] = rest_field( - visibility=["read", "create", "update", "delete", "query"] - ) - """The identity object used to access the registry.""" - - @overload - def __init__( - self, - *, - azure_container_registry: Optional[str] = None, - identity: Optional["_models.UserAssignedIdentity"] = None, ) -> None: ... @overload @@ -10440,62 +7590,6 @@ def __init__(self, *args: Any, **kwargs: Any) -> None: super().__init__(*args, **kwargs) -class ManagedClusterSecurityProfileImageIntegrity(_Model): # pylint: disable=name-too-long - """Image integrity related settings for the security profile. - - :ivar enabled: Whether to enable image integrity. The default value is false. - :vartype enabled: bool - """ - - enabled: Optional[bool] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """Whether to enable image integrity. The default value is false.""" - - @overload - def __init__( - self, - *, - enabled: Optional[bool] = None, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - - -class ManagedClusterSecurityProfileNodeRestriction(_Model): # pylint: disable=name-too-long - """Node Restriction settings for the security profile. - - :ivar enabled: Whether to enable Node Restriction. - :vartype enabled: bool - """ - - enabled: Optional[bool] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """Whether to enable Node Restriction.""" - - @overload - def __init__( - self, - *, - enabled: Optional[bool] = None, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - - class ManagedClusterSecurityProfileWorkloadIdentity(_Model): # pylint: disable=name-too-long """Workload identity settings for the security profile. @@ -10578,130 +7672,14 @@ class ManagedClusterSKU(_Model): ) """The tier of a managed cluster SKU. If not specified, the default is 'Free'. See `AKS Pricing Tier `_ for more details. - Known values are: \"Premium\", \"Standard\", and \"Free\".""" - - @overload - def __init__( - self, - *, - name: Optional[Union[str, "_models.ManagedClusterSKUName"]] = None, - tier: Optional[Union[str, "_models.ManagedClusterSKUTier"]] = None, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - - -class ManagedClusterSnapshot(TrackedResource): - """A managed cluster snapshot resource. - - :ivar id: Fully qualified resource ID for the resource. Ex - - /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}. - :vartype id: str - :ivar name: The name of the resource. - :vartype name: str - :ivar type: The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or - "Microsoft.Storage/storageAccounts". - :vartype type: str - :ivar system_data: Azure Resource Manager metadata containing createdBy and modifiedBy - information. - :vartype system_data: ~azure.mgmt.containerservice.models.SystemData - :ivar tags: Resource tags. - :vartype tags: dict[str, str] - :ivar location: The geo-location where the resource lives. Required. - :vartype location: str - :ivar properties: Properties of a managed cluster snapshot. - :vartype properties: ~azure.mgmt.containerservice.models.ManagedClusterSnapshotProperties - """ - - properties: Optional["_models.ManagedClusterSnapshotProperties"] = rest_field( - visibility=["read", "create", "update", "delete", "query"] - ) - """Properties of a managed cluster snapshot.""" - - __flattened_items = ["creation_data", "snapshot_type", "managed_cluster_properties_read_only"] - - @overload - def __init__( - self, - *, - location: str, - tags: Optional[dict[str, str]] = None, - properties: Optional["_models.ManagedClusterSnapshotProperties"] = None, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - _flattened_input = {k: kwargs.pop(k) for k in kwargs.keys() & self.__flattened_items} - super().__init__(*args, **kwargs) - for k, v in _flattened_input.items(): - setattr(self, k, v) - - def __getattr__(self, name: str) -> Any: - if name in self.__flattened_items: - if self.properties is None: - return None - return getattr(self.properties, name) - raise AttributeError(f"'{self.__class__.__name__}' object has no attribute '{name}'") - - def __setattr__(self, key: str, value: Any) -> None: - if key in self.__flattened_items: - if self.properties is None: - self.properties = self._attr_to_rest_field["properties"]._class_type() - setattr(self.properties, key, value) - else: - super().__setattr__(key, value) - - -class ManagedClusterSnapshotProperties(_Model): - """Properties for a managed cluster snapshot. - - :ivar creation_data: CreationData to be used to specify the source resource ID to create this - snapshot. - :vartype creation_data: ~azure.mgmt.containerservice.models.CreationData - :ivar snapshot_type: The type of a snapshot. The default is NodePool. Known values are: - "NodePool" and "ManagedCluster". - :vartype snapshot_type: str or ~azure.mgmt.containerservice.models.SnapshotType - :ivar managed_cluster_properties_read_only: What the properties will be showed when getting - managed cluster snapshot. Those properties are read-only. - :vartype managed_cluster_properties_read_only: - ~azure.mgmt.containerservice.models.ManagedClusterPropertiesForSnapshot - """ - - creation_data: Optional["_models.CreationData"] = rest_field( - name="creationData", visibility=["read", "create", "update", "delete", "query"] - ) - """CreationData to be used to specify the source resource ID to create this snapshot.""" - snapshot_type: Optional[Union[str, "_models.SnapshotType"]] = rest_field( - name="snapshotType", visibility=["read", "create", "update", "delete", "query"] - ) - """The type of a snapshot. The default is NodePool. Known values are: \"NodePool\" and - \"ManagedCluster\".""" - managed_cluster_properties_read_only: Optional["_models.ManagedClusterPropertiesForSnapshot"] = rest_field( - name="managedClusterPropertiesReadOnly", visibility=["read"] - ) - """What the properties will be showed when getting managed cluster snapshot. Those properties are - read-only.""" + Known values are: \"Premium\", \"Standard\", and \"Free\".""" @overload def __init__( self, *, - creation_data: Optional["_models.CreationData"] = None, - snapshot_type: Optional[Union[str, "_models.SnapshotType"]] = None, + name: Optional[Union[str, "_models.ManagedClusterSKUName"]] = None, + tier: Optional[Union[str, "_models.ManagedClusterSKUTier"]] = None, ) -> None: ... @overload @@ -11218,25 +8196,16 @@ class ManagedClusterWorkloadAutoScalerProfileVerticalPodAutoscaler(_Model): # p :ivar enabled: Whether to enable VPA. Default value is false. Required. :vartype enabled: bool - :ivar addon_autoscaling: Whether VPA add-on is enabled and configured to scale AKS-managed - add-ons. Known values are: "Enabled" and "Disabled". - :vartype addon_autoscaling: str or ~azure.mgmt.containerservice.models.AddonAutoscaling """ enabled: bool = rest_field(visibility=["read", "create", "update", "delete", "query"]) """Whether to enable VPA. Default value is false. Required.""" - addon_autoscaling: Optional[Union[str, "_models.AddonAutoscaling"]] = rest_field( - name="addonAutoscaling", visibility=["read", "create", "update", "delete", "query"] - ) - """Whether VPA add-on is enabled and configured to scale AKS-managed add-ons. Known values are: - \"Enabled\" and \"Disabled\".""" @overload def __init__( self, *, enabled: bool, - addon_autoscaling: Optional[Union[str, "_models.AddonAutoscaling"]] = None, ) -> None: ... @overload @@ -11357,162 +8326,6 @@ def __init__(self, *args: Any, **kwargs: Any) -> None: super().__init__(*args, **kwargs) -class MeshMembership(ProxyResource): - """Mesh membership of a managed cluster. - - :ivar id: Fully qualified resource ID for the resource. Ex - - /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}. - :vartype id: str - :ivar name: The name of the resource. - :vartype name: str - :ivar type: The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or - "Microsoft.Storage/storageAccounts". - :vartype type: str - :ivar system_data: Azure Resource Manager metadata containing createdBy and modifiedBy - information. - :vartype system_data: ~azure.mgmt.containerservice.models.SystemData - :ivar properties: Mesh membership properties of a managed cluster. - :vartype properties: ~azure.mgmt.containerservice.models.MeshMembershipProperties - :ivar managed_by: The fully qualified resource ID of the resource that manages this resource. - Indicates if this resource is managed by another Azure resource. If this is present, complete - mode deployment will not delete the resource if it is removed from the template since it is - managed by another resource. - :vartype managed_by: str - :ivar e_tag: If eTag is provided in the response body, it may also be provided as a header per - the normal etag convention. Entity tags are used for comparing two or more entities from the - same requested resource. HTTP/1.1 uses entity tags in the etag (section 14.19), If-Match - (section 14.24), If-None-Match (section 14.26), and If-Range (section 14.27) header fields. - :vartype e_tag: str - """ - - properties: Optional["_models.MeshMembershipProperties"] = rest_field( - visibility=["read", "create", "update", "delete", "query"] - ) - """Mesh membership properties of a managed cluster.""" - managed_by: Optional[str] = rest_field(name="managedBy", visibility=["read", "create", "update"]) - """The fully qualified resource ID of the resource that manages this resource. Indicates if this - resource is managed by another Azure resource. If this is present, complete mode deployment - will not delete the resource if it is removed from the template since it is managed by another - resource.""" - e_tag: Optional[str] = rest_field(name="eTag", visibility=["read"]) - """If eTag is provided in the response body, it may also be provided as a header per the normal - etag convention. Entity tags are used for comparing two or more entities from the same - requested resource. HTTP/1.1 uses entity tags in the etag (section 14.19), If-Match (section - 14.24), If-None-Match (section 14.26), and If-Range (section 14.27) header fields.""" - - @overload - def __init__( - self, - *, - properties: Optional["_models.MeshMembershipProperties"] = None, - managed_by: Optional[str] = None, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - - -class MeshMembershipPrivateConnectProfile(_Model): - """Private connect profile for mesh membership. - - :ivar private_ip_address: The private IP address of the member cluster private FQDN. This is a - read-only property populated by the service. - :vartype private_ip_address: str - :ivar subnet_resource_id: The delegated subnet resource ID. Customer can provide their own - subnet, or AKS will allocate one if not specified. When providing your own subnet, the minimum - required size is /28. - :vartype subnet_resource_id: str - """ - - private_ip_address: Optional[str] = rest_field(name="privateIpAddress", visibility=["read"]) - """The private IP address of the member cluster private FQDN. This is a read-only property - populated by the service.""" - subnet_resource_id: Optional[str] = rest_field( - name="subnetResourceId", visibility=["read", "create", "update", "delete", "query"] - ) - """The delegated subnet resource ID. Customer can provide their own subnet, or AKS will allocate - one if not specified. When providing your own subnet, the minimum required size is /28.""" - - @overload - def __init__( - self, - *, - subnet_resource_id: Optional[str] = None, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - - -class MeshMembershipProperties(_Model): - """Mesh membership properties of a managed cluster. - - :ivar provisioning_state: The current provisioning state of the Mesh Membership. Known values - are: "Canceled", "Creating", "Deleting", "Failed", "Succeeded", and "Updating". - :vartype provisioning_state: str or - ~azure.mgmt.containerservice.models.MeshMembershipProvisioningState - :ivar private_connect_profile: Profile for configuring private connectivity between the mesh - control plane and member clusters. When configured, communication between the mesh control - plane and this member cluster occurs over private network instead of public networks. Visit - `https://aka.ms/applink `_ for more information. - :vartype private_connect_profile: - ~azure.mgmt.containerservice.models.MeshMembershipPrivateConnectProfile - :ivar managed_mesh_id: The ARM resource id for the managed mesh member. This is of the form: - '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.AppLink/applinks/{appLinkName}/appLinkMembers/{appLinkMemberName}'. - Visit `https://aka.ms/applink `_ for more information. Required. - :vartype managed_mesh_id: str - """ - - provisioning_state: Optional[Union[str, "_models.MeshMembershipProvisioningState"]] = rest_field( - name="provisioningState", visibility=["read"] - ) - """The current provisioning state of the Mesh Membership. Known values are: \"Canceled\", - \"Creating\", \"Deleting\", \"Failed\", \"Succeeded\", and \"Updating\".""" - private_connect_profile: Optional["_models.MeshMembershipPrivateConnectProfile"] = rest_field( - name="privateConnectProfile", visibility=["read", "create", "update", "delete", "query"] - ) - """Profile for configuring private connectivity between the mesh control plane and member - clusters. When configured, communication between the mesh control plane and this member cluster - occurs over private network instead of public networks. Visit `https://aka.ms/applink - `_ for more information.""" - managed_mesh_id: str = rest_field(name="managedMeshID", visibility=["read", "create", "update", "delete", "query"]) - """The ARM resource id for the managed mesh member. This is of the form: - '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.AppLink/applinks/{appLinkName}/appLinkMembers/{appLinkMemberName}'. - Visit `https://aka.ms/applink `_ for more information. Required.""" - - @overload - def __init__( - self, - *, - managed_mesh_id: str, - private_connect_profile: Optional["_models.MeshMembershipPrivateConnectProfile"] = None, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - - class MeshRevision(_Model): """Holds information on upgrades and compatibility for given major.minor mesh release. @@ -11794,308 +8607,34 @@ def __init__(self, *args: Any, **kwargs: Any) -> None: super().__init__(*args, **kwargs) -class NetworkPolicies(_Model): - """Default network policy of the namespace, specifying ingress and egress rules. - - :ivar ingress: Enum representing different network policy rules. Known values are: "DenyAll", - "AllowAll", and "AllowSameNamespace". - :vartype ingress: str or ~azure.mgmt.containerservice.models.PolicyRule - :ivar egress: Enum representing different network policy rules. Known values are: "DenyAll", - "AllowAll", and "AllowSameNamespace". - :vartype egress: str or ~azure.mgmt.containerservice.models.PolicyRule - """ - - ingress: Optional[Union[str, "_models.PolicyRule"]] = rest_field( - visibility=["read", "create", "update", "delete", "query"] - ) - """Enum representing different network policy rules. Known values are: \"DenyAll\", \"AllowAll\", - and \"AllowSameNamespace\".""" - egress: Optional[Union[str, "_models.PolicyRule"]] = rest_field( - visibility=["read", "create", "update", "delete", "query"] - ) - """Enum representing different network policy rules. Known values are: \"DenyAll\", \"AllowAll\", - and \"AllowSameNamespace\".""" - - @overload - def __init__( - self, - *, - ingress: Optional[Union[str, "_models.PolicyRule"]] = None, - egress: Optional[Union[str, "_models.PolicyRule"]] = None, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - - -class NetworkProfileForSnapshot(_Model): - """network profile for managed cluster snapshot, these properties are read only. - - :ivar network_plugin: networkPlugin for managed cluster snapshot. Known values are: "azure", - "kubenet", and "none". - :vartype network_plugin: str or ~azure.mgmt.containerservice.models.NetworkPlugin - :ivar network_plugin_mode: NetworkPluginMode for managed cluster snapshot. "overlay" - :vartype network_plugin_mode: str or ~azure.mgmt.containerservice.models.NetworkPluginMode - :ivar network_policy: networkPolicy for managed cluster snapshot. Known values are: "none", - "calico", "azure", and "cilium". - :vartype network_policy: str or ~azure.mgmt.containerservice.models.NetworkPolicy - :ivar network_mode: networkMode for managed cluster snapshot. Known values are: "transparent" - and "bridge". - :vartype network_mode: str or ~azure.mgmt.containerservice.models.NetworkMode - :ivar load_balancer_sku: loadBalancerSku for managed cluster snapshot. Known values are: - "standard" and "basic". - :vartype load_balancer_sku: str or ~azure.mgmt.containerservice.models.LoadBalancerSku - """ - - network_plugin: Optional[Union[str, "_models.NetworkPlugin"]] = rest_field( - name="networkPlugin", visibility=["read", "create", "update", "delete", "query"] - ) - """networkPlugin for managed cluster snapshot. Known values are: \"azure\", \"kubenet\", and - \"none\".""" - network_plugin_mode: Optional[Union[str, "_models.NetworkPluginMode"]] = rest_field( - name="networkPluginMode", visibility=["read", "create", "update", "delete", "query"] - ) - """NetworkPluginMode for managed cluster snapshot. \"overlay\"""" - network_policy: Optional[Union[str, "_models.NetworkPolicy"]] = rest_field( - name="networkPolicy", visibility=["read", "create", "update", "delete", "query"] - ) - """networkPolicy for managed cluster snapshot. Known values are: \"none\", \"calico\", \"azure\", - and \"cilium\".""" - network_mode: Optional[Union[str, "_models.NetworkMode"]] = rest_field( - name="networkMode", visibility=["read", "create", "update", "delete", "query"] - ) - """networkMode for managed cluster snapshot. Known values are: \"transparent\" and \"bridge\".""" - load_balancer_sku: Optional[Union[str, "_models.LoadBalancerSku"]] = rest_field( - name="loadBalancerSku", visibility=["read", "create", "update", "delete", "query"] - ) - """loadBalancerSku for managed cluster snapshot. Known values are: \"standard\" and \"basic\".""" - - @overload - def __init__( - self, - *, - network_plugin: Optional[Union[str, "_models.NetworkPlugin"]] = None, - network_plugin_mode: Optional[Union[str, "_models.NetworkPluginMode"]] = None, - network_policy: Optional[Union[str, "_models.NetworkPolicy"]] = None, - network_mode: Optional[Union[str, "_models.NetworkMode"]] = None, - load_balancer_sku: Optional[Union[str, "_models.LoadBalancerSku"]] = None, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - - -class NodeDisruptionProfile(_Model): - """Node disruption profile for a managed cluster. - - :ivar node_disruption_policy: The policy configuration for when to allow certain operations - which require node re-image and trigger redeployment. For example, some operations, such as - updating the .properties.ManagedClusterSecurityProfile.customCATrustCertificates field on an - existing managed cluster, trigger rolling updates of the nodes. This setting allows control - over when such updates are accepted. The default is 'Allow'. For a full list of covered - operations see aka.ms/aks/nodedisruptionpolicy". Known values are: "Allow", - "AllowDuringMaintenanceWindow", and "Block". - :vartype node_disruption_policy: str or - ~azure.mgmt.containerservice.models.NodeDisruptionPolicy - """ - - node_disruption_policy: Optional[Union[str, "_models.NodeDisruptionPolicy"]] = rest_field( - name="nodeDisruptionPolicy", visibility=["read", "create", "update", "delete", "query"] - ) - """The policy configuration for when to allow certain operations which require node re-image and - trigger redeployment. For example, some operations, such as updating the - .properties.ManagedClusterSecurityProfile.customCATrustCertificates field on an existing - managed cluster, trigger rolling updates of the nodes. This setting allows control over when - such updates are accepted. The default is 'Allow'. For a full list of covered operations see - aka.ms/aks/nodedisruptionpolicy\". Known values are: \"Allow\", - \"AllowDuringMaintenanceWindow\", and \"Block\".""" - - @overload - def __init__( - self, - *, - node_disruption_policy: Optional[Union[str, "_models.NodeDisruptionPolicy"]] = None, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - - -class NodeImageVersion(_Model): - """node image version profile for given major.minor.patch release. - - :ivar os: The operating system of the node image. Example: AKSUbuntu. - :vartype os: str - :ivar sku: The SKU or flavor of the node image. Example: 2004gen2containerd. - :vartype sku: str - :ivar version: major.minor.patch version of the node image version release. Example: - 2024.02.02. - :vartype version: str - :ivar full_name: The OS + SKU + version of the node image. Example: - AKSUbuntu-1804gen2containerd-2024.02.02. - :vartype full_name: str - """ - - os: Optional[str] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The operating system of the node image. Example: AKSUbuntu.""" - sku: Optional[str] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The SKU or flavor of the node image. Example: 2004gen2containerd.""" - version: Optional[str] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """major.minor.patch version of the node image version release. Example: 2024.02.02.""" - full_name: Optional[str] = rest_field(name="fullName", visibility=["read", "create", "update", "delete", "query"]) - """The OS + SKU + version of the node image. Example: AKSUbuntu-1804gen2containerd-2024.02.02.""" - - @overload - def __init__( - self, - *, - os: Optional[str] = None, - sku: Optional[str] = None, - version: Optional[str] = None, - full_name: Optional[str] = None, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - - -class NvidiaGPUProfile(_Model): - """NVIDIA-specific GPU settings. - - :ivar management_mode: The Managed GPU experience installs additional components, such as the - Data Center GPU Manager (DCGM) metrics for monitoring, on top of the GPU driver for you. For - more details of what is installed, check out aka.ms/aks/managed-gpu. Known values are: - "Unmanaged" and "Managed". - :vartype management_mode: str or ~azure.mgmt.containerservice.models.ManagementMode - :ivar mig_strategy: Sets the MIG (Multi-Instance GPU) strategy that will be used for managed - MIG support. For more information about the different strategies, visit aka.ms/aks/managed-gpu. - When not specified, the default is None. Known values are: "None", "Single", and "Mixed". - :vartype mig_strategy: str or ~azure.mgmt.containerservice.models.MigStrategy - """ - - management_mode: Optional[Union[str, "_models.ManagementMode"]] = rest_field( - name="managementMode", visibility=["read", "create", "update", "delete", "query"] - ) - """The Managed GPU experience installs additional components, such as the Data Center GPU Manager - (DCGM) metrics for monitoring, on top of the GPU driver for you. For more details of what is - installed, check out aka.ms/aks/managed-gpu. Known values are: \"Unmanaged\" and \"Managed\".""" - mig_strategy: Optional[Union[str, "_models.MigStrategy"]] = rest_field( - name="migStrategy", visibility=["read", "create", "update", "delete", "query"] - ) - """Sets the MIG (Multi-Instance GPU) strategy that will be used for managed MIG support. For more - information about the different strategies, visit aka.ms/aks/managed-gpu. When not specified, - the default is None. Known values are: \"None\", \"Single\", and \"Mixed\".""" - - @overload - def __init__( - self, - *, - management_mode: Optional[Union[str, "_models.ManagementMode"]] = None, - mig_strategy: Optional[Union[str, "_models.MigStrategy"]] = None, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - - -class OperationStatusResult(_Model): - """The current status of an async operation. - - :ivar id: Fully qualified ID for the async operation. - :vartype id: str - :ivar name: Name of the async operation. - :vartype name: str - :ivar status: Operation status. Required. - :vartype status: str - :ivar percent_complete: Percent of the operation that is complete. - :vartype percent_complete: float - :ivar start_time: The start time of the operation. - :vartype start_time: ~datetime.datetime - :ivar end_time: The end time of the operation. - :vartype end_time: ~datetime.datetime - :ivar operations: The operations list. - :vartype operations: list[~azure.mgmt.containerservice.models.OperationStatusResult] - :ivar error: If present, details of the operation error. - :vartype error: ~azure.mgmt.containerservice.models.ErrorDetail - :ivar resource_id: Fully qualified ID of the resource against which the original async - operation was started. - :vartype resource_id: str +class NetworkPolicies(_Model): + """Default network policy of the namespace, specifying ingress and egress rules. + + :ivar ingress: Enum representing different network policy rules. Known values are: "DenyAll", + "AllowAll", and "AllowSameNamespace". + :vartype ingress: str or ~azure.mgmt.containerservice.models.PolicyRule + :ivar egress: Enum representing different network policy rules. Known values are: "DenyAll", + "AllowAll", and "AllowSameNamespace". + :vartype egress: str or ~azure.mgmt.containerservice.models.PolicyRule """ - id: Optional[str] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """Fully qualified ID for the async operation.""" - name: Optional[str] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """Name of the async operation.""" - status: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """Operation status. Required.""" - percent_complete: Optional[float] = rest_field( - name="percentComplete", visibility=["read", "create", "update", "delete", "query"] - ) - """Percent of the operation that is complete.""" - start_time: Optional[datetime.datetime] = rest_field( - name="startTime", visibility=["read", "create", "update", "delete", "query"], format="rfc3339" - ) - """The start time of the operation.""" - end_time: Optional[datetime.datetime] = rest_field( - name="endTime", visibility=["read", "create", "update", "delete", "query"], format="rfc3339" - ) - """The end time of the operation.""" - operations: Optional[list["_models.OperationStatusResult"]] = rest_field( + ingress: Optional[Union[str, "_models.PolicyRule"]] = rest_field( visibility=["read", "create", "update", "delete", "query"] ) - """The operations list.""" - error: Optional["_models.ErrorDetail"] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """If present, details of the operation error.""" - resource_id: Optional[str] = rest_field(name="resourceId", visibility=["read"]) - """Fully qualified ID of the resource against which the original async operation was started.""" + """Enum representing different network policy rules. Known values are: \"DenyAll\", \"AllowAll\", + and \"AllowSameNamespace\".""" + egress: Optional[Union[str, "_models.PolicyRule"]] = rest_field( + visibility=["read", "create", "update", "delete", "query"] + ) + """Enum representing different network policy rules. Known values are: \"DenyAll\", \"AllowAll\", + and \"AllowSameNamespace\".""" @overload def __init__( self, *, - status: str, - id: Optional[str] = None, # pylint: disable=redefined-builtin - name: Optional[str] = None, - percent_complete: Optional[float] = None, - start_time: Optional[datetime.datetime] = None, - end_time: Optional[datetime.datetime] = None, - operations: Optional[list["_models.OperationStatusResult"]] = None, - error: Optional["_models.ErrorDetail"] = None, + ingress: Optional[Union[str, "_models.PolicyRule"]] = None, + egress: Optional[Union[str, "_models.PolicyRule"]] = None, ) -> None: ... @overload @@ -12300,39 +8839,6 @@ def __init__(self, *args: Any, **kwargs: Any) -> None: super().__init__(*args, **kwargs) -class PreparedImageSpecificationProfile(_Model): - """Settings to determine the prepared image specification used to provision nodes in a pool. - - :ivar prepared_image_specification_id: The resource ID of the prepared image specification - resource to use. This can include a version. Omitting the version will use the latest version - of the prepared image specification. - :vartype prepared_image_specification_id: str - """ - - prepared_image_specification_id: Optional[str] = rest_field( - name="preparedImageSpecificationId", visibility=["read", "create", "update", "delete", "query"] - ) - """The resource ID of the prepared image specification resource to use. This can include a - version. Omitting the version will use the latest version of the prepared image specification.""" - - @overload - def __init__( - self, - *, - prepared_image_specification_id: Optional[str] = None, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - - class PrivateEndpoint(_Model): """Private endpoint which a connection belongs to. @@ -12625,37 +9131,6 @@ def __init__(self, *args: Any, **kwargs: Any) -> None: super().__init__(*args, **kwargs) -class RebalanceLoadBalancersRequestBody(_Model): - """The names of the load balancers to rebalance. If set to empty, all load balancers will be - rebalanced. - - :ivar load_balancer_names: The load balancer names list. - :vartype load_balancer_names: list[str] - """ - - load_balancer_names: Optional[list[str]] = rest_field( - name="loadBalancerNames", visibility=["read", "create", "update", "delete", "query"] - ) - """The load balancer names list.""" - - @overload - def __init__( - self, - *, - load_balancer_names: Optional[list[str]] = None, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - - class RelativeMonthlySchedule(_Model): """For schedules like: 'recur every month on the first Monday' or 'recur every 3 months on last Friday'. @@ -12802,222 +9277,6 @@ def __init__(self, *args: Any, **kwargs: Any) -> None: super().__init__(*args, **kwargs) -class ResourceSku(_Model): - """Describes an available Compute SKU. - - :ivar resource_type: The type of resource the SKU applies to. - :vartype resource_type: str - :ivar name: The name of SKU. - :vartype name: str - :ivar tier: Specifies the tier of virtual machines in a scale set.

Possible - Values:

**Standard**

**Basic**. - :vartype tier: str - :ivar size: The Size of the SKU. - :vartype size: str - :ivar family: The Family of this particular SKU. - :vartype family: str - :ivar kind: The Kind of resources that are supported in this SKU. - :vartype kind: str - :ivar capacity: Specifies the number of virtual machines in the scale set. - :vartype capacity: ~azure.mgmt.containerservice.models.ResourceSkuCapacity - :ivar locations: The set of locations that the SKU is available. - :vartype locations: list[str] - :ivar location_info: A list of locations and availability zones in those locations where the - SKU is available. - :vartype location_info: list[~azure.mgmt.containerservice.models.ResourceSkuLocationInfo] - :ivar api_versions: The api versions that support this SKU. - :vartype api_versions: list[str] - :ivar costs: Metadata for retrieving price info. - :vartype costs: list[~azure.mgmt.containerservice.models.ResourceSkuCosts] - :ivar capabilities: A name value pair to describe the capability. - :vartype capabilities: list[~azure.mgmt.containerservice.models.ResourceSkuCapabilities] - :ivar restrictions: The restrictions because of which SKU cannot be used. This is empty if - there are no restrictions. - :vartype restrictions: list[~azure.mgmt.containerservice.models.ResourceSkuRestrictions] - """ - - resource_type: Optional[str] = rest_field(name="resourceType", visibility=["read"]) - """The type of resource the SKU applies to.""" - name: Optional[str] = rest_field(visibility=["read"]) - """The name of SKU.""" - tier: Optional[str] = rest_field(visibility=["read"]) - """Specifies the tier of virtual machines in a scale set.

Possible Values:

- **Standard**

**Basic**.""" - size: Optional[str] = rest_field(visibility=["read"]) - """The Size of the SKU.""" - family: Optional[str] = rest_field(visibility=["read"]) - """The Family of this particular SKU.""" - kind: Optional[str] = rest_field(visibility=["read"]) - """The Kind of resources that are supported in this SKU.""" - capacity: Optional["_models.ResourceSkuCapacity"] = rest_field(visibility=["read"]) - """Specifies the number of virtual machines in the scale set.""" - locations: Optional[list[str]] = rest_field(visibility=["read"]) - """The set of locations that the SKU is available.""" - location_info: Optional[list["_models.ResourceSkuLocationInfo"]] = rest_field( - name="locationInfo", visibility=["read"] - ) - """A list of locations and availability zones in those locations where the SKU is available.""" - api_versions: Optional[list[str]] = rest_field(name="apiVersions", visibility=["read"]) - """The api versions that support this SKU.""" - costs: Optional[list["_models.ResourceSkuCosts"]] = rest_field(visibility=["read"]) - """Metadata for retrieving price info.""" - capabilities: Optional[list["_models.ResourceSkuCapabilities"]] = rest_field(visibility=["read"]) - """A name value pair to describe the capability.""" - restrictions: Optional[list["_models.ResourceSkuRestrictions"]] = rest_field(visibility=["read"]) - """The restrictions because of which SKU cannot be used. This is empty if there are no - restrictions.""" - - -class ResourceSkuCapabilities(_Model): - """Describes The SKU capabilities object. - - :ivar name: An invariant to describe the feature. - :vartype name: str - :ivar value: An invariant if the feature is measured by quantity. - :vartype value: str - """ - - name: Optional[str] = rest_field(visibility=["read"]) - """An invariant to describe the feature.""" - value: Optional[str] = rest_field(visibility=["read"]) - """An invariant if the feature is measured by quantity.""" - - -class ResourceSkuCapacity(_Model): - """Describes scaling information of a SKU. - - :ivar minimum: The minimum capacity. - :vartype minimum: int - :ivar maximum: The maximum capacity that can be set. - :vartype maximum: int - :ivar default: The default capacity. - :vartype default: int - :ivar scale_type: The scale type applicable to the sku. Known values are: "Automatic", - "Manual", and "None". - :vartype scale_type: str or ~azure.mgmt.containerservice.models.ResourceSkuCapacityScaleType - """ - - minimum: Optional[int] = rest_field(visibility=["read"]) - """The minimum capacity.""" - maximum: Optional[int] = rest_field(visibility=["read"]) - """The maximum capacity that can be set.""" - default: Optional[int] = rest_field(visibility=["read"]) - """The default capacity.""" - scale_type: Optional[Union[str, "_models.ResourceSkuCapacityScaleType"]] = rest_field( - name="scaleType", visibility=["read"] - ) - """The scale type applicable to the sku. Known values are: \"Automatic\", \"Manual\", and - \"None\".""" - - -class ResourceSkuCosts(_Model): - """Describes metadata for retrieving price info. - - :ivar meter_id: Used for querying price from commerce. - :vartype meter_id: str - :ivar quantity: The multiplier is needed to extend the base metered cost. - :vartype quantity: int - :ivar extended_unit: An invariant to show the extended unit. - :vartype extended_unit: str - """ - - meter_id: Optional[str] = rest_field(name="meterID", visibility=["read"]) - """Used for querying price from commerce.""" - quantity: Optional[int] = rest_field(visibility=["read"]) - """The multiplier is needed to extend the base metered cost.""" - extended_unit: Optional[str] = rest_field(name="extendedUnit", visibility=["read"]) - """An invariant to show the extended unit.""" - - -class ResourceSkuLocationInfo(_Model): - """Describes an available Compute SKU Location Information. - - :ivar location: Location of the SKU. - :vartype location: str - :ivar zones: List of availability zones where the SKU is supported. - :vartype zones: list[str] - :ivar zone_details: Details of capabilities available to a SKU in specific zones. - :vartype zone_details: list[~azure.mgmt.containerservice.models.ResourceSkuZoneDetails] - :ivar extended_locations: The names of extended locations. - :vartype extended_locations: list[str] - :ivar type: The type of the extended location. "EdgeZone" - :vartype type: str or ~azure.mgmt.containerservice.models.ExtendedLocationTypes - """ - - location: Optional[str] = rest_field(visibility=["read"]) - """Location of the SKU.""" - zones: Optional[list[str]] = rest_field(visibility=["read"]) - """List of availability zones where the SKU is supported.""" - zone_details: Optional[list["_models.ResourceSkuZoneDetails"]] = rest_field(name="zoneDetails", visibility=["read"]) - """Details of capabilities available to a SKU in specific zones.""" - extended_locations: Optional[list[str]] = rest_field(name="extendedLocations", visibility=["read"]) - """The names of extended locations.""" - type: Optional[Union[str, "_models.ExtendedLocationTypes"]] = rest_field(visibility=["read"]) - """The type of the extended location. \"EdgeZone\"""" - - -class ResourceSkuRestrictionInfo(_Model): - """Describes an available Compute SKU Restriction Information. - - :ivar locations: Locations where the SKU is restricted. - :vartype locations: list[str] - :ivar zones: List of availability zones where the SKU is restricted. - :vartype zones: list[str] - """ - - locations: Optional[list[str]] = rest_field(visibility=["read"]) - """Locations where the SKU is restricted.""" - zones: Optional[list[str]] = rest_field(visibility=["read"]) - """List of availability zones where the SKU is restricted.""" - - -class ResourceSkuRestrictions(_Model): - """Describes scaling information of a SKU. - - :ivar type: The type of restrictions. Known values are: "Location" and "Zone". - :vartype type: str or ~azure.mgmt.containerservice.models.ResourceSkuRestrictionsType - :ivar values_property: The value of restrictions. If the restriction type is set to location. - This would be different locations where the SKU is restricted. - :vartype values_property: list[str] - :ivar restriction_info: The information about the restriction where the SKU cannot be used. - :vartype restriction_info: ~azure.mgmt.containerservice.models.ResourceSkuRestrictionInfo - :ivar reason_code: The reason for restriction. Known values are: "QuotaId" and - "NotAvailableForSubscription". - :vartype reason_code: str or - ~azure.mgmt.containerservice.models.ResourceSkuRestrictionsReasonCode - """ - - type: Optional[Union[str, "_models.ResourceSkuRestrictionsType"]] = rest_field(visibility=["read"]) - """The type of restrictions. Known values are: \"Location\" and \"Zone\".""" - values_property: Optional[list[str]] = rest_field(name="values", visibility=["read"], original_tsp_name="values") - """The value of restrictions. If the restriction type is set to location. This would be different - locations where the SKU is restricted.""" - restriction_info: Optional["_models.ResourceSkuRestrictionInfo"] = rest_field( - name="restrictionInfo", visibility=["read"] - ) - """The information about the restriction where the SKU cannot be used.""" - reason_code: Optional[Union[str, "_models.ResourceSkuRestrictionsReasonCode"]] = rest_field( - name="reasonCode", visibility=["read"] - ) - """The reason for restriction. Known values are: \"QuotaId\" and \"NotAvailableForSubscription\".""" - - -class ResourceSkuZoneDetails(_Model): - """Describes The zonal capabilities of a SKU. - - :ivar name: The set of zones that the SKU is available in with the specified capabilities. - :vartype name: list[str] - :ivar capabilities: A list of capabilities that are available for the SKU in the specified list - of zones. - :vartype capabilities: list[~azure.mgmt.containerservice.models.ResourceSkuCapabilities] - """ - - name: Optional[list[str]] = rest_field(visibility=["read"]) - """The set of zones that the SKU is available in with the specified capabilities.""" - capabilities: Optional[list["_models.ResourceSkuCapabilities"]] = rest_field(visibility=["read"]) - """A list of capabilities that are available for the SKU in the specified list of zones.""" - - class RunCommandRequest(_Model): """A run command request. @@ -13112,93 +9371,23 @@ def __setattr__(self, key: str, value: Any) -> None: super().__setattr__(key, value) -class SafeguardsAvailableVersion(ProxyResource): - """Available Safeguards Version. - - :ivar id: Fully qualified resource ID for the resource. Ex - - /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}. - :vartype id: str - :ivar name: The name of the resource. - :vartype name: str - :ivar type: The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or - "Microsoft.Storage/storageAccounts". - :vartype type: str - :ivar system_data: Azure Resource Manager metadata containing createdBy and modifiedBy - information. - :vartype system_data: ~azure.mgmt.containerservice.models.SystemData - :ivar properties: Whether the version is default or not and support info. Required. - :vartype properties: ~azure.mgmt.containerservice.models.SafeguardsAvailableVersionsProperties - """ - - properties: "_models.SafeguardsAvailableVersionsProperties" = rest_field( - visibility=["read", "create", "update", "delete", "query"] - ) - """Whether the version is default or not and support info. Required.""" - - @overload - def __init__( - self, - *, - properties: "_models.SafeguardsAvailableVersionsProperties", - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - - -class SafeguardsAvailableVersionsProperties(_Model): - """Whether the version is default or not and support info. - - :ivar is_default_version: Whether this is the default version. - :vartype is_default_version: bool - :ivar support: Whether the version is preview or stable. Known values are: "Preview" and - "Stable". - :vartype support: str or ~azure.mgmt.containerservice.models.SafeguardsSupport - """ - - is_default_version: Optional[bool] = rest_field(name="isDefaultVersion", visibility=["read"]) - """Whether this is the default version.""" - support: Optional[Union[str, "_models.SafeguardsSupport"]] = rest_field(visibility=["read"]) - """Whether the version is preview or stable. Known values are: \"Preview\" and \"Stable\".""" - - class ScaleProfile(_Model): """Specifications on how to scale a VirtualMachines agent pool. :ivar manual: Specifications on how to scale the VirtualMachines agent pool to a fixed size. :vartype manual: list[~azure.mgmt.containerservice.models.ManualScaleProfile] - :ivar autoscale: Specifications on how to auto-scale the VirtualMachines agent pool within a - predefined size range. Each profile targets a specific VM SKU and is evaluated independently. - Scaling decisions across profiles are governed by the cluster autoscaler expander, configurable - via ``ManagedCluster.properties.autoScalerProfile.expander``. - :vartype autoscale: list[~azure.mgmt.containerservice.models.AutoScaleProfile] """ manual: Optional[list["_models.ManualScaleProfile"]] = rest_field( visibility=["read", "create", "update", "delete", "query"] ) """Specifications on how to scale the VirtualMachines agent pool to a fixed size.""" - autoscale: Optional[list["_models.AutoScaleProfile"]] = rest_field( - visibility=["read", "create", "update", "delete", "query"] - ) - """Specifications on how to auto-scale the VirtualMachines agent pool within a predefined size - range. Each profile targets a specific VM SKU and is evaluated independently. Scaling decisions - across profiles are governed by the cluster autoscaler expander, configurable via - ``ManagedCluster.properties.autoScalerProfile.expander``.""" @overload def __init__( self, *, manual: Optional[list["_models.ManualScaleProfile"]] = None, - autoscale: Optional[list["_models.AutoScaleProfile"]] = None, ) -> None: ... @overload @@ -13263,150 +9452,6 @@ def __init__(self, *args: Any, **kwargs: Any) -> None: super().__init__(*args, **kwargs) -class SchedulerInstanceProfile(_Model): - """The scheduler profile for a single scheduler instance. - - :ivar scheduler_config_mode: The config customization mode for this scheduler instance. Known - values are: "Default" and "ManagedByCRD". - :vartype scheduler_config_mode: str or ~azure.mgmt.containerservice.models.SchedulerConfigMode - """ - - scheduler_config_mode: Optional[Union[str, "_models.SchedulerConfigMode"]] = rest_field( - name="schedulerConfigMode", visibility=["read", "create", "update", "delete", "query"] - ) - """The config customization mode for this scheduler instance. Known values are: \"Default\" and - \"ManagedByCRD\".""" - - @overload - def __init__( - self, - *, - scheduler_config_mode: Optional[Union[str, "_models.SchedulerConfigMode"]] = None, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - - -class SchedulerProfile(_Model): - """The pod scheduler profile for the cluster. - - :ivar scheduler_instance_profiles: Mapping of each scheduler instance to its profile. - :vartype scheduler_instance_profiles: - ~azure.mgmt.containerservice.models.SchedulerProfileSchedulerInstanceProfiles - """ - - scheduler_instance_profiles: Optional["_models.SchedulerProfileSchedulerInstanceProfiles"] = rest_field( - name="schedulerInstanceProfiles", visibility=["read", "create", "update", "delete", "query"] - ) - """Mapping of each scheduler instance to its profile.""" - - @overload - def __init__( - self, - *, - scheduler_instance_profiles: Optional["_models.SchedulerProfileSchedulerInstanceProfiles"] = None, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - - -class SchedulerProfileSchedulerInstanceProfiles(_Model): # pylint: disable=name-too-long - """Mapping of each scheduler instance to its profile. - - :ivar upstream: The scheduler profile for the upstream scheduler instance. - :vartype upstream: ~azure.mgmt.containerservice.models.SchedulerInstanceProfile - """ - - upstream: Optional["_models.SchedulerInstanceProfile"] = rest_field( - visibility=["read", "create", "update", "delete", "query"] - ) - """The scheduler profile for the upstream scheduler instance.""" - - @overload - def __init__( - self, - *, - upstream: Optional["_models.SchedulerInstanceProfile"] = None, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - - -class ServiceAccountImagePullProfile(_Model): - """Profile for configuring image pull authentication to use service account scoped managed - identities for authentication instead of node scoped managed identity (kubelet identity) for - authentication to Azure Container Registry. For more information, refer to - `https://aka.ms/aks/identity-binding/acr-image-pull/docs - `_. - - :ivar enabled: Indicates whether service account based image pull is enabled, for which - identity bindings are required for the managed identity to be used for authentication. For more - information, refer to `https://aka.ms/aks/identity-binding-docs - `_. - :vartype enabled: bool - :ivar default_managed_identity_id: Optional. The default managed identity resource ID used for - image pulls at the cluster level. When configured, this identity is used if a Pod’s service - account does not explicitly specify an identity for pulling images. If not configured and no - identity is specified at service account level, image will be pulled via anonymous - authentication. - :vartype default_managed_identity_id: str - """ - - enabled: Optional[bool] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """Indicates whether service account based image pull is enabled, for which identity bindings are - required for the managed identity to be used for authentication. For more information, refer to - `https://aka.ms/aks/identity-binding-docs `_.""" - default_managed_identity_id: Optional[str] = rest_field( - name="defaultManagedIdentityId", visibility=["read", "create", "update", "delete", "query"] - ) - """Optional. The default managed identity resource ID used for image pulls at the cluster level. - When configured, this identity is used if a Pod’s service account does not explicitly specify - an identity for pulling images. If not configured and no identity is specified at service - account level, image will be pulled via anonymous authentication.""" - - @overload - def __init__( - self, - *, - enabled: Optional[bool] = None, - default_managed_identity_id: Optional[str] = None, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - - class ServiceMeshProfile(_Model): """Service mesh profile for a managed cluster. @@ -13522,8 +9567,7 @@ class SnapshotProperties(_Model): :ivar creation_data: CreationData to be used to specify the source agent pool resource ID to create this snapshot. :vartype creation_data: ~azure.mgmt.containerservice.models.CreationData - :ivar snapshot_type: The type of a snapshot. The default is NodePool. Known values are: - "NodePool" and "ManagedCluster". + :ivar snapshot_type: The type of a snapshot. The default is NodePool. "NodePool" :vartype snapshot_type: str or ~azure.mgmt.containerservice.models.SnapshotType :ivar kubernetes_version: The version of Kubernetes. :vartype kubernetes_version: str @@ -13534,9 +9578,9 @@ class SnapshotProperties(_Model): :vartype os_type: str or ~azure.mgmt.containerservice.models.OSType :ivar os_sku: Specifies the OS SKU used by the agent pool. The default is Ubuntu if OSType is Linux. The default is Windows2019 when Kubernetes <= 1.24 or Windows2022 when Kubernetes >= - 1.25 if OSType is Windows. Known values are: "Ubuntu", "AzureLinux", "AzureLinux3", "Mariner", - "Flatcar", "CBLMariner", "Windows2019", "Windows2022", "Ubuntu2204", "Windows2025", - "WindowsAnnual", "Ubuntu2404", and "AzureContainerLinux". + 1.25 if OSType is Windows. Known values are: "Ubuntu", "AzureLinux", "AzureLinux3", + "CBLMariner", "Windows2019", "Windows2022", "Ubuntu2204", "Windows2025", "Ubuntu2404", and + "AzureContainerLinux". :vartype os_sku: str or ~azure.mgmt.containerservice.models.OSSKU :ivar vm_size: The size of the VM. :vartype vm_size: str @@ -13551,8 +9595,7 @@ class SnapshotProperties(_Model): snapshot_type: Optional[Union[str, "_models.SnapshotType"]] = rest_field( name="snapshotType", visibility=["read", "create", "update", "delete", "query"] ) - """The type of a snapshot. The default is NodePool. Known values are: \"NodePool\" and - \"ManagedCluster\".""" + """The type of a snapshot. The default is NodePool. \"NodePool\"""" kubernetes_version: Optional[str] = rest_field(name="kubernetesVersion", visibility=["read"]) """The version of Kubernetes.""" node_image_version: Optional[str] = rest_field(name="nodeImageVersion", visibility=["read"]) @@ -13562,9 +9605,9 @@ class SnapshotProperties(_Model): os_sku: Optional[Union[str, "_models.OSSKU"]] = rest_field(name="osSku", visibility=["read"]) """Specifies the OS SKU used by the agent pool. The default is Ubuntu if OSType is Linux. The default is Windows2019 when Kubernetes <= 1.24 or Windows2022 when Kubernetes >= 1.25 if OSType - is Windows. Known values are: \"Ubuntu\", \"AzureLinux\", \"AzureLinux3\", \"Mariner\", - \"Flatcar\", \"CBLMariner\", \"Windows2019\", \"Windows2022\", \"Ubuntu2204\", \"Windows2025\", - \"WindowsAnnual\", \"Ubuntu2404\", and \"AzureContainerLinux\".""" + is Windows. Known values are: \"Ubuntu\", \"AzureLinux\", \"AzureLinux3\", \"CBLMariner\", + \"Windows2019\", \"Windows2022\", \"Ubuntu2204\", \"Windows2025\", \"Ubuntu2404\", and + \"AzureContainerLinux\".""" vm_size: Optional[str] = rest_field(name="vmSize", visibility=["read"]) """The size of the VM.""" enable_fips: Optional[bool] = rest_field(name="enableFIPS", visibility=["read"]) diff --git a/sdk/containerservice/azure-mgmt-containerservice/azure/mgmt/containerservice/operations/__init__.py b/sdk/containerservice/azure-mgmt-containerservice/azure/mgmt/containerservice/operations/__init__.py index 49ff26d86c61..69da5e12a363 100644 --- a/sdk/containerservice/azure-mgmt-containerservice/azure/mgmt/containerservice/operations/__init__.py +++ b/sdk/containerservice/azure-mgmt-containerservice/azure/mgmt/containerservice/operations/__init__.py @@ -19,19 +19,12 @@ from ._operations import MachinesOperations # type: ignore from ._operations import PrivateEndpointConnectionsOperations # type: ignore from ._operations import SnapshotsOperations # type: ignore -from ._operations import ManagedClusterSnapshotsOperations # type: ignore from ._operations import TrustedAccessRoleBindingsOperations # type: ignore -from ._operations import LoadBalancersOperations # type: ignore from ._operations import IdentityBindingsOperations # type: ignore -from ._operations import JWTAuthenticatorsOperations # type: ignore -from ._operations import MeshMembershipsOperations # type: ignore from ._operations import Operations # type: ignore -from ._operations import OperationStatusResultOperations # type: ignore from ._operations import PrivateLinkResourcesOperations # type: ignore from ._operations import ResolvePrivateLinkServiceIdOperations # type: ignore from ._operations import TrustedAccessRolesOperations # type: ignore -from ._operations import ContainerServiceOperations # type: ignore -from ._operations import VmSkusOperations # type: ignore from ._patch import __all__ as _patch_all from ._patch import * @@ -45,19 +38,12 @@ "MachinesOperations", "PrivateEndpointConnectionsOperations", "SnapshotsOperations", - "ManagedClusterSnapshotsOperations", "TrustedAccessRoleBindingsOperations", - "LoadBalancersOperations", "IdentityBindingsOperations", - "JWTAuthenticatorsOperations", - "MeshMembershipsOperations", "Operations", - "OperationStatusResultOperations", "PrivateLinkResourcesOperations", "ResolvePrivateLinkServiceIdOperations", "TrustedAccessRolesOperations", - "ContainerServiceOperations", - "VmSkusOperations", ] __all__.extend([p for p in _patch_all if p not in __all__]) # pyright: ignore _patch_sdk() diff --git a/sdk/containerservice/azure-mgmt-containerservice/azure/mgmt/containerservice/operations/_operations.py b/sdk/containerservice/azure-mgmt-containerservice/azure/mgmt/containerservice/operations/_operations.py index 151ccff6e58d..58acc96693ca 100644 --- a/sdk/containerservice/azure-mgmt-containerservice/azure/mgmt/containerservice/operations/_operations.py +++ b/sdk/containerservice/azure-mgmt-containerservice/azure/mgmt/containerservice/operations/_operations.py @@ -55,7 +55,7 @@ def build_agent_pools_get_request( _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-03-02-preview")) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-04-01")) accept = _headers.pop("Accept", "application/json") # Construct URL @@ -92,7 +92,7 @@ def build_agent_pools_create_or_update_request( # pylint: disable=name-too-long _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) - api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-03-02-preview")) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-04-01")) accept = _headers.pop("Accept", "application/json") # Construct URL @@ -137,7 +137,7 @@ def build_agent_pools_delete_request( _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-03-02-preview")) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-04-01")) # Construct URL _url = "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ContainerService/managedClusters/{resourceName}/agentPools/{agentPoolName}" path_format_arguments = { @@ -173,7 +173,7 @@ def build_agent_pools_list_request( _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-03-02-preview")) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-04-01")) accept = _headers.pop("Accept", "application/json") # Construct URL @@ -200,7 +200,7 @@ def build_agent_pools_abort_latest_operation_request( # pylint: disable=name-to ) -> HttpRequest: _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-03-02-preview")) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-04-01")) # Construct URL _url = "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ContainerService/managedClusters/{resourceName}/agentPools/{agentPoolName}/abort" path_format_arguments = { @@ -218,29 +218,6 @@ def build_agent_pools_abort_latest_operation_request( # pylint: disable=name-to return HttpRequest(method="POST", url=_url, params=_params, **kwargs) -def build_agent_pools_complete_upgrade_request( # pylint: disable=name-too-long - resource_group_name: str, resource_name: str, agent_pool_name: str, subscription_id: str, **kwargs: Any -) -> HttpRequest: - _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - - api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-03-02-preview")) - # Construct URL - _url = "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ContainerService/managedClusters/{resourceName}/agentPools/{agentPoolName}/completeUpgrade" - path_format_arguments = { - "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, "str"), - "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, "str"), - "resourceName": _SERIALIZER.url("resource_name", resource_name, "str"), - "agentPoolName": _SERIALIZER.url("agent_pool_name", agent_pool_name, "str"), - } - - _url: str = _url.format(**path_format_arguments) # type: ignore - - # Construct parameters - _params["api-version"] = _SERIALIZER.query("api_version", api_version, "str") - - return HttpRequest(method="POST", url=_url, params=_params, **kwargs) - - def build_agent_pools_delete_machines_request( # pylint: disable=name-too-long resource_group_name: str, resource_name: str, agent_pool_name: str, subscription_id: str, **kwargs: Any ) -> HttpRequest: @@ -248,7 +225,7 @@ def build_agent_pools_delete_machines_request( # pylint: disable=name-too-long _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) - api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-03-02-preview")) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-04-01")) # Construct URL _url = "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ContainerService/managedClusters/{resourceName}/agentPools/{agentPoolName}/deleteMachines" path_format_arguments = { @@ -276,7 +253,7 @@ def build_agent_pools_upgrade_node_image_version_request( # pylint: disable=nam _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-03-02-preview")) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-04-01")) accept = _headers.pop("Accept", "application/json") # Construct URL @@ -305,7 +282,7 @@ def build_agent_pools_get_available_agent_pool_versions_request( # pylint: disa _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-03-02-preview")) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-04-01")) accept = _headers.pop("Accept", "application/json") # Construct URL @@ -333,7 +310,7 @@ def build_agent_pools_get_upgrade_profile_request( # pylint: disable=name-too-l _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-03-02-preview")) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-04-01")) accept = _headers.pop("Accept", "application/json") # Construct URL @@ -362,7 +339,7 @@ def build_managed_clusters_get_request( _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-03-02-preview")) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-04-01")) accept = _headers.pop("Accept", "application/json") # Construct URL @@ -397,7 +374,7 @@ def build_managed_clusters_create_or_update_request( # pylint: disable=name-too _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) - api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-03-02-preview")) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-04-01")) accept = _headers.pop("Accept", "application/json") # Construct URL @@ -440,7 +417,7 @@ def build_managed_clusters_update_tags_request( # pylint: disable=name-too-long _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) - api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-03-02-preview")) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-04-01")) accept = _headers.pop("Accept", "application/json") # Construct URL @@ -475,7 +452,6 @@ def build_managed_clusters_delete_request( resource_name: str, subscription_id: str, *, - ignore_pod_disruption_budget: Optional[bool] = None, etag: Optional[str] = None, match_condition: Optional[MatchConditions] = None, **kwargs: Any @@ -483,7 +459,7 @@ def build_managed_clusters_delete_request( _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-03-02-preview")) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-04-01")) # Construct URL _url = "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ContainerService/managedClusters/{resourceName}" path_format_arguments = { @@ -496,10 +472,6 @@ def build_managed_clusters_delete_request( # Construct parameters _params["api-version"] = _SERIALIZER.query("api_version", api_version, "str") - if ignore_pod_disruption_budget is not None: - _params["ignore-pod-disruption-budget"] = _SERIALIZER.query( - "ignore_pod_disruption_budget", ignore_pod_disruption_budget, "bool" - ) # Construct headers if_match = prep_if_match(etag, match_condition) @@ -518,7 +490,7 @@ def build_managed_clusters_list_by_resource_group_request( # pylint: disable=na _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-03-02-preview")) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-04-01")) accept = _headers.pop("Accept", "application/json") # Construct URL @@ -543,7 +515,7 @@ def build_managed_clusters_list_request(subscription_id: str, **kwargs: Any) -> _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-03-02-preview")) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-04-01")) accept = _headers.pop("Accept", "application/json") # Construct URL @@ -569,7 +541,7 @@ def build_managed_clusters_get_access_profile_request( # pylint: disable=name-t _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-03-02-preview")) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-04-01")) accept = _headers.pop("Accept", "application/json") # Construct URL @@ -603,7 +575,7 @@ def build_managed_clusters_list_cluster_admin_credentials_request( # pylint: di _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-03-02-preview")) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-04-01")) accept = _headers.pop("Accept", "application/json") # Construct URL @@ -639,7 +611,7 @@ def build_managed_clusters_list_cluster_user_credentials_request( # pylint: dis _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-03-02-preview")) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-04-01")) accept = _headers.pop("Accept", "application/json") # Construct URL @@ -676,7 +648,7 @@ def build_managed_clusters_list_cluster_monitoring_user_credentials_request( # _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-03-02-preview")) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-04-01")) accept = _headers.pop("Accept", "application/json") # Construct URL @@ -707,7 +679,7 @@ def build_managed_clusters_reset_service_principal_profile_request( # pylint: d _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) - api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-03-02-preview")) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-04-01")) # Construct URL _url = "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ContainerService/managedClusters/{resourceName}/resetServicePrincipalProfile" path_format_arguments = { @@ -735,7 +707,7 @@ def build_managed_clusters_reset_aad_profile_request( # pylint: disable=name-to _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) - api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-03-02-preview")) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-04-01")) # Construct URL _url = "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ContainerService/managedClusters/{resourceName}/resetAADProfile" path_format_arguments = { @@ -761,7 +733,7 @@ def build_managed_clusters_rotate_cluster_certificates_request( # pylint: disab ) -> HttpRequest: _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-03-02-preview")) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-04-01")) # Construct URL _url = "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ContainerService/managedClusters/{resourceName}/rotateClusterCertificates" path_format_arguments = { @@ -783,7 +755,7 @@ def build_managed_clusters_abort_latest_operation_request( # pylint: disable=na ) -> HttpRequest: _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-03-02-preview")) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-04-01")) # Construct URL _url = "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ContainerService/managedClusters/{resourceName}/abort" path_format_arguments = { @@ -805,7 +777,7 @@ def build_managed_clusters_rotate_service_account_signing_keys_request( # pylin ) -> HttpRequest: _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-03-02-preview")) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-04-01")) # Construct URL _url = "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ContainerService/managedClusters/{resourceName}/rotateServiceAccountSigningKeys" path_format_arguments = { @@ -827,7 +799,7 @@ def build_managed_clusters_stop_request( ) -> HttpRequest: _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-03-02-preview")) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-04-01")) # Construct URL _url = "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ContainerService/managedClusters/{resourceName}/stop" path_format_arguments = { @@ -849,7 +821,7 @@ def build_managed_clusters_start_request( ) -> HttpRequest: _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-03-02-preview")) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-04-01")) # Construct URL _url = "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ContainerService/managedClusters/{resourceName}/start" path_format_arguments = { @@ -873,7 +845,7 @@ def build_managed_clusters_run_command_request( # pylint: disable=name-too-long _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) - api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-03-02-preview")) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-04-01")) accept = _headers.pop("Accept", "application/json") # Construct URL @@ -903,7 +875,7 @@ def build_managed_clusters_get_command_result_request( # pylint: disable=name-t _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-03-02-preview")) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-04-01")) accept = _headers.pop("Accept", "application/json") # Construct URL @@ -932,7 +904,7 @@ def build_managed_clusters_list_outbound_network_dependencies_endpoints_request( _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-03-02-preview")) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-04-01")) accept = _headers.pop("Accept", "application/json") # Construct URL @@ -954,41 +926,13 @@ def build_managed_clusters_list_outbound_network_dependencies_endpoints_request( return HttpRequest(method="GET", url=_url, params=_params, headers=_headers, **kwargs) -def build_managed_clusters_rebalance_load_balancers_request( # pylint: disable=name-too-long - resource_group_name: str, resource_name: str, subscription_id: str, **kwargs: Any -) -> HttpRequest: - _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) - _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - - content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) - api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-03-02-preview")) - # Construct URL - _url = "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ContainerService/managedClusters/{resourceName}/rebalanceLoadBalancers" - path_format_arguments = { - "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, "str"), - "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, "str"), - "resourceName": _SERIALIZER.url("resource_name", resource_name, "str"), - } - - _url: str = _url.format(**path_format_arguments) # type: ignore - - # Construct parameters - _params["api-version"] = _SERIALIZER.query("api_version", api_version, "str") - - # Construct headers - if content_type is not None: - _headers["Content-Type"] = _SERIALIZER.header("content_type", content_type, "str") - - return HttpRequest(method="POST", url=_url, params=_params, headers=_headers, **kwargs) - - def build_managed_clusters_get_upgrade_profile_request( # pylint: disable=name-too-long resource_group_name: str, resource_name: str, subscription_id: str, **kwargs: Any ) -> HttpRequest: _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-03-02-preview")) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-04-01")) accept = _headers.pop("Accept", "application/json") # Construct URL @@ -1010,127 +954,13 @@ def build_managed_clusters_get_upgrade_profile_request( # pylint: disable=name- return HttpRequest(method="GET", url=_url, params=_params, headers=_headers, **kwargs) -def build_managed_clusters_get_guardrails_versions_request( # pylint: disable=name-too-long - location: str, version: str, subscription_id: str, **kwargs: Any -) -> HttpRequest: - _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) - _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - - api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-03-02-preview")) - accept = _headers.pop("Accept", "application/json") - - # Construct URL - _url = "/subscriptions/{subscriptionId}/providers/Microsoft.ContainerService/locations/{location}/guardrailsVersions/{version}" - path_format_arguments = { - "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, "str"), - "location": _SERIALIZER.url("location", location, "str"), - "version": _SERIALIZER.url("version", version, "str"), - } - - _url: str = _url.format(**path_format_arguments) # type: ignore - - # Construct parameters - _params["api-version"] = _SERIALIZER.query("api_version", api_version, "str") - - # Construct headers - _headers["Accept"] = _SERIALIZER.header("accept", accept, "str") - - return HttpRequest(method="GET", url=_url, params=_params, headers=_headers, **kwargs) - - -def build_managed_clusters_list_guardrails_versions_request( # pylint: disable=name-too-long - location: str, subscription_id: str, **kwargs: Any -) -> HttpRequest: - _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) - _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - - api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-03-02-preview")) - accept = _headers.pop("Accept", "application/json") - - # Construct URL - _url = ( - "/subscriptions/{subscriptionId}/providers/Microsoft.ContainerService/locations/{location}/guardrailsVersions" - ) - path_format_arguments = { - "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, "str"), - "location": _SERIALIZER.url("location", location, "str"), - } - - _url: str = _url.format(**path_format_arguments) # type: ignore - - # Construct parameters - _params["api-version"] = _SERIALIZER.query("api_version", api_version, "str") - - # Construct headers - _headers["Accept"] = _SERIALIZER.header("accept", accept, "str") - - return HttpRequest(method="GET", url=_url, params=_params, headers=_headers, **kwargs) - - -def build_managed_clusters_get_safeguards_versions_request( # pylint: disable=name-too-long - location: str, version: str, subscription_id: str, **kwargs: Any -) -> HttpRequest: - _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) - _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - - api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-03-02-preview")) - accept = _headers.pop("Accept", "application/json") - - # Construct URL - _url = "/subscriptions/{subscriptionId}/providers/Microsoft.ContainerService/locations/{location}/safeguardsVersions/{version}" - path_format_arguments = { - "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, "str"), - "location": _SERIALIZER.url("location", location, "str"), - "version": _SERIALIZER.url("version", version, "str"), - } - - _url: str = _url.format(**path_format_arguments) # type: ignore - - # Construct parameters - _params["api-version"] = _SERIALIZER.query("api_version", api_version, "str") - - # Construct headers - _headers["Accept"] = _SERIALIZER.header("accept", accept, "str") - - return HttpRequest(method="GET", url=_url, params=_params, headers=_headers, **kwargs) - - -def build_managed_clusters_list_safeguards_versions_request( # pylint: disable=name-too-long - location: str, subscription_id: str, **kwargs: Any -) -> HttpRequest: - _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) - _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - - api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-03-02-preview")) - accept = _headers.pop("Accept", "application/json") - - # Construct URL - _url = ( - "/subscriptions/{subscriptionId}/providers/Microsoft.ContainerService/locations/{location}/safeguardsVersions" - ) - path_format_arguments = { - "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, "str"), - "location": _SERIALIZER.url("location", location, "str"), - } - - _url: str = _url.format(**path_format_arguments) # type: ignore - - # Construct parameters - _params["api-version"] = _SERIALIZER.query("api_version", api_version, "str") - - # Construct headers - _headers["Accept"] = _SERIALIZER.header("accept", accept, "str") - - return HttpRequest(method="GET", url=_url, params=_params, headers=_headers, **kwargs) - - def build_managed_clusters_get_mesh_revision_profile_request( # pylint: disable=name-too-long location: str, mode: str, subscription_id: str, **kwargs: Any ) -> HttpRequest: _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-03-02-preview")) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-04-01")) accept = _headers.pop("Accept", "application/json") # Construct URL @@ -1158,7 +988,7 @@ def build_managed_clusters_list_mesh_revision_profiles_request( # pylint: disab _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-03-02-preview")) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-04-01")) accept = _headers.pop("Accept", "application/json") # Construct URL @@ -1187,7 +1017,7 @@ def build_managed_clusters_get_mesh_upgrade_profile_request( # pylint: disable= _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-03-02-preview")) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-04-01")) accept = _headers.pop("Accept", "application/json") # Construct URL @@ -1216,7 +1046,7 @@ def build_managed_clusters_list_mesh_upgrade_profiles_request( # pylint: disabl _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-03-02-preview")) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-04-01")) accept = _headers.pop("Accept", "application/json") # Construct URL @@ -1244,7 +1074,7 @@ def build_managed_clusters_list_kubernetes_versions_request( # pylint: disable= _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-03-02-preview")) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-04-01")) accept = _headers.pop("Accept", "application/json") # Construct URL @@ -1273,7 +1103,7 @@ def build_maintenance_configurations_get_request( # pylint: disable=name-too-lo _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-03-02-preview")) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-04-01")) accept = _headers.pop("Accept", "application/json") # Construct URL @@ -1303,7 +1133,7 @@ def build_maintenance_configurations_create_or_update_request( # pylint: disabl _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) - api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-03-02-preview")) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-04-01")) accept = _headers.pop("Accept", "application/json") # Construct URL @@ -1333,7 +1163,7 @@ def build_maintenance_configurations_delete_request( # pylint: disable=name-too ) -> HttpRequest: _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-03-02-preview")) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-04-01")) # Construct URL _url = "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ContainerService/managedClusters/{resourceName}/maintenanceConfigurations/{configName}" path_format_arguments = { @@ -1357,7 +1187,7 @@ def build_maintenance_configurations_list_by_managed_cluster_request( # pylint: _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-03-02-preview")) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-04-01")) accept = _headers.pop("Accept", "application/json") # Construct URL @@ -1385,7 +1215,7 @@ def build_managed_namespaces_get_request( _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-03-02-preview")) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-04-01")) accept = _headers.pop("Accept", "application/json") # Construct URL @@ -1415,7 +1245,7 @@ def build_managed_namespaces_create_or_update_request( # pylint: disable=name-t _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) - api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-03-02-preview")) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-04-01")) accept = _headers.pop("Accept", "application/json") # Construct URL @@ -1447,7 +1277,7 @@ def build_managed_namespaces_update_request( _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) - api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-03-02-preview")) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-04-01")) accept = _headers.pop("Accept", "application/json") # Construct URL @@ -1477,7 +1307,7 @@ def build_managed_namespaces_delete_request( ) -> HttpRequest: _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-03-02-preview")) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-04-01")) # Construct URL _url = "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ContainerService/managedClusters/{resourceName}/managedNamespaces/{managedNamespaceName}" path_format_arguments = { @@ -1501,7 +1331,7 @@ def build_managed_namespaces_list_by_managed_cluster_request( # pylint: disable _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-03-02-preview")) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-04-01")) accept = _headers.pop("Accept", "application/json") # Construct URL @@ -1529,7 +1359,7 @@ def build_managed_namespaces_list_credential_request( # pylint: disable=name-to _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-03-02-preview")) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-04-01")) accept = _headers.pop("Accept", "application/json") # Construct URL @@ -1563,7 +1393,7 @@ def build_machines_get_request( _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-03-02-preview")) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-04-01")) accept = _headers.pop("Accept", "application/json") # Construct URL @@ -1587,60 +1417,13 @@ def build_machines_get_request( return HttpRequest(method="GET", url=_url, params=_params, headers=_headers, **kwargs) -def build_machines_create_or_update_request( - resource_group_name: str, - resource_name: str, - agent_pool_name: str, - machine_name: str, - subscription_id: str, - *, - etag: Optional[str] = None, - match_condition: Optional[MatchConditions] = None, - **kwargs: Any -) -> HttpRequest: - _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) - _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - - content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) - api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-03-02-preview")) - accept = _headers.pop("Accept", "application/json") - - # Construct URL - _url = "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ContainerService/managedClusters/{resourceName}/agentPools/{agentPoolName}/machines/{machineName}" - path_format_arguments = { - "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, "str"), - "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, "str"), - "resourceName": _SERIALIZER.url("resource_name", resource_name, "str"), - "agentPoolName": _SERIALIZER.url("agent_pool_name", agent_pool_name, "str"), - "machineName": _SERIALIZER.url("machine_name", machine_name, "str"), - } - - _url: str = _url.format(**path_format_arguments) # type: ignore - - # Construct parameters - _params["api-version"] = _SERIALIZER.query("api_version", api_version, "str") - - # Construct headers - if content_type is not None: - _headers["Content-Type"] = _SERIALIZER.header("content_type", content_type, "str") - _headers["Accept"] = _SERIALIZER.header("accept", accept, "str") - if_match = prep_if_match(etag, match_condition) - if if_match is not None: - _headers["if-match"] = _SERIALIZER.header("if_match", if_match, "str") - if_none_match = prep_if_none_match(etag, match_condition) - if if_none_match is not None: - _headers["if-none-match"] = _SERIALIZER.header("if_none_match", if_none_match, "str") - - return HttpRequest(method="PUT", url=_url, params=_params, headers=_headers, **kwargs) - - def build_machines_list_request( resource_group_name: str, resource_name: str, agent_pool_name: str, subscription_id: str, **kwargs: Any ) -> HttpRequest: _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-03-02-preview")) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-04-01")) accept = _headers.pop("Accept", "application/json") # Construct URL @@ -1673,7 +1456,7 @@ def build_private_endpoint_connections_get_request( # pylint: disable=name-too- _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-03-02-preview")) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-04-01")) accept = _headers.pop("Accept", "application/json") # Construct URL @@ -1709,7 +1492,7 @@ def build_private_endpoint_connections_update_request( # pylint: disable=name-t _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) - api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-03-02-preview")) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-04-01")) accept = _headers.pop("Accept", "application/json") # Construct URL @@ -1745,7 +1528,7 @@ def build_private_endpoint_connections_delete_request( # pylint: disable=name-t ) -> HttpRequest: _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-03-02-preview")) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-04-01")) # Construct URL _url = "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ContainerService/managedClusters/{resourceName}/privateEndpointConnections/{privateEndpointConnectionName}" path_format_arguments = { @@ -1771,7 +1554,7 @@ def build_private_endpoint_connections_list_request( # pylint: disable=name-too _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-03-02-preview")) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-04-01")) accept = _headers.pop("Accept", "application/json") # Construct URL @@ -1799,7 +1582,7 @@ def build_snapshots_get_request( _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-03-02-preview")) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-04-01")) accept = _headers.pop("Accept", "application/json") # Construct URL @@ -1828,7 +1611,7 @@ def build_snapshots_create_or_update_request( _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) - api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-03-02-preview")) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-04-01")) accept = _headers.pop("Accept", "application/json") # Construct URL @@ -1859,7 +1642,7 @@ def build_snapshots_update_tags_request( _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) - api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-03-02-preview")) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-04-01")) accept = _headers.pop("Accept", "application/json") # Construct URL @@ -1888,7 +1671,7 @@ def build_snapshots_delete_request( ) -> HttpRequest: _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-03-02-preview")) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-04-01")) # Construct URL _url = "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ContainerService/snapshots/{resourceName}" path_format_arguments = { @@ -1911,7 +1694,7 @@ def build_snapshots_list_by_resource_group_request( # pylint: disable=name-too- _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-03-02-preview")) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-04-01")) accept = _headers.pop("Accept", "application/json") # Construct URL @@ -1936,7 +1719,7 @@ def build_snapshots_list_request(subscription_id: str, **kwargs: Any) -> HttpReq _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-03-02-preview")) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-04-01")) accept = _headers.pop("Accept", "application/json") # Construct URL @@ -1956,21 +1739,28 @@ def build_snapshots_list_request(subscription_id: str, **kwargs: Any) -> HttpReq return HttpRequest(method="GET", url=_url, params=_params, headers=_headers, **kwargs) -def build_managed_cluster_snapshots_get_request( # pylint: disable=name-too-long - resource_group_name: str, resource_name: str, subscription_id: str, **kwargs: Any +def build_trusted_access_role_bindings_get_request( # pylint: disable=name-too-long + resource_group_name: str, + resource_name: str, + trusted_access_role_binding_name: str, + subscription_id: str, + **kwargs: Any ) -> HttpRequest: _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-03-02-preview")) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-04-01")) accept = _headers.pop("Accept", "application/json") # Construct URL - _url = "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ContainerService/managedclustersnapshots/{resourceName}" + _url = "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ContainerService/managedClusters/{resourceName}/trustedAccessRoleBindings/{trustedAccessRoleBindingName}" path_format_arguments = { "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, "str"), "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, "str"), "resourceName": _SERIALIZER.url("resource_name", resource_name, "str"), + "trustedAccessRoleBindingName": _SERIALIZER.url( + "trusted_access_role_binding_name", trusted_access_role_binding_name, "str" + ), } _url: str = _url.format(**path_format_arguments) # type: ignore @@ -1984,22 +1774,29 @@ def build_managed_cluster_snapshots_get_request( # pylint: disable=name-too-lon return HttpRequest(method="GET", url=_url, params=_params, headers=_headers, **kwargs) -def build_managed_cluster_snapshots_create_or_update_request( # pylint: disable=name-too-long - resource_group_name: str, resource_name: str, subscription_id: str, **kwargs: Any +def build_trusted_access_role_bindings_create_or_update_request( # pylint: disable=name-too-long + resource_group_name: str, + resource_name: str, + trusted_access_role_binding_name: str, + subscription_id: str, + **kwargs: Any ) -> HttpRequest: _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) - api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-03-02-preview")) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-04-01")) accept = _headers.pop("Accept", "application/json") # Construct URL - _url = "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ContainerService/managedclustersnapshots/{resourceName}" + _url = "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ContainerService/managedClusters/{resourceName}/trustedAccessRoleBindings/{trustedAccessRoleBindingName}" path_format_arguments = { "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, "str"), "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, "str"), "resourceName": _SERIALIZER.url("resource_name", resource_name, "str"), + "trustedAccessRoleBindingName": _SERIALIZER.url( + "trusted_access_role_binding_name", trusted_access_role_binding_name, "str" + ), } _url: str = _url.format(**path_format_arguments) # type: ignore @@ -2015,22 +1812,25 @@ def build_managed_cluster_snapshots_create_or_update_request( # pylint: disable return HttpRequest(method="PUT", url=_url, params=_params, headers=_headers, **kwargs) -def build_managed_cluster_snapshots_update_tags_request( # pylint: disable=name-too-long - resource_group_name: str, resource_name: str, subscription_id: str, **kwargs: Any +def build_trusted_access_role_bindings_delete_request( # pylint: disable=name-too-long + resource_group_name: str, + resource_name: str, + trusted_access_role_binding_name: str, + subscription_id: str, + **kwargs: Any ) -> HttpRequest: - _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) - api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-03-02-preview")) - accept = _headers.pop("Accept", "application/json") - + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-04-01")) # Construct URL - _url = "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ContainerService/managedclustersnapshots/{resourceName}" + _url = "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ContainerService/managedClusters/{resourceName}/trustedAccessRoleBindings/{trustedAccessRoleBindingName}" path_format_arguments = { "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, "str"), "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, "str"), "resourceName": _SERIALIZER.url("resource_name", resource_name, "str"), + "trustedAccessRoleBindingName": _SERIALIZER.url( + "trusted_access_role_binding_name", trusted_access_role_binding_name, "str" + ), } _url: str = _url.format(**path_format_arguments) # type: ignore @@ -2038,22 +1838,20 @@ def build_managed_cluster_snapshots_update_tags_request( # pylint: disable=name # Construct parameters _params["api-version"] = _SERIALIZER.query("api_version", api_version, "str") - # Construct headers - if content_type is not None: - _headers["Content-Type"] = _SERIALIZER.header("content_type", content_type, "str") - _headers["Accept"] = _SERIALIZER.header("accept", accept, "str") - - return HttpRequest(method="PATCH", url=_url, params=_params, headers=_headers, **kwargs) + return HttpRequest(method="DELETE", url=_url, params=_params, **kwargs) -def build_managed_cluster_snapshots_delete_request( # pylint: disable=name-too-long +def build_trusted_access_role_bindings_list_request( # pylint: disable=name-too-long resource_group_name: str, resource_name: str, subscription_id: str, **kwargs: Any ) -> HttpRequest: + _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-03-02-preview")) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-04-01")) + accept = _headers.pop("Accept", "application/json") + # Construct URL - _url = "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ContainerService/managedclustersnapshots/{resourceName}" + _url = "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ContainerService/managedClusters/{resourceName}/trustedAccessRoleBindings" path_format_arguments = { "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, "str"), "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, "str"), @@ -2065,23 +1863,28 @@ def build_managed_cluster_snapshots_delete_request( # pylint: disable=name-too- # Construct parameters _params["api-version"] = _SERIALIZER.query("api_version", api_version, "str") - return HttpRequest(method="DELETE", url=_url, params=_params, **kwargs) + # Construct headers + _headers["Accept"] = _SERIALIZER.header("accept", accept, "str") + + return HttpRequest(method="GET", url=_url, params=_params, headers=_headers, **kwargs) -def build_managed_cluster_snapshots_list_by_resource_group_request( # pylint: disable=name-too-long - resource_group_name: str, subscription_id: str, **kwargs: Any +def build_identity_bindings_get_request( + resource_group_name: str, resource_name: str, identity_binding_name: str, subscription_id: str, **kwargs: Any ) -> HttpRequest: _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-03-02-preview")) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-04-01")) accept = _headers.pop("Accept", "application/json") # Construct URL - _url = "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ContainerService/managedclustersnapshots" + _url = "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ContainerService/managedClusters/{resourceName}/identityBindings/{identityBindingName}" path_format_arguments = { "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, "str"), "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, "str"), + "resourceName": _SERIALIZER.url("resource_name", resource_name, "str"), + "identityBindingName": _SERIALIZER.url("identity_binding_name", identity_binding_name, "str"), } _url: str = _url.format(**path_format_arguments) # type: ignore @@ -2095,90 +1898,23 @@ def build_managed_cluster_snapshots_list_by_resource_group_request( # pylint: d return HttpRequest(method="GET", url=_url, params=_params, headers=_headers, **kwargs) -def build_managed_cluster_snapshots_list_request( # pylint: disable=name-too-long - subscription_id: str, **kwargs: Any +def build_identity_bindings_create_or_update_request( # pylint: disable=name-too-long + resource_group_name: str, resource_name: str, identity_binding_name: str, subscription_id: str, **kwargs: Any ) -> HttpRequest: _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-03-02-preview")) + content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-04-01")) accept = _headers.pop("Accept", "application/json") # Construct URL - _url = "/subscriptions/{subscriptionId}/providers/Microsoft.ContainerService/managedclustersnapshots" - path_format_arguments = { - "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, "str"), - } - - _url: str = _url.format(**path_format_arguments) # type: ignore - - # Construct parameters - _params["api-version"] = _SERIALIZER.query("api_version", api_version, "str") - - # Construct headers - _headers["Accept"] = _SERIALIZER.header("accept", accept, "str") - - return HttpRequest(method="GET", url=_url, params=_params, headers=_headers, **kwargs) - - -def build_trusted_access_role_bindings_get_request( # pylint: disable=name-too-long - resource_group_name: str, - resource_name: str, - trusted_access_role_binding_name: str, - subscription_id: str, - **kwargs: Any -) -> HttpRequest: - _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) - _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - - api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-03-02-preview")) - accept = _headers.pop("Accept", "application/json") - - # Construct URL - _url = "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ContainerService/managedClusters/{resourceName}/trustedAccessRoleBindings/{trustedAccessRoleBindingName}" - path_format_arguments = { - "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, "str"), - "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, "str"), - "resourceName": _SERIALIZER.url("resource_name", resource_name, "str"), - "trustedAccessRoleBindingName": _SERIALIZER.url( - "trusted_access_role_binding_name", trusted_access_role_binding_name, "str" - ), - } - - _url: str = _url.format(**path_format_arguments) # type: ignore - - # Construct parameters - _params["api-version"] = _SERIALIZER.query("api_version", api_version, "str") - - # Construct headers - _headers["Accept"] = _SERIALIZER.header("accept", accept, "str") - - return HttpRequest(method="GET", url=_url, params=_params, headers=_headers, **kwargs) - - -def build_trusted_access_role_bindings_create_or_update_request( # pylint: disable=name-too-long - resource_group_name: str, - resource_name: str, - trusted_access_role_binding_name: str, - subscription_id: str, - **kwargs: Any -) -> HttpRequest: - _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) - _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - - content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) - api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-03-02-preview")) - accept = _headers.pop("Accept", "application/json") - - # Construct URL - _url = "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ContainerService/managedClusters/{resourceName}/trustedAccessRoleBindings/{trustedAccessRoleBindingName}" + _url = "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ContainerService/managedClusters/{resourceName}/identityBindings/{identityBindingName}" path_format_arguments = { "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, "str"), "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, "str"), "resourceName": _SERIALIZER.url("resource_name", resource_name, "str"), - "trustedAccessRoleBindingName": _SERIALIZER.url( - "trusted_access_role_binding_name", trusted_access_role_binding_name, "str" - ), + "identityBindingName": _SERIALIZER.url("identity_binding_name", identity_binding_name, "str"), } _url: str = _url.format(**path_format_arguments) # type: ignore @@ -2194,25 +1930,19 @@ def build_trusted_access_role_bindings_create_or_update_request( # pylint: disa return HttpRequest(method="PUT", url=_url, params=_params, headers=_headers, **kwargs) -def build_trusted_access_role_bindings_delete_request( # pylint: disable=name-too-long - resource_group_name: str, - resource_name: str, - trusted_access_role_binding_name: str, - subscription_id: str, - **kwargs: Any +def build_identity_bindings_delete_request( + resource_group_name: str, resource_name: str, identity_binding_name: str, subscription_id: str, **kwargs: Any ) -> HttpRequest: _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-03-02-preview")) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-04-01")) # Construct URL - _url = "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ContainerService/managedClusters/{resourceName}/trustedAccessRoleBindings/{trustedAccessRoleBindingName}" + _url = "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ContainerService/managedClusters/{resourceName}/identityBindings/{identityBindingName}" path_format_arguments = { "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, "str"), "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, "str"), "resourceName": _SERIALIZER.url("resource_name", resource_name, "str"), - "trustedAccessRoleBindingName": _SERIALIZER.url( - "trusted_access_role_binding_name", trusted_access_role_binding_name, "str" - ), + "identityBindingName": _SERIALIZER.url("identity_binding_name", identity_binding_name, "str"), } _url: str = _url.format(**path_format_arguments) # type: ignore @@ -2223,17 +1953,17 @@ def build_trusted_access_role_bindings_delete_request( # pylint: disable=name-t return HttpRequest(method="DELETE", url=_url, params=_params, **kwargs) -def build_trusted_access_role_bindings_list_request( # pylint: disable=name-too-long +def build_identity_bindings_list_by_managed_cluster_request( # pylint: disable=name-too-long resource_group_name: str, resource_name: str, subscription_id: str, **kwargs: Any ) -> HttpRequest: _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-03-02-preview")) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-04-01")) accept = _headers.pop("Accept", "application/json") # Construct URL - _url = "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ContainerService/managedClusters/{resourceName}/trustedAccessRoleBindings" + _url = "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ContainerService/managedClusters/{resourceName}/identityBindings" path_format_arguments = { "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, "str"), "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, "str"), @@ -2251,25 +1981,15 @@ def build_trusted_access_role_bindings_list_request( # pylint: disable=name-too return HttpRequest(method="GET", url=_url, params=_params, headers=_headers, **kwargs) -def build_load_balancers_get_request( - resource_group_name: str, resource_name: str, load_balancer_name: str, subscription_id: str, **kwargs: Any -) -> HttpRequest: +def build_operations_list_request(**kwargs: Any) -> HttpRequest: _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-03-02-preview")) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-04-01")) accept = _headers.pop("Accept", "application/json") # Construct URL - _url = "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ContainerService/managedClusters/{resourceName}/loadBalancers/{loadBalancerName}" - path_format_arguments = { - "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, "str"), - "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, "str"), - "resourceName": _SERIALIZER.url("resource_name", resource_name, "str"), - "loadBalancerName": _SERIALIZER.url("load_balancer_name", load_balancer_name, "str"), - } - - _url: str = _url.format(**path_format_arguments) # type: ignore + _url = "/providers/Microsoft.ContainerService/operations" # Construct parameters _params["api-version"] = _SERIALIZER.query("api_version", api_version, "str") @@ -2280,23 +2000,21 @@ def build_load_balancers_get_request( return HttpRequest(method="GET", url=_url, params=_params, headers=_headers, **kwargs) -def build_load_balancers_create_or_update_request( # pylint: disable=name-too-long - resource_group_name: str, resource_name: str, load_balancer_name: str, subscription_id: str, **kwargs: Any +def build_private_link_resources_list_request( # pylint: disable=name-too-long + resource_group_name: str, resource_name: str, subscription_id: str, **kwargs: Any ) -> HttpRequest: _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) - api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-03-02-preview")) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-04-01")) accept = _headers.pop("Accept", "application/json") # Construct URL - _url = "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ContainerService/managedClusters/{resourceName}/loadBalancers/{loadBalancerName}" + _url = "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ContainerService/managedClusters/{resourceName}/privateLinkResources" path_format_arguments = { "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, "str"), "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, "str"), "resourceName": _SERIALIZER.url("resource_name", resource_name, "str"), - "loadBalancerName": _SERIALIZER.url("load_balancer_name", load_balancer_name, "str"), } _url: str = _url.format(**path_format_arguments) # type: ignore @@ -2305,47 +2023,23 @@ def build_load_balancers_create_or_update_request( # pylint: disable=name-too-l _params["api-version"] = _SERIALIZER.query("api_version", api_version, "str") # Construct headers - if content_type is not None: - _headers["Content-Type"] = _SERIALIZER.header("content_type", content_type, "str") _headers["Accept"] = _SERIALIZER.header("accept", accept, "str") - return HttpRequest(method="PUT", url=_url, params=_params, headers=_headers, **kwargs) - - -def build_load_balancers_delete_request( - resource_group_name: str, resource_name: str, load_balancer_name: str, subscription_id: str, **kwargs: Any -) -> HttpRequest: - _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - - api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-03-02-preview")) - # Construct URL - _url = "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ContainerService/managedClusters/{resourceName}/loadBalancers/{loadBalancerName}" - path_format_arguments = { - "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, "str"), - "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, "str"), - "resourceName": _SERIALIZER.url("resource_name", resource_name, "str"), - "loadBalancerName": _SERIALIZER.url("load_balancer_name", load_balancer_name, "str"), - } - - _url: str = _url.format(**path_format_arguments) # type: ignore - - # Construct parameters - _params["api-version"] = _SERIALIZER.query("api_version", api_version, "str") - - return HttpRequest(method="DELETE", url=_url, params=_params, **kwargs) + return HttpRequest(method="GET", url=_url, params=_params, headers=_headers, **kwargs) -def build_load_balancers_list_by_managed_cluster_request( # pylint: disable=name-too-long +def build_resolve_private_link_service_id_post_request( # pylint: disable=name-too-long resource_group_name: str, resource_name: str, subscription_id: str, **kwargs: Any ) -> HttpRequest: _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-03-02-preview")) + content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-04-01")) accept = _headers.pop("Accept", "application/json") # Construct URL - _url = "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ContainerService/managedClusters/{resourceName}/loadBalancers" + _url = "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ContainerService/managedClusters/{resourceName}/resolvePrivateLinkServiceId" path_format_arguments = { "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, "str"), "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, "str"), @@ -2358,27 +2052,27 @@ def build_load_balancers_list_by_managed_cluster_request( # pylint: disable=nam _params["api-version"] = _SERIALIZER.query("api_version", api_version, "str") # Construct headers + if content_type is not None: + _headers["Content-Type"] = _SERIALIZER.header("content_type", content_type, "str") _headers["Accept"] = _SERIALIZER.header("accept", accept, "str") - return HttpRequest(method="GET", url=_url, params=_params, headers=_headers, **kwargs) + return HttpRequest(method="POST", url=_url, params=_params, headers=_headers, **kwargs) -def build_identity_bindings_get_request( - resource_group_name: str, resource_name: str, identity_binding_name: str, subscription_id: str, **kwargs: Any -) -> HttpRequest: +def build_trusted_access_roles_list_request(location: str, subscription_id: str, **kwargs: Any) -> HttpRequest: _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-03-02-preview")) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-04-01")) accept = _headers.pop("Accept", "application/json") # Construct URL - _url = "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ContainerService/managedClusters/{resourceName}/identityBindings/{identityBindingName}" + _url = ( + "/subscriptions/{subscriptionId}/providers/Microsoft.ContainerService/locations/{location}/trustedAccessRoles" + ) path_format_arguments = { "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, "str"), - "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, "str"), - "resourceName": _SERIALIZER.url("resource_name", resource_name, "str"), - "identityBindingName": _SERIALIZER.url("identity_binding_name", identity_binding_name, "str"), + "location": _SERIALIZER.url("location", location, "str"), } _url: str = _url.format(**path_format_arguments) # type: ignore @@ -2392,590 +2086,964 @@ def build_identity_bindings_get_request( return HttpRequest(method="GET", url=_url, params=_params, headers=_headers, **kwargs) -def build_identity_bindings_create_or_update_request( # pylint: disable=name-too-long - resource_group_name: str, resource_name: str, identity_binding_name: str, subscription_id: str, **kwargs: Any -) -> HttpRequest: - _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) - _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) +class AgentPoolsOperations: + """ + .. warning:: + **DO NOT** instantiate this class directly. - content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) - api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-03-02-preview")) - accept = _headers.pop("Accept", "application/json") + Instead, you should access the following operations through + :class:`~azure.mgmt.containerservice.ContainerServiceClient`'s + :attr:`agent_pools` attribute. + """ - # Construct URL - _url = "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ContainerService/managedClusters/{resourceName}/identityBindings/{identityBindingName}" - path_format_arguments = { - "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, "str"), - "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, "str"), - "resourceName": _SERIALIZER.url("resource_name", resource_name, "str"), - "identityBindingName": _SERIALIZER.url("identity_binding_name", identity_binding_name, "str"), - } + def __init__(self, *args, **kwargs) -> None: + input_args = list(args) + self._client: PipelineClient = input_args.pop(0) if input_args else kwargs.pop("client") + self._config: ContainerServiceClientConfiguration = input_args.pop(0) if input_args else kwargs.pop("config") + self._serialize: Serializer = input_args.pop(0) if input_args else kwargs.pop("serializer") + self._deserialize: Deserializer = input_args.pop(0) if input_args else kwargs.pop("deserializer") - _url: str = _url.format(**path_format_arguments) # type: ignore + @distributed_trace + def get( + self, resource_group_name: str, resource_name: str, agent_pool_name: str, **kwargs: Any + ) -> _models.AgentPool: + """Gets the specified managed cluster agent pool. - # Construct parameters - _params["api-version"] = _SERIALIZER.query("api_version", api_version, "str") + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param resource_name: The name of the managed cluster resource. Required. + :type resource_name: str + :param agent_pool_name: The name of the agent pool. Required. + :type agent_pool_name: str + :return: AgentPool. The AgentPool is compatible with MutableMapping + :rtype: ~azure.mgmt.containerservice.models.AgentPool + :raises ~azure.core.exceptions.HttpResponseError: + """ + error_map: MutableMapping = { + 401: ClientAuthenticationError, + 404: ResourceNotFoundError, + 409: ResourceExistsError, + 304: ResourceNotModifiedError, + } + error_map.update(kwargs.pop("error_map", {}) or {}) - # Construct headers - if content_type is not None: - _headers["Content-Type"] = _SERIALIZER.header("content_type", content_type, "str") - _headers["Accept"] = _SERIALIZER.header("accept", accept, "str") + _headers = kwargs.pop("headers", {}) or {} + _params = kwargs.pop("params", {}) or {} - return HttpRequest(method="PUT", url=_url, params=_params, headers=_headers, **kwargs) + cls: ClsType[_models.AgentPool] = kwargs.pop("cls", None) + _request = build_agent_pools_get_request( + resource_group_name=resource_group_name, + resource_name=resource_name, + agent_pool_name=agent_pool_name, + subscription_id=self._config.subscription_id, + api_version=self._config.api_version, + headers=_headers, + params=_params, + ) + path_format_arguments = { + "endpoint": self._serialize.url("self._config.base_url", self._config.base_url, "str", skip_quote=True), + } + _request.url = self._client.format_url(_request.url, **path_format_arguments) -def build_identity_bindings_delete_request( - resource_group_name: str, resource_name: str, identity_binding_name: str, subscription_id: str, **kwargs: Any -) -> HttpRequest: - _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) + _decompress = kwargs.pop("decompress", True) + _stream = kwargs.pop("stream", False) + pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access + _request, stream=_stream, **kwargs + ) - api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-03-02-preview")) - # Construct URL - _url = "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ContainerService/managedClusters/{resourceName}/identityBindings/{identityBindingName}" - path_format_arguments = { - "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, "str"), - "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, "str"), - "resourceName": _SERIALIZER.url("resource_name", resource_name, "str"), - "identityBindingName": _SERIALIZER.url("identity_binding_name", identity_binding_name, "str"), - } + response = pipeline_response.http_response - _url: str = _url.format(**path_format_arguments) # type: ignore + if response.status_code not in [200]: + if _stream: + try: + response.read() # Load the body in memory and close the socket + except (StreamConsumedError, StreamClosedError): + pass + map_error(status_code=response.status_code, response=response, error_map=error_map) + error = _failsafe_deserialize( + _models.ErrorResponse, + response, + ) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - # Construct parameters - _params["api-version"] = _SERIALIZER.query("api_version", api_version, "str") + if _stream: + deserialized = response.iter_bytes() if _decompress else response.iter_raw() + else: + deserialized = _deserialize(_models.AgentPool, response.json()) - return HttpRequest(method="DELETE", url=_url, params=_params, **kwargs) - - -def build_identity_bindings_list_by_managed_cluster_request( # pylint: disable=name-too-long - resource_group_name: str, resource_name: str, subscription_id: str, **kwargs: Any -) -> HttpRequest: - _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) - _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) + if cls: + return cls(pipeline_response, deserialized, {}) # type: ignore - api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-03-02-preview")) - accept = _headers.pop("Accept", "application/json") + return deserialized # type: ignore - # Construct URL - _url = "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ContainerService/managedClusters/{resourceName}/identityBindings" - path_format_arguments = { - "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, "str"), - "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, "str"), - "resourceName": _SERIALIZER.url("resource_name", resource_name, "str"), - } + def _create_or_update_initial( + self, + resource_group_name: str, + resource_name: str, + agent_pool_name: str, + parameters: Union[_models.AgentPool, JSON, IO[bytes]], + *, + etag: Optional[str] = None, + match_condition: Optional[MatchConditions] = None, + **kwargs: Any + ) -> Iterator[bytes]: + error_map: MutableMapping = { + 401: ClientAuthenticationError, + 404: ResourceNotFoundError, + 409: ResourceExistsError, + 304: ResourceNotModifiedError, + } + if match_condition == MatchConditions.IfNotModified: + error_map[412] = ResourceModifiedError + elif match_condition == MatchConditions.IfPresent: + error_map[412] = ResourceNotFoundError + elif match_condition == MatchConditions.IfMissing: + error_map[412] = ResourceExistsError + error_map.update(kwargs.pop("error_map", {}) or {}) - _url: str = _url.format(**path_format_arguments) # type: ignore + _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) + _params = kwargs.pop("params", {}) or {} - # Construct parameters - _params["api-version"] = _SERIALIZER.query("api_version", api_version, "str") + content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) + cls: ClsType[Iterator[bytes]] = kwargs.pop("cls", None) - # Construct headers - _headers["Accept"] = _SERIALIZER.header("accept", accept, "str") + content_type = content_type or "application/json" + _content = None + if isinstance(parameters, (IOBase, bytes)): + _content = parameters + else: + _content = json.dumps(parameters, cls=SdkJSONEncoder, exclude_readonly=True) # type: ignore - return HttpRequest(method="GET", url=_url, params=_params, headers=_headers, **kwargs) + _request = build_agent_pools_create_or_update_request( + resource_group_name=resource_group_name, + resource_name=resource_name, + agent_pool_name=agent_pool_name, + subscription_id=self._config.subscription_id, + etag=etag, + match_condition=match_condition, + content_type=content_type, + api_version=self._config.api_version, + content=_content, + headers=_headers, + params=_params, + ) + path_format_arguments = { + "endpoint": self._serialize.url("self._config.base_url", self._config.base_url, "str", skip_quote=True), + } + _request.url = self._client.format_url(_request.url, **path_format_arguments) + _decompress = kwargs.pop("decompress", True) + _stream = True + pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access + _request, stream=_stream, **kwargs + ) -def build_jwt_authenticators_get_request( - resource_group_name: str, resource_name: str, jwt_authenticator_name: str, subscription_id: str, **kwargs: Any -) -> HttpRequest: - _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) - _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) + response = pipeline_response.http_response - api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-03-02-preview")) - accept = _headers.pop("Accept", "application/json") + if response.status_code not in [200, 201]: + try: + response.read() # Load the body in memory and close the socket + except (StreamConsumedError, StreamClosedError): + pass + map_error(status_code=response.status_code, response=response, error_map=error_map) + error = _failsafe_deserialize( + _models.ErrorResponse, + response, + ) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - # Construct URL - _url = "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ContainerService/managedClusters/{resourceName}/jwtAuthenticators/{jwtAuthenticatorName}" - path_format_arguments = { - "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, "str"), - "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, "str"), - "resourceName": _SERIALIZER.url("resource_name", resource_name, "str"), - "jwtAuthenticatorName": _SERIALIZER.url("jwt_authenticator_name", jwt_authenticator_name, "str"), - } + response_headers = {} + if response.status_code == 201: + response_headers["Azure-AsyncOperation"] = self._deserialize( + "str", response.headers.get("Azure-AsyncOperation") + ) + response_headers["Retry-After"] = self._deserialize("int", response.headers.get("Retry-After")) - _url: str = _url.format(**path_format_arguments) # type: ignore + deserialized = response.iter_bytes() if _decompress else response.iter_raw() - # Construct parameters - _params["api-version"] = _SERIALIZER.query("api_version", api_version, "str") + if cls: + return cls(pipeline_response, deserialized, response_headers) # type: ignore - # Construct headers - _headers["Accept"] = _SERIALIZER.header("accept", accept, "str") + return deserialized # type: ignore - return HttpRequest(method="GET", url=_url, params=_params, headers=_headers, **kwargs) + @overload + def begin_create_or_update( + self, + resource_group_name: str, + resource_name: str, + agent_pool_name: str, + parameters: _models.AgentPool, + *, + content_type: str = "application/json", + etag: Optional[str] = None, + match_condition: Optional[MatchConditions] = None, + **kwargs: Any + ) -> LROPoller[_models.AgentPool]: + """Creates or updates an agent pool in the specified managed cluster. + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param resource_name: The name of the managed cluster resource. Required. + :type resource_name: str + :param agent_pool_name: The name of the agent pool. Required. + :type agent_pool_name: str + :param parameters: The agent pool to create or update. Required. + :type parameters: ~azure.mgmt.containerservice.models.AgentPool + :keyword content_type: Body Parameter content-type. Content type parameter for JSON body. + Default value is "application/json". + :paramtype content_type: str + :keyword etag: check if resource is changed. Set None to skip checking etag. Default value is + None. + :paramtype etag: str + :keyword match_condition: The match condition to use upon the etag. Default value is None. + :paramtype match_condition: ~azure.core.MatchConditions + :return: An instance of LROPoller that returns AgentPool. The AgentPool is compatible with + MutableMapping + :rtype: ~azure.core.polling.LROPoller[~azure.mgmt.containerservice.models.AgentPool] + :raises ~azure.core.exceptions.HttpResponseError: + """ -def build_jwt_authenticators_create_or_update_request( # pylint: disable=name-too-long - resource_group_name: str, resource_name: str, jwt_authenticator_name: str, subscription_id: str, **kwargs: Any -) -> HttpRequest: - _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) - _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) + @overload + def begin_create_or_update( + self, + resource_group_name: str, + resource_name: str, + agent_pool_name: str, + parameters: JSON, + *, + content_type: str = "application/json", + etag: Optional[str] = None, + match_condition: Optional[MatchConditions] = None, + **kwargs: Any + ) -> LROPoller[_models.AgentPool]: + """Creates or updates an agent pool in the specified managed cluster. - content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) - api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-03-02-preview")) - accept = _headers.pop("Accept", "application/json") + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param resource_name: The name of the managed cluster resource. Required. + :type resource_name: str + :param agent_pool_name: The name of the agent pool. Required. + :type agent_pool_name: str + :param parameters: The agent pool to create or update. Required. + :type parameters: JSON + :keyword content_type: Body Parameter content-type. Content type parameter for JSON body. + Default value is "application/json". + :paramtype content_type: str + :keyword etag: check if resource is changed. Set None to skip checking etag. Default value is + None. + :paramtype etag: str + :keyword match_condition: The match condition to use upon the etag. Default value is None. + :paramtype match_condition: ~azure.core.MatchConditions + :return: An instance of LROPoller that returns AgentPool. The AgentPool is compatible with + MutableMapping + :rtype: ~azure.core.polling.LROPoller[~azure.mgmt.containerservice.models.AgentPool] + :raises ~azure.core.exceptions.HttpResponseError: + """ - # Construct URL - _url = "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ContainerService/managedClusters/{resourceName}/jwtAuthenticators/{jwtAuthenticatorName}" - path_format_arguments = { - "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, "str"), - "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, "str"), - "resourceName": _SERIALIZER.url("resource_name", resource_name, "str"), - "jwtAuthenticatorName": _SERIALIZER.url("jwt_authenticator_name", jwt_authenticator_name, "str"), - } + @overload + def begin_create_or_update( + self, + resource_group_name: str, + resource_name: str, + agent_pool_name: str, + parameters: IO[bytes], + *, + content_type: str = "application/json", + etag: Optional[str] = None, + match_condition: Optional[MatchConditions] = None, + **kwargs: Any + ) -> LROPoller[_models.AgentPool]: + """Creates or updates an agent pool in the specified managed cluster. - _url: str = _url.format(**path_format_arguments) # type: ignore + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param resource_name: The name of the managed cluster resource. Required. + :type resource_name: str + :param agent_pool_name: The name of the agent pool. Required. + :type agent_pool_name: str + :param parameters: The agent pool to create or update. Required. + :type parameters: IO[bytes] + :keyword content_type: Body Parameter content-type. Content type parameter for binary body. + Default value is "application/json". + :paramtype content_type: str + :keyword etag: check if resource is changed. Set None to skip checking etag. Default value is + None. + :paramtype etag: str + :keyword match_condition: The match condition to use upon the etag. Default value is None. + :paramtype match_condition: ~azure.core.MatchConditions + :return: An instance of LROPoller that returns AgentPool. The AgentPool is compatible with + MutableMapping + :rtype: ~azure.core.polling.LROPoller[~azure.mgmt.containerservice.models.AgentPool] + :raises ~azure.core.exceptions.HttpResponseError: + """ - # Construct parameters - _params["api-version"] = _SERIALIZER.query("api_version", api_version, "str") + @distributed_trace + def begin_create_or_update( + self, + resource_group_name: str, + resource_name: str, + agent_pool_name: str, + parameters: Union[_models.AgentPool, JSON, IO[bytes]], + *, + etag: Optional[str] = None, + match_condition: Optional[MatchConditions] = None, + **kwargs: Any + ) -> LROPoller[_models.AgentPool]: + """Creates or updates an agent pool in the specified managed cluster. - # Construct headers - if content_type is not None: - _headers["Content-Type"] = _SERIALIZER.header("content_type", content_type, "str") - _headers["Accept"] = _SERIALIZER.header("accept", accept, "str") - - return HttpRequest(method="PUT", url=_url, params=_params, headers=_headers, **kwargs) - - -def build_jwt_authenticators_delete_request( - resource_group_name: str, resource_name: str, jwt_authenticator_name: str, subscription_id: str, **kwargs: Any -) -> HttpRequest: - _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - - api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-03-02-preview")) - # Construct URL - _url = "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ContainerService/managedClusters/{resourceName}/jwtAuthenticators/{jwtAuthenticatorName}" - path_format_arguments = { - "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, "str"), - "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, "str"), - "resourceName": _SERIALIZER.url("resource_name", resource_name, "str"), - "jwtAuthenticatorName": _SERIALIZER.url("jwt_authenticator_name", jwt_authenticator_name, "str"), - } - - _url: str = _url.format(**path_format_arguments) # type: ignore + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param resource_name: The name of the managed cluster resource. Required. + :type resource_name: str + :param agent_pool_name: The name of the agent pool. Required. + :type agent_pool_name: str + :param parameters: The agent pool to create or update. Is one of the following types: + AgentPool, JSON, IO[bytes] Required. + :type parameters: ~azure.mgmt.containerservice.models.AgentPool or JSON or IO[bytes] + :keyword etag: check if resource is changed. Set None to skip checking etag. Default value is + None. + :paramtype etag: str + :keyword match_condition: The match condition to use upon the etag. Default value is None. + :paramtype match_condition: ~azure.core.MatchConditions + :return: An instance of LROPoller that returns AgentPool. The AgentPool is compatible with + MutableMapping + :rtype: ~azure.core.polling.LROPoller[~azure.mgmt.containerservice.models.AgentPool] + :raises ~azure.core.exceptions.HttpResponseError: + """ + _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) + _params = kwargs.pop("params", {}) or {} - # Construct parameters - _params["api-version"] = _SERIALIZER.query("api_version", api_version, "str") + content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) + cls: ClsType[_models.AgentPool] = kwargs.pop("cls", None) + polling: Union[bool, PollingMethod] = kwargs.pop("polling", True) + lro_delay = kwargs.pop("polling_interval", self._config.polling_interval) + cont_token: Optional[str] = kwargs.pop("continuation_token", None) + if cont_token is None: + raw_result = self._create_or_update_initial( + resource_group_name=resource_group_name, + resource_name=resource_name, + agent_pool_name=agent_pool_name, + parameters=parameters, + etag=etag, + match_condition=match_condition, + content_type=content_type, + cls=lambda x, y, z: x, + headers=_headers, + params=_params, + **kwargs + ) + raw_result.http_response.read() # type: ignore + kwargs.pop("error_map", None) - return HttpRequest(method="DELETE", url=_url, params=_params, **kwargs) + def get_long_running_output(pipeline_response): + response = pipeline_response.http_response + deserialized = _deserialize(_models.AgentPool, response.json()) + if cls: + return cls(pipeline_response, deserialized, {}) # type: ignore + return deserialized + path_format_arguments = { + "endpoint": self._serialize.url("self._config.base_url", self._config.base_url, "str", skip_quote=True), + } -def build_jwt_authenticators_list_by_managed_cluster_request( # pylint: disable=name-too-long - resource_group_name: str, resource_name: str, subscription_id: str, **kwargs: Any -) -> HttpRequest: - _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) - _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) + if polling is True: + polling_method: PollingMethod = cast( + PollingMethod, ARMPolling(lro_delay, path_format_arguments=path_format_arguments, **kwargs) + ) + elif polling is False: + polling_method = cast(PollingMethod, NoPolling()) + else: + polling_method = polling + if cont_token: + return LROPoller[_models.AgentPool].from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output, + ) + return LROPoller[_models.AgentPool]( + self._client, raw_result, get_long_running_output, polling_method # type: ignore + ) - api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-03-02-preview")) - accept = _headers.pop("Accept", "application/json") + def _delete_initial( + self, + resource_group_name: str, + resource_name: str, + agent_pool_name: str, + *, + ignore_pod_disruption_budget: Optional[bool] = None, + etag: Optional[str] = None, + match_condition: Optional[MatchConditions] = None, + **kwargs: Any + ) -> Iterator[bytes]: + error_map: MutableMapping = { + 401: ClientAuthenticationError, + 404: ResourceNotFoundError, + 409: ResourceExistsError, + 304: ResourceNotModifiedError, + } + if match_condition == MatchConditions.IfNotModified: + error_map[412] = ResourceModifiedError + elif match_condition == MatchConditions.IfPresent: + error_map[412] = ResourceNotFoundError + elif match_condition == MatchConditions.IfMissing: + error_map[412] = ResourceExistsError + error_map.update(kwargs.pop("error_map", {}) or {}) - # Construct URL - _url = "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ContainerService/managedClusters/{resourceName}/jwtAuthenticators" - path_format_arguments = { - "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, "str"), - "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, "str"), - "resourceName": _SERIALIZER.url("resource_name", resource_name, "str"), - } + _headers = kwargs.pop("headers", {}) or {} + _params = kwargs.pop("params", {}) or {} - _url: str = _url.format(**path_format_arguments) # type: ignore + cls: ClsType[Iterator[bytes]] = kwargs.pop("cls", None) - # Construct parameters - _params["api-version"] = _SERIALIZER.query("api_version", api_version, "str") + _request = build_agent_pools_delete_request( + resource_group_name=resource_group_name, + resource_name=resource_name, + agent_pool_name=agent_pool_name, + subscription_id=self._config.subscription_id, + ignore_pod_disruption_budget=ignore_pod_disruption_budget, + etag=etag, + match_condition=match_condition, + api_version=self._config.api_version, + headers=_headers, + params=_params, + ) + path_format_arguments = { + "endpoint": self._serialize.url("self._config.base_url", self._config.base_url, "str", skip_quote=True), + } + _request.url = self._client.format_url(_request.url, **path_format_arguments) - # Construct headers - _headers["Accept"] = _SERIALIZER.header("accept", accept, "str") + _decompress = kwargs.pop("decompress", True) + _stream = True + pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access + _request, stream=_stream, **kwargs + ) - return HttpRequest(method="GET", url=_url, params=_params, headers=_headers, **kwargs) + response = pipeline_response.http_response + if response.status_code not in [202, 204]: + try: + response.read() # Load the body in memory and close the socket + except (StreamConsumedError, StreamClosedError): + pass + map_error(status_code=response.status_code, response=response, error_map=error_map) + error = _failsafe_deserialize( + _models.ErrorResponse, + response, + ) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) -def build_mesh_memberships_get_request( - resource_group_name: str, resource_name: str, mesh_membership_name: str, subscription_id: str, **kwargs: Any -) -> HttpRequest: - _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) - _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) + response_headers = {} + if response.status_code == 202: + response_headers["Azure-AsyncOperation"] = self._deserialize( + "str", response.headers.get("Azure-AsyncOperation") + ) + response_headers["Location"] = self._deserialize("str", response.headers.get("Location")) + response_headers["Retry-After"] = self._deserialize("int", response.headers.get("Retry-After")) - api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-03-02-preview")) - accept = _headers.pop("Accept", "application/json") + deserialized = response.iter_bytes() if _decompress else response.iter_raw() - # Construct URL - _url = "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ContainerService/managedClusters/{resourceName}/meshMemberships/{meshMembershipName}" - path_format_arguments = { - "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, "str"), - "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, "str"), - "resourceName": _SERIALIZER.url("resource_name", resource_name, "str"), - "meshMembershipName": _SERIALIZER.url("mesh_membership_name", mesh_membership_name, "str"), - } + if cls: + return cls(pipeline_response, deserialized, response_headers) # type: ignore - _url: str = _url.format(**path_format_arguments) # type: ignore + return deserialized # type: ignore - # Construct parameters - _params["api-version"] = _SERIALIZER.query("api_version", api_version, "str") + @distributed_trace + def begin_delete( + self, + resource_group_name: str, + resource_name: str, + agent_pool_name: str, + *, + ignore_pod_disruption_budget: Optional[bool] = None, + etag: Optional[str] = None, + match_condition: Optional[MatchConditions] = None, + **kwargs: Any + ) -> LROPoller[None]: + """Deletes an agent pool in the specified managed cluster. - # Construct headers - _headers["Accept"] = _SERIALIZER.header("accept", accept, "str") + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param resource_name: The name of the managed cluster resource. Required. + :type resource_name: str + :param agent_pool_name: The name of the agent pool. Required. + :type agent_pool_name: str + :keyword ignore_pod_disruption_budget: ignore-pod-disruption-budget=true to delete those pods + on a node without considering Pod Disruption Budget. Default value is None. + :paramtype ignore_pod_disruption_budget: bool + :keyword etag: check if resource is changed. Set None to skip checking etag. Default value is + None. + :paramtype etag: str + :keyword match_condition: The match condition to use upon the etag. Default value is None. + :paramtype match_condition: ~azure.core.MatchConditions + :return: An instance of LROPoller that returns None + :rtype: ~azure.core.polling.LROPoller[None] + :raises ~azure.core.exceptions.HttpResponseError: + """ + _headers = kwargs.pop("headers", {}) or {} + _params = kwargs.pop("params", {}) or {} - return HttpRequest(method="GET", url=_url, params=_params, headers=_headers, **kwargs) + cls: ClsType[None] = kwargs.pop("cls", None) + polling: Union[bool, PollingMethod] = kwargs.pop("polling", True) + lro_delay = kwargs.pop("polling_interval", self._config.polling_interval) + cont_token: Optional[str] = kwargs.pop("continuation_token", None) + if cont_token is None: + raw_result = self._delete_initial( + resource_group_name=resource_group_name, + resource_name=resource_name, + agent_pool_name=agent_pool_name, + ignore_pod_disruption_budget=ignore_pod_disruption_budget, + etag=etag, + match_condition=match_condition, + cls=lambda x, y, z: x, + headers=_headers, + params=_params, + **kwargs + ) + raw_result.http_response.read() # type: ignore + kwargs.pop("error_map", None) + def get_long_running_output(pipeline_response): # pylint: disable=inconsistent-return-statements + if cls: + return cls(pipeline_response, None, {}) # type: ignore -def build_mesh_memberships_create_or_update_request( # pylint: disable=name-too-long - resource_group_name: str, resource_name: str, mesh_membership_name: str, subscription_id: str, **kwargs: Any -) -> HttpRequest: - _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) - _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) + path_format_arguments = { + "endpoint": self._serialize.url("self._config.base_url", self._config.base_url, "str", skip_quote=True), + } - content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) - api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-03-02-preview")) - accept = _headers.pop("Accept", "application/json") - - # Construct URL - _url = "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ContainerService/managedClusters/{resourceName}/meshMemberships/{meshMembershipName}" - path_format_arguments = { - "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, "str"), - "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, "str"), - "resourceName": _SERIALIZER.url("resource_name", resource_name, "str"), - "meshMembershipName": _SERIALIZER.url("mesh_membership_name", mesh_membership_name, "str"), - } - - _url: str = _url.format(**path_format_arguments) # type: ignore - - # Construct parameters - _params["api-version"] = _SERIALIZER.query("api_version", api_version, "str") - - # Construct headers - if content_type is not None: - _headers["Content-Type"] = _SERIALIZER.header("content_type", content_type, "str") - _headers["Accept"] = _SERIALIZER.header("accept", accept, "str") + if polling is True: + polling_method: PollingMethod = cast( + PollingMethod, ARMPolling(lro_delay, path_format_arguments=path_format_arguments, **kwargs) + ) + elif polling is False: + polling_method = cast(PollingMethod, NoPolling()) + else: + polling_method = polling + if cont_token: + return LROPoller[None].from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output, + ) + return LROPoller[None](self._client, raw_result, get_long_running_output, polling_method) # type: ignore - return HttpRequest(method="PUT", url=_url, params=_params, headers=_headers, **kwargs) + @distributed_trace + def list(self, resource_group_name: str, resource_name: str, **kwargs: Any) -> ItemPaged["_models.AgentPool"]: + """Gets a list of agent pools in the specified managed cluster. + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param resource_name: The name of the managed cluster resource. Required. + :type resource_name: str + :return: An iterator like instance of AgentPool + :rtype: ~azure.core.paging.ItemPaged[~azure.mgmt.containerservice.models.AgentPool] + :raises ~azure.core.exceptions.HttpResponseError: + """ + _headers = kwargs.pop("headers", {}) or {} + _params = kwargs.pop("params", {}) or {} -def build_mesh_memberships_delete_request( - resource_group_name: str, resource_name: str, mesh_membership_name: str, subscription_id: str, **kwargs: Any -) -> HttpRequest: - _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) + cls: ClsType[List[_models.AgentPool]] = kwargs.pop("cls", None) - api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-03-02-preview")) - # Construct URL - _url = "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ContainerService/managedClusters/{resourceName}/meshMemberships/{meshMembershipName}" - path_format_arguments = { - "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, "str"), - "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, "str"), - "resourceName": _SERIALIZER.url("resource_name", resource_name, "str"), - "meshMembershipName": _SERIALIZER.url("mesh_membership_name", mesh_membership_name, "str"), - } + error_map: MutableMapping = { + 401: ClientAuthenticationError, + 404: ResourceNotFoundError, + 409: ResourceExistsError, + 304: ResourceNotModifiedError, + } + error_map.update(kwargs.pop("error_map", {}) or {}) - _url: str = _url.format(**path_format_arguments) # type: ignore + def prepare_request(next_link=None): + if not next_link: - # Construct parameters - _params["api-version"] = _SERIALIZER.query("api_version", api_version, "str") + _request = build_agent_pools_list_request( + resource_group_name=resource_group_name, + resource_name=resource_name, + subscription_id=self._config.subscription_id, + api_version=self._config.api_version, + headers=_headers, + params=_params, + ) + path_format_arguments = { + "endpoint": self._serialize.url( + "self._config.base_url", self._config.base_url, "str", skip_quote=True + ), + } + _request.url = self._client.format_url(_request.url, **path_format_arguments) - return HttpRequest(method="DELETE", url=_url, params=_params, **kwargs) + else: + # make call to next link with the client's api-version + _parsed_next_link = urllib.parse.urlparse(next_link) + _next_request_params = case_insensitive_dict( + { + key: [urllib.parse.quote(v) for v in value] + for key, value in urllib.parse.parse_qs(_parsed_next_link.query).items() + } + ) + _next_request_params["api-version"] = self._config.api_version + _request = HttpRequest( + "GET", + urllib.parse.urljoin(next_link, _parsed_next_link.path), + headers=_headers, + params=_next_request_params, + ) + path_format_arguments = { + "endpoint": self._serialize.url( + "self._config.base_url", self._config.base_url, "str", skip_quote=True + ), + } + _request.url = self._client.format_url(_request.url, **path_format_arguments) + return _request -def build_mesh_memberships_list_by_managed_cluster_request( # pylint: disable=name-too-long - resource_group_name: str, resource_name: str, subscription_id: str, **kwargs: Any -) -> HttpRequest: - _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) - _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) + def extract_data(pipeline_response): + deserialized = pipeline_response.http_response.json() + list_of_elem = _deserialize( + List[_models.AgentPool], + deserialized.get("value", []), + ) + if cls: + list_of_elem = cls(list_of_elem) # type: ignore + return deserialized.get("nextLink") or None, iter(list_of_elem) - api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-03-02-preview")) - accept = _headers.pop("Accept", "application/json") + def get_next(next_link=None): + _request = prepare_request(next_link) - # Construct URL - _url = "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ContainerService/managedClusters/{resourceName}/meshMemberships" - path_format_arguments = { - "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, "str"), - "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, "str"), - "resourceName": _SERIALIZER.url("resource_name", resource_name, "str"), - } + _stream = False + pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access + _request, stream=_stream, **kwargs + ) + response = pipeline_response.http_response - _url: str = _url.format(**path_format_arguments) # type: ignore + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + error = _failsafe_deserialize( + _models.ErrorResponse, + response, + ) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - # Construct parameters - _params["api-version"] = _SERIALIZER.query("api_version", api_version, "str") + return pipeline_response - # Construct headers - _headers["Accept"] = _SERIALIZER.header("accept", accept, "str") + return ItemPaged(get_next, extract_data) - return HttpRequest(method="GET", url=_url, params=_params, headers=_headers, **kwargs) + def _abort_latest_operation_initial( + self, resource_group_name: str, resource_name: str, agent_pool_name: str, **kwargs: Any + ) -> Iterator[bytes]: + error_map: MutableMapping = { + 401: ClientAuthenticationError, + 404: ResourceNotFoundError, + 409: ResourceExistsError, + 304: ResourceNotModifiedError, + } + error_map.update(kwargs.pop("error_map", {}) or {}) + _headers = kwargs.pop("headers", {}) or {} + _params = kwargs.pop("params", {}) or {} -def build_operations_list_request(**kwargs: Any) -> HttpRequest: - _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) - _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) + cls: ClsType[Iterator[bytes]] = kwargs.pop("cls", None) - api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-03-02-preview")) - accept = _headers.pop("Accept", "application/json") + _request = build_agent_pools_abort_latest_operation_request( + resource_group_name=resource_group_name, + resource_name=resource_name, + agent_pool_name=agent_pool_name, + subscription_id=self._config.subscription_id, + api_version=self._config.api_version, + headers=_headers, + params=_params, + ) + path_format_arguments = { + "endpoint": self._serialize.url("self._config.base_url", self._config.base_url, "str", skip_quote=True), + } + _request.url = self._client.format_url(_request.url, **path_format_arguments) - # Construct URL - _url = "/providers/Microsoft.ContainerService/operations" + _decompress = kwargs.pop("decompress", True) + _stream = True + pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access + _request, stream=_stream, **kwargs + ) - # Construct parameters - _params["api-version"] = _SERIALIZER.query("api_version", api_version, "str") + response = pipeline_response.http_response - # Construct headers - _headers["Accept"] = _SERIALIZER.header("accept", accept, "str") + if response.status_code not in [202, 204]: + try: + response.read() # Load the body in memory and close the socket + except (StreamConsumedError, StreamClosedError): + pass + map_error(status_code=response.status_code, response=response, error_map=error_map) + error = _failsafe_deserialize( + _models.ErrorResponse, + response, + ) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - return HttpRequest(method="GET", url=_url, params=_params, headers=_headers, **kwargs) + response_headers = {} + if response.status_code == 202: + response_headers["Azure-AsyncOperation"] = self._deserialize( + "str", response.headers.get("Azure-AsyncOperation") + ) + response_headers["Location"] = self._deserialize("str", response.headers.get("Location")) + response_headers["Retry-After"] = self._deserialize("int", response.headers.get("Retry-After")) + deserialized = response.iter_bytes() if _decompress else response.iter_raw() -def build_operation_status_result_get_by_agent_pool_request( # pylint: disable=name-too-long - resource_group_name: str, - resource_name: str, - agent_pool_name: str, - operation_id: str, - subscription_id: str, - **kwargs: Any -) -> HttpRequest: - _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) - _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) + if cls: + return cls(pipeline_response, deserialized, response_headers) # type: ignore - api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-03-02-preview")) - accept = _headers.pop("Accept", "application/json") + return deserialized # type: ignore - # Construct URL - _url = "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ContainerService/managedClusters/{resourceName}/agentPools/{agentPoolName}/operations/{operationId}" - path_format_arguments = { - "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, "str"), - "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, "str"), - "resourceName": _SERIALIZER.url("resource_name", resource_name, "str"), - "agentPoolName": _SERIALIZER.url("agent_pool_name", agent_pool_name, "str"), - "operationId": _SERIALIZER.url("operation_id", operation_id, "str"), - } + @distributed_trace + def begin_abort_latest_operation( + self, resource_group_name: str, resource_name: str, agent_pool_name: str, **kwargs: Any + ) -> LROPoller[None]: + """Aborts last operation running on agent pool. - _url: str = _url.format(**path_format_arguments) # type: ignore + Aborts the currently running operation on the agent pool. The Agent Pool will be moved to a + Canceling state and eventually to a Canceled state when cancellation finishes. If the operation + completes before cancellation can take place, a 409 error code is returned. - # Construct parameters - _params["api-version"] = _SERIALIZER.query("api_version", api_version, "str") + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param resource_name: The name of the managed cluster resource. Required. + :type resource_name: str + :param agent_pool_name: The name of the agent pool. Required. + :type agent_pool_name: str + :return: An instance of LROPoller that returns None + :rtype: ~azure.core.polling.LROPoller[None] + :raises ~azure.core.exceptions.HttpResponseError: + """ + _headers = kwargs.pop("headers", {}) or {} + _params = kwargs.pop("params", {}) or {} - # Construct headers - _headers["Accept"] = _SERIALIZER.header("accept", accept, "str") - - return HttpRequest(method="GET", url=_url, params=_params, headers=_headers, **kwargs) - - -def build_operation_status_result_list_request( # pylint: disable=name-too-long - resource_group_name: str, resource_name: str, subscription_id: str, **kwargs: Any -) -> HttpRequest: - _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) - _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) + cls: ClsType[None] = kwargs.pop("cls", None) + polling: Union[bool, PollingMethod] = kwargs.pop("polling", True) + lro_delay = kwargs.pop("polling_interval", self._config.polling_interval) + cont_token: Optional[str] = kwargs.pop("continuation_token", None) + if cont_token is None: + raw_result = self._abort_latest_operation_initial( + resource_group_name=resource_group_name, + resource_name=resource_name, + agent_pool_name=agent_pool_name, + cls=lambda x, y, z: x, + headers=_headers, + params=_params, + **kwargs + ) + raw_result.http_response.read() # type: ignore + kwargs.pop("error_map", None) - api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-03-02-preview")) - accept = _headers.pop("Accept", "application/json") + def get_long_running_output(pipeline_response): # pylint: disable=inconsistent-return-statements + if cls: + return cls(pipeline_response, None, {}) # type: ignore - # Construct URL - _url = "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ContainerService/managedClusters/{resourceName}/operations" - path_format_arguments = { - "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, "str"), - "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, "str"), - "resourceName": _SERIALIZER.url("resource_name", resource_name, "str"), - } + path_format_arguments = { + "endpoint": self._serialize.url("self._config.base_url", self._config.base_url, "str", skip_quote=True), + } - _url: str = _url.format(**path_format_arguments) # type: ignore + if polling is True: + polling_method: PollingMethod = cast( + PollingMethod, ARMPolling(lro_delay, path_format_arguments=path_format_arguments, **kwargs) + ) + elif polling is False: + polling_method = cast(PollingMethod, NoPolling()) + else: + polling_method = polling + if cont_token: + return LROPoller[None].from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output, + ) + return LROPoller[None](self._client, raw_result, get_long_running_output, polling_method) # type: ignore - # Construct parameters - _params["api-version"] = _SERIALIZER.query("api_version", api_version, "str") + def _delete_machines_initial( + self, + resource_group_name: str, + resource_name: str, + agent_pool_name: str, + machines: Union[_models.AgentPoolDeleteMachinesParameter, JSON, IO[bytes]], + **kwargs: Any + ) -> Iterator[bytes]: + error_map: MutableMapping = { + 401: ClientAuthenticationError, + 404: ResourceNotFoundError, + 409: ResourceExistsError, + 304: ResourceNotModifiedError, + } + error_map.update(kwargs.pop("error_map", {}) or {}) - # Construct headers - _headers["Accept"] = _SERIALIZER.header("accept", accept, "str") + _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) + _params = kwargs.pop("params", {}) or {} - return HttpRequest(method="GET", url=_url, params=_params, headers=_headers, **kwargs) + content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) + cls: ClsType[Iterator[bytes]] = kwargs.pop("cls", None) + content_type = content_type or "application/json" + _content = None + if isinstance(machines, (IOBase, bytes)): + _content = machines + else: + _content = json.dumps(machines, cls=SdkJSONEncoder, exclude_readonly=True) # type: ignore -def build_operation_status_result_get_request( # pylint: disable=name-too-long - resource_group_name: str, resource_name: str, operation_id: str, subscription_id: str, **kwargs: Any -) -> HttpRequest: - _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) - _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) + _request = build_agent_pools_delete_machines_request( + resource_group_name=resource_group_name, + resource_name=resource_name, + agent_pool_name=agent_pool_name, + subscription_id=self._config.subscription_id, + content_type=content_type, + api_version=self._config.api_version, + content=_content, + headers=_headers, + params=_params, + ) + path_format_arguments = { + "endpoint": self._serialize.url("self._config.base_url", self._config.base_url, "str", skip_quote=True), + } + _request.url = self._client.format_url(_request.url, **path_format_arguments) - api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-03-02-preview")) - accept = _headers.pop("Accept", "application/json") + _decompress = kwargs.pop("decompress", True) + _stream = True + pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access + _request, stream=_stream, **kwargs + ) - # Construct URL - _url = "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ContainerService/managedClusters/{resourceName}/operations/{operationId}" - path_format_arguments = { - "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, "str"), - "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, "str"), - "resourceName": _SERIALIZER.url("resource_name", resource_name, "str"), - "operationId": _SERIALIZER.url("operation_id", operation_id, "str"), - } + response = pipeline_response.http_response - _url: str = _url.format(**path_format_arguments) # type: ignore + if response.status_code not in [202]: + try: + response.read() # Load the body in memory and close the socket + except (StreamConsumedError, StreamClosedError): + pass + map_error(status_code=response.status_code, response=response, error_map=error_map) + error = _failsafe_deserialize( + _models.ErrorResponse, + response, + ) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - # Construct parameters - _params["api-version"] = _SERIALIZER.query("api_version", api_version, "str") + response_headers = {} + response_headers["Azure-AsyncOperation"] = self._deserialize( + "str", response.headers.get("Azure-AsyncOperation") + ) + response_headers["Location"] = self._deserialize("str", response.headers.get("Location")) + response_headers["Retry-After"] = self._deserialize("int", response.headers.get("Retry-After")) - # Construct headers - _headers["Accept"] = _SERIALIZER.header("accept", accept, "str") + deserialized = response.iter_bytes() if _decompress else response.iter_raw() - return HttpRequest(method="GET", url=_url, params=_params, headers=_headers, **kwargs) + if cls: + return cls(pipeline_response, deserialized, response_headers) # type: ignore + return deserialized # type: ignore -def build_private_link_resources_list_request( # pylint: disable=name-too-long - resource_group_name: str, resource_name: str, subscription_id: str, **kwargs: Any -) -> HttpRequest: - _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) - _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) + @overload + def begin_delete_machines( + self, + resource_group_name: str, + resource_name: str, + agent_pool_name: str, + machines: _models.AgentPoolDeleteMachinesParameter, + *, + content_type: str = "application/json", + **kwargs: Any + ) -> LROPoller[None]: + """Deletes specific machines in an agent pool. - api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-03-02-preview")) - accept = _headers.pop("Accept", "application/json") + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param resource_name: The name of the managed cluster resource. Required. + :type resource_name: str + :param agent_pool_name: The name of the agent pool. Required. + :type agent_pool_name: str + :param machines: A list of machines from the agent pool to be deleted. Required. + :type machines: ~azure.mgmt.containerservice.models.AgentPoolDeleteMachinesParameter + :keyword content_type: Body Parameter content-type. Content type parameter for JSON body. + Default value is "application/json". + :paramtype content_type: str + :return: An instance of LROPoller that returns None + :rtype: ~azure.core.polling.LROPoller[None] + :raises ~azure.core.exceptions.HttpResponseError: + """ - # Construct URL - _url = "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ContainerService/managedClusters/{resourceName}/privateLinkResources" - path_format_arguments = { - "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, "str"), - "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, "str"), - "resourceName": _SERIALIZER.url("resource_name", resource_name, "str"), - } + @overload + def begin_delete_machines( + self, + resource_group_name: str, + resource_name: str, + agent_pool_name: str, + machines: JSON, + *, + content_type: str = "application/json", + **kwargs: Any + ) -> LROPoller[None]: + """Deletes specific machines in an agent pool. - _url: str = _url.format(**path_format_arguments) # type: ignore + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param resource_name: The name of the managed cluster resource. Required. + :type resource_name: str + :param agent_pool_name: The name of the agent pool. Required. + :type agent_pool_name: str + :param machines: A list of machines from the agent pool to be deleted. Required. + :type machines: JSON + :keyword content_type: Body Parameter content-type. Content type parameter for JSON body. + Default value is "application/json". + :paramtype content_type: str + :return: An instance of LROPoller that returns None + :rtype: ~azure.core.polling.LROPoller[None] + :raises ~azure.core.exceptions.HttpResponseError: + """ - # Construct parameters - _params["api-version"] = _SERIALIZER.query("api_version", api_version, "str") + @overload + def begin_delete_machines( + self, + resource_group_name: str, + resource_name: str, + agent_pool_name: str, + machines: IO[bytes], + *, + content_type: str = "application/json", + **kwargs: Any + ) -> LROPoller[None]: + """Deletes specific machines in an agent pool. - # Construct headers - _headers["Accept"] = _SERIALIZER.header("accept", accept, "str") + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param resource_name: The name of the managed cluster resource. Required. + :type resource_name: str + :param agent_pool_name: The name of the agent pool. Required. + :type agent_pool_name: str + :param machines: A list of machines from the agent pool to be deleted. Required. + :type machines: IO[bytes] + :keyword content_type: Body Parameter content-type. Content type parameter for binary body. + Default value is "application/json". + :paramtype content_type: str + :return: An instance of LROPoller that returns None + :rtype: ~azure.core.polling.LROPoller[None] + :raises ~azure.core.exceptions.HttpResponseError: + """ - return HttpRequest(method="GET", url=_url, params=_params, headers=_headers, **kwargs) - - -def build_resolve_private_link_service_id_post_request( # pylint: disable=name-too-long - resource_group_name: str, resource_name: str, subscription_id: str, **kwargs: Any -) -> HttpRequest: - _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) - _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - - content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) - api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-03-02-preview")) - accept = _headers.pop("Accept", "application/json") - - # Construct URL - _url = "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ContainerService/managedClusters/{resourceName}/resolvePrivateLinkServiceId" - path_format_arguments = { - "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, "str"), - "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, "str"), - "resourceName": _SERIALIZER.url("resource_name", resource_name, "str"), - } - - _url: str = _url.format(**path_format_arguments) # type: ignore - - # Construct parameters - _params["api-version"] = _SERIALIZER.query("api_version", api_version, "str") - - # Construct headers - if content_type is not None: - _headers["Content-Type"] = _SERIALIZER.header("content_type", content_type, "str") - _headers["Accept"] = _SERIALIZER.header("accept", accept, "str") - - return HttpRequest(method="POST", url=_url, params=_params, headers=_headers, **kwargs) - - -def build_trusted_access_roles_list_request(location: str, subscription_id: str, **kwargs: Any) -> HttpRequest: - _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) - _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - - api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-03-02-preview")) - accept = _headers.pop("Accept", "application/json") - - # Construct URL - _url = ( - "/subscriptions/{subscriptionId}/providers/Microsoft.ContainerService/locations/{location}/trustedAccessRoles" - ) - path_format_arguments = { - "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, "str"), - "location": _SERIALIZER.url("location", location, "str"), - } - - _url: str = _url.format(**path_format_arguments) # type: ignore - - # Construct parameters - _params["api-version"] = _SERIALIZER.query("api_version", api_version, "str") - - # Construct headers - _headers["Accept"] = _SERIALIZER.header("accept", accept, "str") - - return HttpRequest(method="GET", url=_url, params=_params, headers=_headers, **kwargs) - - -def build_container_service_list_node_image_versions_request( # pylint: disable=name-too-long - location: str, subscription_id: str, **kwargs: Any -) -> HttpRequest: - _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) - _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - - api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-03-02-preview")) - accept = _headers.pop("Accept", "application/json") - - # Construct URL - _url = "/subscriptions/{subscriptionId}/providers/Microsoft.ContainerService/locations/{location}/nodeImageVersions" - path_format_arguments = { - "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, "str"), - "location": _SERIALIZER.url("location", location, "str"), - } - - _url: str = _url.format(**path_format_arguments) # type: ignore - - # Construct parameters - _params["api-version"] = _SERIALIZER.query("api_version", api_version, "str") - - # Construct headers - _headers["Accept"] = _SERIALIZER.header("accept", accept, "str") - - return HttpRequest(method="GET", url=_url, params=_params, headers=_headers, **kwargs) - - -def build_vm_skus_list_request( - location: str, subscription_id: str, *, include_extended_locations: Optional[bool] = None, **kwargs: Any -) -> HttpRequest: - _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) - _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - - api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2026-03-02-preview")) - accept = _headers.pop("Accept", "application/json") - - # Construct URL - _url = "/subscriptions/{subscriptionId}/providers/Microsoft.ContainerService/locations/{location}/vmSkus" - path_format_arguments = { - "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, "str"), - "location": _SERIALIZER.url("location", location, "str"), - } - - _url: str = _url.format(**path_format_arguments) # type: ignore - - # Construct parameters - _params["api-version"] = _SERIALIZER.query("api_version", api_version, "str") - if include_extended_locations is not None: - _params["includeExtendedLocations"] = _SERIALIZER.query( - "include_extended_locations", include_extended_locations, "bool" - ) - - # Construct headers - _headers["Accept"] = _SERIALIZER.header("accept", accept, "str") - - return HttpRequest(method="GET", url=_url, params=_params, headers=_headers, **kwargs) - - -class AgentPoolsOperations: - """ - .. warning:: - **DO NOT** instantiate this class directly. - - Instead, you should access the following operations through - :class:`~azure.mgmt.containerservice.ContainerServiceClient`'s - :attr:`agent_pools` attribute. - """ - - def __init__(self, *args, **kwargs) -> None: - input_args = list(args) - self._client: PipelineClient = input_args.pop(0) if input_args else kwargs.pop("client") - self._config: ContainerServiceClientConfiguration = input_args.pop(0) if input_args else kwargs.pop("config") - self._serialize: Serializer = input_args.pop(0) if input_args else kwargs.pop("serializer") - self._deserialize: Deserializer = input_args.pop(0) if input_args else kwargs.pop("deserializer") - - @distributed_trace - def get( - self, resource_group_name: str, resource_name: str, agent_pool_name: str, **kwargs: Any - ) -> _models.AgentPool: - """Gets the specified managed cluster agent pool. + @distributed_trace + def begin_delete_machines( + self, + resource_group_name: str, + resource_name: str, + agent_pool_name: str, + machines: Union[_models.AgentPoolDeleteMachinesParameter, JSON, IO[bytes]], + **kwargs: Any + ) -> LROPoller[None]: + """Deletes specific machines in an agent pool. :param resource_group_name: The name of the resource group. The name is case insensitive. Required. @@ -2984,10 +3052,65 @@ def get( :type resource_name: str :param agent_pool_name: The name of the agent pool. Required. :type agent_pool_name: str - :return: AgentPool. The AgentPool is compatible with MutableMapping - :rtype: ~azure.mgmt.containerservice.models.AgentPool + :param machines: A list of machines from the agent pool to be deleted. Is one of the following + types: AgentPoolDeleteMachinesParameter, JSON, IO[bytes] Required. + :type machines: ~azure.mgmt.containerservice.models.AgentPoolDeleteMachinesParameter or JSON or + IO[bytes] + :return: An instance of LROPoller that returns None + :rtype: ~azure.core.polling.LROPoller[None] :raises ~azure.core.exceptions.HttpResponseError: """ + _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) + _params = kwargs.pop("params", {}) or {} + + content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) + cls: ClsType[None] = kwargs.pop("cls", None) + polling: Union[bool, PollingMethod] = kwargs.pop("polling", True) + lro_delay = kwargs.pop("polling_interval", self._config.polling_interval) + cont_token: Optional[str] = kwargs.pop("continuation_token", None) + if cont_token is None: + raw_result = self._delete_machines_initial( + resource_group_name=resource_group_name, + resource_name=resource_name, + agent_pool_name=agent_pool_name, + machines=machines, + content_type=content_type, + cls=lambda x, y, z: x, + headers=_headers, + params=_params, + **kwargs + ) + raw_result.http_response.read() # type: ignore + kwargs.pop("error_map", None) + + def get_long_running_output(pipeline_response): # pylint: disable=inconsistent-return-statements + if cls: + return cls(pipeline_response, None, {}) # type: ignore + + path_format_arguments = { + "endpoint": self._serialize.url("self._config.base_url", self._config.base_url, "str", skip_quote=True), + } + + if polling is True: + polling_method: PollingMethod = cast( + PollingMethod, ARMPolling(lro_delay, path_format_arguments=path_format_arguments, **kwargs) + ) + elif polling is False: + polling_method = cast(PollingMethod, NoPolling()) + else: + polling_method = polling + if cont_token: + return LROPoller[None].from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output, + ) + return LROPoller[None](self._client, raw_result, get_long_running_output, polling_method) # type: ignore + + def _upgrade_node_image_version_initial( + self, resource_group_name: str, resource_name: str, agent_pool_name: str, **kwargs: Any + ) -> Iterator[bytes]: error_map: MutableMapping = { 401: ClientAuthenticationError, 404: ResourceNotFoundError, @@ -2999,9 +3122,9 @@ def get( _headers = kwargs.pop("headers", {}) or {} _params = kwargs.pop("params", {}) or {} - cls: ClsType[_models.AgentPool] = kwargs.pop("cls", None) + cls: ClsType[Iterator[bytes]] = kwargs.pop("cls", None) - _request = build_agent_pools_get_request( + _request = build_agent_pools_upgrade_node_image_version_request( resource_group_name=resource_group_name, resource_name=resource_name, agent_pool_name=agent_pool_name, @@ -3016,19 +3139,18 @@ def get( _request.url = self._client.format_url(_request.url, **path_format_arguments) _decompress = kwargs.pop("decompress", True) - _stream = kwargs.pop("stream", False) + _stream = True pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access _request, stream=_stream, **kwargs ) response = pipeline_response.http_response - if response.status_code not in [200]: - if _stream: - try: - response.read() # Load the body in memory and close the socket - except (StreamConsumedError, StreamClosedError): - pass + if response.status_code not in [200, 202]: + try: + response.read() # Load the body in memory and close the socket + except (StreamConsumedError, StreamClosedError): + pass map_error(status_code=response.status_code, response=response, error_map=error_map) error = _failsafe_deserialize( _models.ErrorResponse, @@ -3036,233 +3158,31 @@ def get( ) raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - if _stream: - deserialized = response.iter_bytes() if _decompress else response.iter_raw() - else: - deserialized = _deserialize(_models.AgentPool, response.json()) + response_headers = {} + if response.status_code == 202: + response_headers["Azure-AsyncOperation"] = self._deserialize( + "str", response.headers.get("Azure-AsyncOperation") + ) + response_headers["Location"] = self._deserialize("str", response.headers.get("Location")) + response_headers["Retry-After"] = self._deserialize("int", response.headers.get("Retry-After")) + + deserialized = response.iter_bytes() if _decompress else response.iter_raw() if cls: - return cls(pipeline_response, deserialized, {}) # type: ignore + return cls(pipeline_response, deserialized, response_headers) # type: ignore return deserialized # type: ignore - def _create_or_update_initial( - self, - resource_group_name: str, - resource_name: str, - agent_pool_name: str, - parameters: Union[_models.AgentPool, JSON, IO[bytes]], - *, - etag: Optional[str] = None, - match_condition: Optional[MatchConditions] = None, - **kwargs: Any - ) -> Iterator[bytes]: - error_map: MutableMapping = { - 401: ClientAuthenticationError, - 404: ResourceNotFoundError, - 409: ResourceExistsError, - 304: ResourceNotModifiedError, - } - if match_condition == MatchConditions.IfNotModified: - error_map[412] = ResourceModifiedError - elif match_condition == MatchConditions.IfPresent: - error_map[412] = ResourceNotFoundError - elif match_condition == MatchConditions.IfMissing: - error_map[412] = ResourceExistsError - error_map.update(kwargs.pop("error_map", {}) or {}) + @distributed_trace + def begin_upgrade_node_image_version( + self, resource_group_name: str, resource_name: str, agent_pool_name: str, **kwargs: Any + ) -> LROPoller[None]: + """Upgrades the node image version of an agent pool to the latest. - _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) - _params = kwargs.pop("params", {}) or {} - - content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) - cls: ClsType[Iterator[bytes]] = kwargs.pop("cls", None) - - content_type = content_type or "application/json" - _content = None - if isinstance(parameters, (IOBase, bytes)): - _content = parameters - else: - _content = json.dumps(parameters, cls=SdkJSONEncoder, exclude_readonly=True) # type: ignore - - _request = build_agent_pools_create_or_update_request( - resource_group_name=resource_group_name, - resource_name=resource_name, - agent_pool_name=agent_pool_name, - subscription_id=self._config.subscription_id, - etag=etag, - match_condition=match_condition, - content_type=content_type, - api_version=self._config.api_version, - content=_content, - headers=_headers, - params=_params, - ) - path_format_arguments = { - "endpoint": self._serialize.url("self._config.base_url", self._config.base_url, "str", skip_quote=True), - } - _request.url = self._client.format_url(_request.url, **path_format_arguments) - - _decompress = kwargs.pop("decompress", True) - _stream = True - pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access - _request, stream=_stream, **kwargs - ) - - response = pipeline_response.http_response - - if response.status_code not in [200, 201]: - try: - response.read() # Load the body in memory and close the socket - except (StreamConsumedError, StreamClosedError): - pass - map_error(status_code=response.status_code, response=response, error_map=error_map) - error = _failsafe_deserialize( - _models.ErrorResponse, - response, - ) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - - response_headers = {} - if response.status_code == 201: - response_headers["Azure-AsyncOperation"] = self._deserialize( - "str", response.headers.get("Azure-AsyncOperation") - ) - response_headers["Retry-After"] = self._deserialize("int", response.headers.get("Retry-After")) - - deserialized = response.iter_bytes() if _decompress else response.iter_raw() - - if cls: - return cls(pipeline_response, deserialized, response_headers) # type: ignore - - return deserialized # type: ignore - - @overload - def begin_create_or_update( - self, - resource_group_name: str, - resource_name: str, - agent_pool_name: str, - parameters: _models.AgentPool, - *, - content_type: str = "application/json", - etag: Optional[str] = None, - match_condition: Optional[MatchConditions] = None, - **kwargs: Any - ) -> LROPoller[_models.AgentPool]: - """Creates or updates an agent pool in the specified managed cluster. - - :param resource_group_name: The name of the resource group. The name is case insensitive. - Required. - :type resource_group_name: str - :param resource_name: The name of the managed cluster resource. Required. - :type resource_name: str - :param agent_pool_name: The name of the agent pool. Required. - :type agent_pool_name: str - :param parameters: The agent pool to create or update. Required. - :type parameters: ~azure.mgmt.containerservice.models.AgentPool - :keyword content_type: Body Parameter content-type. Content type parameter for JSON body. - Default value is "application/json". - :paramtype content_type: str - :keyword etag: check if resource is changed. Set None to skip checking etag. Default value is - None. - :paramtype etag: str - :keyword match_condition: The match condition to use upon the etag. Default value is None. - :paramtype match_condition: ~azure.core.MatchConditions - :return: An instance of LROPoller that returns AgentPool. The AgentPool is compatible with - MutableMapping - :rtype: ~azure.core.polling.LROPoller[~azure.mgmt.containerservice.models.AgentPool] - :raises ~azure.core.exceptions.HttpResponseError: - """ - - @overload - def begin_create_or_update( - self, - resource_group_name: str, - resource_name: str, - agent_pool_name: str, - parameters: JSON, - *, - content_type: str = "application/json", - etag: Optional[str] = None, - match_condition: Optional[MatchConditions] = None, - **kwargs: Any - ) -> LROPoller[_models.AgentPool]: - """Creates or updates an agent pool in the specified managed cluster. - - :param resource_group_name: The name of the resource group. The name is case insensitive. - Required. - :type resource_group_name: str - :param resource_name: The name of the managed cluster resource. Required. - :type resource_name: str - :param agent_pool_name: The name of the agent pool. Required. - :type agent_pool_name: str - :param parameters: The agent pool to create or update. Required. - :type parameters: JSON - :keyword content_type: Body Parameter content-type. Content type parameter for JSON body. - Default value is "application/json". - :paramtype content_type: str - :keyword etag: check if resource is changed. Set None to skip checking etag. Default value is - None. - :paramtype etag: str - :keyword match_condition: The match condition to use upon the etag. Default value is None. - :paramtype match_condition: ~azure.core.MatchConditions - :return: An instance of LROPoller that returns AgentPool. The AgentPool is compatible with - MutableMapping - :rtype: ~azure.core.polling.LROPoller[~azure.mgmt.containerservice.models.AgentPool] - :raises ~azure.core.exceptions.HttpResponseError: - """ - - @overload - def begin_create_or_update( - self, - resource_group_name: str, - resource_name: str, - agent_pool_name: str, - parameters: IO[bytes], - *, - content_type: str = "application/json", - etag: Optional[str] = None, - match_condition: Optional[MatchConditions] = None, - **kwargs: Any - ) -> LROPoller[_models.AgentPool]: - """Creates or updates an agent pool in the specified managed cluster. - - :param resource_group_name: The name of the resource group. The name is case insensitive. - Required. - :type resource_group_name: str - :param resource_name: The name of the managed cluster resource. Required. - :type resource_name: str - :param agent_pool_name: The name of the agent pool. Required. - :type agent_pool_name: str - :param parameters: The agent pool to create or update. Required. - :type parameters: IO[bytes] - :keyword content_type: Body Parameter content-type. Content type parameter for binary body. - Default value is "application/json". - :paramtype content_type: str - :keyword etag: check if resource is changed. Set None to skip checking etag. Default value is - None. - :paramtype etag: str - :keyword match_condition: The match condition to use upon the etag. Default value is None. - :paramtype match_condition: ~azure.core.MatchConditions - :return: An instance of LROPoller that returns AgentPool. The AgentPool is compatible with - MutableMapping - :rtype: ~azure.core.polling.LROPoller[~azure.mgmt.containerservice.models.AgentPool] - :raises ~azure.core.exceptions.HttpResponseError: - """ - - @distributed_trace - def begin_create_or_update( - self, - resource_group_name: str, - resource_name: str, - agent_pool_name: str, - parameters: Union[_models.AgentPool, JSON, IO[bytes]], - *, - etag: Optional[str] = None, - match_condition: Optional[MatchConditions] = None, - **kwargs: Any - ) -> LROPoller[_models.AgentPool]: - """Creates or updates an agent pool in the specified managed cluster. + Upgrading the node image version of an agent pool applies the newest OS and runtime updates to + the nodes. AKS provides one new image per week with the latest updates. For more details on + node image versions, see: `https://docs.microsoft.com/azure/aks/node-image-upgrade + `_. :param resource_group_name: The name of the resource group. The name is case insensitive. Required. @@ -3271,36 +3191,22 @@ def begin_create_or_update( :type resource_name: str :param agent_pool_name: The name of the agent pool. Required. :type agent_pool_name: str - :param parameters: The agent pool to create or update. Is one of the following types: - AgentPool, JSON, IO[bytes] Required. - :type parameters: ~azure.mgmt.containerservice.models.AgentPool or JSON or IO[bytes] - :keyword etag: check if resource is changed. Set None to skip checking etag. Default value is - None. - :paramtype etag: str - :keyword match_condition: The match condition to use upon the etag. Default value is None. - :paramtype match_condition: ~azure.core.MatchConditions - :return: An instance of LROPoller that returns AgentPool. The AgentPool is compatible with - MutableMapping - :rtype: ~azure.core.polling.LROPoller[~azure.mgmt.containerservice.models.AgentPool] + :return: An instance of LROPoller that returns None + :rtype: ~azure.core.polling.LROPoller[None] :raises ~azure.core.exceptions.HttpResponseError: """ - _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) + _headers = kwargs.pop("headers", {}) or {} _params = kwargs.pop("params", {}) or {} - content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) - cls: ClsType[_models.AgentPool] = kwargs.pop("cls", None) + cls: ClsType[None] = kwargs.pop("cls", None) polling: Union[bool, PollingMethod] = kwargs.pop("polling", True) lro_delay = kwargs.pop("polling_interval", self._config.polling_interval) cont_token: Optional[str] = kwargs.pop("continuation_token", None) if cont_token is None: - raw_result = self._create_or_update_initial( + raw_result = self._upgrade_node_image_version_initial( resource_group_name=resource_group_name, resource_name=resource_name, agent_pool_name=agent_pool_name, - parameters=parameters, - etag=etag, - match_condition=match_condition, - content_type=content_type, cls=lambda x, y, z: x, headers=_headers, params=_params, @@ -3309,12 +3215,9 @@ def begin_create_or_update( raw_result.http_response.read() # type: ignore kwargs.pop("error_map", None) - def get_long_running_output(pipeline_response): - response = pipeline_response.http_response - deserialized = _deserialize(_models.AgentPool, response.json()) + def get_long_running_output(pipeline_response): # pylint: disable=inconsistent-return-statements if cls: - return cls(pipeline_response, deserialized, {}) # type: ignore - return deserialized + return cls(pipeline_response, None, {}) # type: ignore path_format_arguments = { "endpoint": self._serialize.url("self._config.base_url", self._config.base_url, "str", skip_quote=True), @@ -3329,54 +3232,51 @@ def get_long_running_output(pipeline_response): else: polling_method = polling if cont_token: - return LROPoller[_models.AgentPool].from_continuation_token( + return LROPoller[None].from_continuation_token( polling_method=polling_method, continuation_token=cont_token, client=self._client, deserialization_callback=get_long_running_output, ) - return LROPoller[_models.AgentPool]( - self._client, raw_result, get_long_running_output, polling_method # type: ignore - ) + return LROPoller[None](self._client, raw_result, get_long_running_output, polling_method) # type: ignore - def _delete_initial( - self, - resource_group_name: str, - resource_name: str, - agent_pool_name: str, - *, - ignore_pod_disruption_budget: Optional[bool] = None, - etag: Optional[str] = None, - match_condition: Optional[MatchConditions] = None, - **kwargs: Any - ) -> Iterator[bytes]: + @distributed_trace + def get_available_agent_pool_versions( + self, resource_group_name: str, resource_name: str, **kwargs: Any + ) -> _models.AgentPoolAvailableVersions: + """Gets a list of supported Kubernetes versions for the specified agent pool. + + See `supported Kubernetes versions + `_ for more details about + the version lifecycle. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param resource_name: The name of the managed cluster resource. Required. + :type resource_name: str + :return: AgentPoolAvailableVersions. The AgentPoolAvailableVersions is compatible with + MutableMapping + :rtype: ~azure.mgmt.containerservice.models.AgentPoolAvailableVersions + :raises ~azure.core.exceptions.HttpResponseError: + """ error_map: MutableMapping = { 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError, 304: ResourceNotModifiedError, } - if match_condition == MatchConditions.IfNotModified: - error_map[412] = ResourceModifiedError - elif match_condition == MatchConditions.IfPresent: - error_map[412] = ResourceNotFoundError - elif match_condition == MatchConditions.IfMissing: - error_map[412] = ResourceExistsError error_map.update(kwargs.pop("error_map", {}) or {}) _headers = kwargs.pop("headers", {}) or {} _params = kwargs.pop("params", {}) or {} - cls: ClsType[Iterator[bytes]] = kwargs.pop("cls", None) + cls: ClsType[_models.AgentPoolAvailableVersions] = kwargs.pop("cls", None) - _request = build_agent_pools_delete_request( + _request = build_agent_pools_get_available_agent_pool_versions_request( resource_group_name=resource_group_name, resource_name=resource_name, - agent_pool_name=agent_pool_name, subscription_id=self._config.subscription_id, - ignore_pod_disruption_budget=ignore_pod_disruption_budget, - etag=etag, - match_condition=match_condition, api_version=self._config.api_version, headers=_headers, params=_params, @@ -3387,18 +3287,19 @@ def _delete_initial( _request.url = self._client.format_url(_request.url, **path_format_arguments) _decompress = kwargs.pop("decompress", True) - _stream = True + _stream = kwargs.pop("stream", False) pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access _request, stream=_stream, **kwargs ) response = pipeline_response.http_response - if response.status_code not in [202, 204]: - try: - response.read() # Load the body in memory and close the socket - except (StreamConsumedError, StreamClosedError): - pass + if response.status_code not in [200]: + if _stream: + try: + response.read() # Load the body in memory and close the socket + except (StreamConsumedError, StreamClosedError): + pass map_error(status_code=response.status_code, response=response, error_map=error_map) error = _failsafe_deserialize( _models.ErrorResponse, @@ -3406,34 +3307,21 @@ def _delete_initial( ) raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - response_headers = {} - if response.status_code == 202: - response_headers["Azure-AsyncOperation"] = self._deserialize( - "str", response.headers.get("Azure-AsyncOperation") - ) - response_headers["Location"] = self._deserialize("str", response.headers.get("Location")) - response_headers["Retry-After"] = self._deserialize("int", response.headers.get("Retry-After")) - - deserialized = response.iter_bytes() if _decompress else response.iter_raw() + if _stream: + deserialized = response.iter_bytes() if _decompress else response.iter_raw() + else: + deserialized = _deserialize(_models.AgentPoolAvailableVersions, response.json()) if cls: - return cls(pipeline_response, deserialized, response_headers) # type: ignore + return cls(pipeline_response, deserialized, {}) # type: ignore return deserialized # type: ignore @distributed_trace - def begin_delete( - self, - resource_group_name: str, - resource_name: str, - agent_pool_name: str, - *, - ignore_pod_disruption_budget: Optional[bool] = None, - etag: Optional[str] = None, - match_condition: Optional[MatchConditions] = None, - **kwargs: Any - ) -> LROPoller[None]: - """Deletes an agent pool in the specified managed cluster. + def get_upgrade_profile( + self, resource_group_name: str, resource_name: str, agent_pool_name: str, **kwargs: Any + ) -> _models.AgentPoolUpgradeProfile: + """Gets the upgrade profile for an agent pool. :param resource_group_name: The name of the resource group. The name is case insensitive. Required. @@ -3442,169 +3330,10 @@ def begin_delete( :type resource_name: str :param agent_pool_name: The name of the agent pool. Required. :type agent_pool_name: str - :keyword ignore_pod_disruption_budget: ignore-pod-disruption-budget=true to delete those pods - on a node without considering Pod Disruption Budget. Default value is None. - :paramtype ignore_pod_disruption_budget: bool - :keyword etag: check if resource is changed. Set None to skip checking etag. Default value is - None. - :paramtype etag: str - :keyword match_condition: The match condition to use upon the etag. Default value is None. - :paramtype match_condition: ~azure.core.MatchConditions - :return: An instance of LROPoller that returns None - :rtype: ~azure.core.polling.LROPoller[None] - :raises ~azure.core.exceptions.HttpResponseError: - """ - _headers = kwargs.pop("headers", {}) or {} - _params = kwargs.pop("params", {}) or {} - - cls: ClsType[None] = kwargs.pop("cls", None) - polling: Union[bool, PollingMethod] = kwargs.pop("polling", True) - lro_delay = kwargs.pop("polling_interval", self._config.polling_interval) - cont_token: Optional[str] = kwargs.pop("continuation_token", None) - if cont_token is None: - raw_result = self._delete_initial( - resource_group_name=resource_group_name, - resource_name=resource_name, - agent_pool_name=agent_pool_name, - ignore_pod_disruption_budget=ignore_pod_disruption_budget, - etag=etag, - match_condition=match_condition, - cls=lambda x, y, z: x, - headers=_headers, - params=_params, - **kwargs - ) - raw_result.http_response.read() # type: ignore - kwargs.pop("error_map", None) - - def get_long_running_output(pipeline_response): # pylint: disable=inconsistent-return-statements - if cls: - return cls(pipeline_response, None, {}) # type: ignore - - path_format_arguments = { - "endpoint": self._serialize.url("self._config.base_url", self._config.base_url, "str", skip_quote=True), - } - - if polling is True: - polling_method: PollingMethod = cast( - PollingMethod, ARMPolling(lro_delay, path_format_arguments=path_format_arguments, **kwargs) - ) - elif polling is False: - polling_method = cast(PollingMethod, NoPolling()) - else: - polling_method = polling - if cont_token: - return LROPoller[None].from_continuation_token( - polling_method=polling_method, - continuation_token=cont_token, - client=self._client, - deserialization_callback=get_long_running_output, - ) - return LROPoller[None](self._client, raw_result, get_long_running_output, polling_method) # type: ignore - - @distributed_trace - def list(self, resource_group_name: str, resource_name: str, **kwargs: Any) -> ItemPaged["_models.AgentPool"]: - """Gets a list of agent pools in the specified managed cluster. - - :param resource_group_name: The name of the resource group. The name is case insensitive. - Required. - :type resource_group_name: str - :param resource_name: The name of the managed cluster resource. Required. - :type resource_name: str - :return: An iterator like instance of AgentPool - :rtype: ~azure.core.paging.ItemPaged[~azure.mgmt.containerservice.models.AgentPool] + :return: AgentPoolUpgradeProfile. The AgentPoolUpgradeProfile is compatible with MutableMapping + :rtype: ~azure.mgmt.containerservice.models.AgentPoolUpgradeProfile :raises ~azure.core.exceptions.HttpResponseError: """ - _headers = kwargs.pop("headers", {}) or {} - _params = kwargs.pop("params", {}) or {} - - cls: ClsType[List[_models.AgentPool]] = kwargs.pop("cls", None) - - error_map: MutableMapping = { - 401: ClientAuthenticationError, - 404: ResourceNotFoundError, - 409: ResourceExistsError, - 304: ResourceNotModifiedError, - } - error_map.update(kwargs.pop("error_map", {}) or {}) - - def prepare_request(next_link=None): - if not next_link: - - _request = build_agent_pools_list_request( - resource_group_name=resource_group_name, - resource_name=resource_name, - subscription_id=self._config.subscription_id, - api_version=self._config.api_version, - headers=_headers, - params=_params, - ) - path_format_arguments = { - "endpoint": self._serialize.url( - "self._config.base_url", self._config.base_url, "str", skip_quote=True - ), - } - _request.url = self._client.format_url(_request.url, **path_format_arguments) - - else: - # make call to next link with the client's api-version - _parsed_next_link = urllib.parse.urlparse(next_link) - _next_request_params = case_insensitive_dict( - { - key: [urllib.parse.quote(v) for v in value] - for key, value in urllib.parse.parse_qs(_parsed_next_link.query).items() - } - ) - _next_request_params["api-version"] = self._config.api_version - _request = HttpRequest( - "GET", - urllib.parse.urljoin(next_link, _parsed_next_link.path), - headers=_headers, - params=_next_request_params, - ) - path_format_arguments = { - "endpoint": self._serialize.url( - "self._config.base_url", self._config.base_url, "str", skip_quote=True - ), - } - _request.url = self._client.format_url(_request.url, **path_format_arguments) - - return _request - - def extract_data(pipeline_response): - deserialized = pipeline_response.http_response.json() - list_of_elem = _deserialize( - List[_models.AgentPool], - deserialized.get("value", []), - ) - if cls: - list_of_elem = cls(list_of_elem) # type: ignore - return deserialized.get("nextLink") or None, iter(list_of_elem) - - def get_next(next_link=None): - _request = prepare_request(next_link) - - _stream = False - pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access - _request, stream=_stream, **kwargs - ) - response = pipeline_response.http_response - - if response.status_code not in [200]: - map_error(status_code=response.status_code, response=response, error_map=error_map) - error = _failsafe_deserialize( - _models.ErrorResponse, - response, - ) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - - return pipeline_response - - return ItemPaged(get_next, extract_data) - - def _abort_latest_operation_initial( - self, resource_group_name: str, resource_name: str, agent_pool_name: str, **kwargs: Any - ) -> Iterator[bytes]: error_map: MutableMapping = { 401: ClientAuthenticationError, 404: ResourceNotFoundError, @@ -3616,9 +3345,9 @@ def _abort_latest_operation_initial( _headers = kwargs.pop("headers", {}) or {} _params = kwargs.pop("params", {}) or {} - cls: ClsType[Iterator[bytes]] = kwargs.pop("cls", None) + cls: ClsType[_models.AgentPoolUpgradeProfile] = kwargs.pop("cls", None) - _request = build_agent_pools_abort_latest_operation_request( + _request = build_agent_pools_get_upgrade_profile_request( resource_group_name=resource_group_name, resource_name=resource_name, agent_pool_name=agent_pool_name, @@ -3633,18 +3362,19 @@ def _abort_latest_operation_initial( _request.url = self._client.format_url(_request.url, **path_format_arguments) _decompress = kwargs.pop("decompress", True) - _stream = True + _stream = kwargs.pop("stream", False) pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access _request, stream=_stream, **kwargs ) response = pipeline_response.http_response - if response.status_code not in [202, 204]: - try: - response.read() # Load the body in memory and close the socket - except (StreamConsumedError, StreamClosedError): - pass + if response.status_code not in [200]: + if _stream: + try: + response.read() # Load the body in memory and close the socket + except (StreamConsumedError, StreamClosedError): + pass map_error(status_code=response.status_code, response=response, error_map=error_map) error = _failsafe_deserialize( _models.ErrorResponse, @@ -3652,103 +3382,47 @@ def _abort_latest_operation_initial( ) raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - response_headers = {} - if response.status_code == 202: - response_headers["Azure-AsyncOperation"] = self._deserialize( - "str", response.headers.get("Azure-AsyncOperation") - ) - response_headers["Location"] = self._deserialize("str", response.headers.get("Location")) - response_headers["Retry-After"] = self._deserialize("int", response.headers.get("Retry-After")) - - deserialized = response.iter_bytes() if _decompress else response.iter_raw() + if _stream: + deserialized = response.iter_bytes() if _decompress else response.iter_raw() + else: + deserialized = _deserialize(_models.AgentPoolUpgradeProfile, response.json()) if cls: - return cls(pipeline_response, deserialized, response_headers) # type: ignore + return cls(pipeline_response, deserialized, {}) # type: ignore return deserialized # type: ignore - @distributed_trace - def begin_abort_latest_operation( - self, resource_group_name: str, resource_name: str, agent_pool_name: str, **kwargs: Any - ) -> LROPoller[None]: - """Aborts last operation running on agent pool. - Aborts the currently running operation on the agent pool. The Agent Pool will be moved to a - Canceling state and eventually to a Canceled state when cancellation finishes. If the operation - completes before cancellation can take place, a 409 error code is returned. +class ManagedClustersOperations: # pylint: disable=too-many-public-methods + """ + .. warning:: + **DO NOT** instantiate this class directly. + + Instead, you should access the following operations through + :class:`~azure.mgmt.containerservice.ContainerServiceClient`'s + :attr:`managed_clusters` attribute. + """ + + def __init__(self, *args, **kwargs) -> None: + input_args = list(args) + self._client: PipelineClient = input_args.pop(0) if input_args else kwargs.pop("client") + self._config: ContainerServiceClientConfiguration = input_args.pop(0) if input_args else kwargs.pop("config") + self._serialize: Serializer = input_args.pop(0) if input_args else kwargs.pop("serializer") + self._deserialize: Deserializer = input_args.pop(0) if input_args else kwargs.pop("deserializer") + + @distributed_trace + def get(self, resource_group_name: str, resource_name: str, **kwargs: Any) -> _models.ManagedCluster: + """Gets a managed cluster. :param resource_group_name: The name of the resource group. The name is case insensitive. Required. :type resource_group_name: str :param resource_name: The name of the managed cluster resource. Required. :type resource_name: str - :param agent_pool_name: The name of the agent pool. Required. - :type agent_pool_name: str - :return: An instance of LROPoller that returns None - :rtype: ~azure.core.polling.LROPoller[None] + :return: ManagedCluster. The ManagedCluster is compatible with MutableMapping + :rtype: ~azure.mgmt.containerservice.models.ManagedCluster :raises ~azure.core.exceptions.HttpResponseError: """ - _headers = kwargs.pop("headers", {}) or {} - _params = kwargs.pop("params", {}) or {} - - cls: ClsType[None] = kwargs.pop("cls", None) - polling: Union[bool, PollingMethod] = kwargs.pop("polling", True) - lro_delay = kwargs.pop("polling_interval", self._config.polling_interval) - cont_token: Optional[str] = kwargs.pop("continuation_token", None) - if cont_token is None: - raw_result = self._abort_latest_operation_initial( - resource_group_name=resource_group_name, - resource_name=resource_name, - agent_pool_name=agent_pool_name, - cls=lambda x, y, z: x, - headers=_headers, - params=_params, - **kwargs - ) - raw_result.http_response.read() # type: ignore - kwargs.pop("error_map", None) - - def get_long_running_output(pipeline_response): # pylint: disable=inconsistent-return-statements - if cls: - return cls(pipeline_response, None, {}) # type: ignore - - path_format_arguments = { - "endpoint": self._serialize.url("self._config.base_url", self._config.base_url, "str", skip_quote=True), - } - - if polling is True: - polling_method: PollingMethod = cast( - PollingMethod, ARMPolling(lro_delay, path_format_arguments=path_format_arguments, **kwargs) - ) - elif polling is False: - polling_method = cast(PollingMethod, NoPolling()) - else: - polling_method = polling - if cont_token: - return LROPoller[None].from_continuation_token( - polling_method=polling_method, - continuation_token=cont_token, - client=self._client, - deserialization_callback=get_long_running_output, - ) - return LROPoller[None](self._client, raw_result, get_long_running_output, polling_method) # type: ignore - - @api_version_validation( - method_added_on="2026-03-02-preview", - params_added_on={ - "2026-03-02-preview": [ - "api_version", - "subscription_id", - "resource_group_name", - "resource_name", - "agent_pool_name", - ] - }, - api_versions_list=["2026-03-02-preview"], - ) - def _complete_upgrade_initial( - self, resource_group_name: str, resource_name: str, agent_pool_name: str, **kwargs: Any - ) -> Iterator[bytes]: error_map: MutableMapping = { 401: ClientAuthenticationError, 404: ResourceNotFoundError, @@ -3760,12 +3434,11 @@ def _complete_upgrade_initial( _headers = kwargs.pop("headers", {}) or {} _params = kwargs.pop("params", {}) or {} - cls: ClsType[Iterator[bytes]] = kwargs.pop("cls", None) + cls: ClsType[_models.ManagedCluster] = kwargs.pop("cls", None) - _request = build_agent_pools_complete_upgrade_request( + _request = build_managed_clusters_get_request( resource_group_name=resource_group_name, resource_name=resource_name, - agent_pool_name=agent_pool_name, subscription_id=self._config.subscription_id, api_version=self._config.api_version, headers=_headers, @@ -3777,18 +3450,19 @@ def _complete_upgrade_initial( _request.url = self._client.format_url(_request.url, **path_format_arguments) _decompress = kwargs.pop("decompress", True) - _stream = True + _stream = kwargs.pop("stream", False) pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access _request, stream=_stream, **kwargs ) response = pipeline_response.http_response - if response.status_code not in [202, 204]: - try: - response.read() # Load the body in memory and close the socket - except (StreamConsumedError, StreamClosedError): - pass + if response.status_code not in [200]: + if _stream: + try: + response.read() # Load the body in memory and close the socket + except (StreamConsumedError, StreamClosedError): + pass map_error(status_code=response.status_code, response=response, error_map=error_map) error = _failsafe_deserialize( _models.ErrorResponse, @@ -3796,104 +3470,24 @@ def _complete_upgrade_initial( ) raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - response_headers = {} - if response.status_code == 202: - response_headers["Azure-AsyncOperation"] = self._deserialize( - "str", response.headers.get("Azure-AsyncOperation") - ) - response_headers["Location"] = self._deserialize("str", response.headers.get("Location")) - response_headers["Retry-After"] = self._deserialize("int", response.headers.get("Retry-After")) - - deserialized = response.iter_bytes() if _decompress else response.iter_raw() + if _stream: + deserialized = response.iter_bytes() if _decompress else response.iter_raw() + else: + deserialized = _deserialize(_models.ManagedCluster, response.json()) if cls: - return cls(pipeline_response, deserialized, response_headers) # type: ignore + return cls(pipeline_response, deserialized, {}) # type: ignore return deserialized # type: ignore - @distributed_trace - @api_version_validation( - method_added_on="2026-03-02-preview", - params_added_on={ - "2026-03-02-preview": [ - "api_version", - "subscription_id", - "resource_group_name", - "resource_name", - "agent_pool_name", - ] - }, - api_versions_list=["2026-03-02-preview"], - ) - def begin_complete_upgrade( - self, resource_group_name: str, resource_name: str, agent_pool_name: str, **kwargs: Any - ) -> LROPoller[None]: - """Completes the upgrade of an agent pool. - - Completes the upgrade operation for the specified agent pool. - - :param resource_group_name: The name of the resource group. The name is case insensitive. - Required. - :type resource_group_name: str - :param resource_name: The name of the managed cluster resource. Required. - :type resource_name: str - :param agent_pool_name: The name of the agent pool. Required. - :type agent_pool_name: str - :return: An instance of LROPoller that returns None - :rtype: ~azure.core.polling.LROPoller[None] - :raises ~azure.core.exceptions.HttpResponseError: - """ - _headers = kwargs.pop("headers", {}) or {} - _params = kwargs.pop("params", {}) or {} - - cls: ClsType[None] = kwargs.pop("cls", None) - polling: Union[bool, PollingMethod] = kwargs.pop("polling", True) - lro_delay = kwargs.pop("polling_interval", self._config.polling_interval) - cont_token: Optional[str] = kwargs.pop("continuation_token", None) - if cont_token is None: - raw_result = self._complete_upgrade_initial( - resource_group_name=resource_group_name, - resource_name=resource_name, - agent_pool_name=agent_pool_name, - cls=lambda x, y, z: x, - headers=_headers, - params=_params, - **kwargs - ) - raw_result.http_response.read() # type: ignore - kwargs.pop("error_map", None) - - def get_long_running_output(pipeline_response): # pylint: disable=inconsistent-return-statements - if cls: - return cls(pipeline_response, None, {}) # type: ignore - - path_format_arguments = { - "endpoint": self._serialize.url("self._config.base_url", self._config.base_url, "str", skip_quote=True), - } - - if polling is True: - polling_method: PollingMethod = cast( - PollingMethod, ARMPolling(lro_delay, path_format_arguments=path_format_arguments, **kwargs) - ) - elif polling is False: - polling_method = cast(PollingMethod, NoPolling()) - else: - polling_method = polling - if cont_token: - return LROPoller[None].from_continuation_token( - polling_method=polling_method, - continuation_token=cont_token, - client=self._client, - deserialization_callback=get_long_running_output, - ) - return LROPoller[None](self._client, raw_result, get_long_running_output, polling_method) # type: ignore - - def _delete_machines_initial( + def _create_or_update_initial( self, resource_group_name: str, resource_name: str, - agent_pool_name: str, - machines: Union[_models.AgentPoolDeleteMachinesParameter, JSON, IO[bytes]], + parameters: Union[_models.ManagedCluster, JSON, IO[bytes]], + *, + etag: Optional[str] = None, + match_condition: Optional[MatchConditions] = None, **kwargs: Any ) -> Iterator[bytes]: error_map: MutableMapping = { @@ -3902,6 +3496,12 @@ def _delete_machines_initial( 409: ResourceExistsError, 304: ResourceNotModifiedError, } + if match_condition == MatchConditions.IfNotModified: + error_map[412] = ResourceModifiedError + elif match_condition == MatchConditions.IfPresent: + error_map[412] = ResourceNotFoundError + elif match_condition == MatchConditions.IfMissing: + error_map[412] = ResourceExistsError error_map.update(kwargs.pop("error_map", {}) or {}) _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) @@ -3912,16 +3512,17 @@ def _delete_machines_initial( content_type = content_type or "application/json" _content = None - if isinstance(machines, (IOBase, bytes)): - _content = machines + if isinstance(parameters, (IOBase, bytes)): + _content = parameters else: - _content = json.dumps(machines, cls=SdkJSONEncoder, exclude_readonly=True) # type: ignore + _content = json.dumps(parameters, cls=SdkJSONEncoder, exclude_readonly=True) # type: ignore - _request = build_agent_pools_delete_machines_request( + _request = build_managed_clusters_create_or_update_request( resource_group_name=resource_group_name, resource_name=resource_name, - agent_pool_name=agent_pool_name, subscription_id=self._config.subscription_id, + etag=etag, + match_condition=match_condition, content_type=content_type, api_version=self._config.api_version, content=_content, @@ -3941,7 +3542,7 @@ def _delete_machines_initial( response = pipeline_response.http_response - if response.status_code not in [202]: + if response.status_code not in [200, 201]: try: response.read() # Load the body in memory and close the socket except (StreamConsumedError, StreamClosedError): @@ -3954,11 +3555,11 @@ def _delete_machines_initial( raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) response_headers = {} - response_headers["Azure-AsyncOperation"] = self._deserialize( - "str", response.headers.get("Azure-AsyncOperation") - ) - response_headers["Location"] = self._deserialize("str", response.headers.get("Location")) - response_headers["Retry-After"] = self._deserialize("int", response.headers.get("Retry-After")) + if response.status_code == 201: + response_headers["Azure-AsyncOperation"] = self._deserialize( + "str", response.headers.get("Azure-AsyncOperation") + ) + response_headers["Retry-After"] = self._deserialize("int", response.headers.get("Retry-After")) deserialized = response.iter_bytes() if _decompress else response.iter_raw() @@ -3968,135 +3569,156 @@ def _delete_machines_initial( return deserialized # type: ignore @overload - def begin_delete_machines( + def begin_create_or_update( self, resource_group_name: str, resource_name: str, - agent_pool_name: str, - machines: _models.AgentPoolDeleteMachinesParameter, + parameters: _models.ManagedCluster, *, content_type: str = "application/json", + etag: Optional[str] = None, + match_condition: Optional[MatchConditions] = None, **kwargs: Any - ) -> LROPoller[None]: - """Deletes specific machines in an agent pool. + ) -> LROPoller[_models.ManagedCluster]: + """Creates or updates a managed cluster. :param resource_group_name: The name of the resource group. The name is case insensitive. Required. :type resource_group_name: str :param resource_name: The name of the managed cluster resource. Required. :type resource_name: str - :param agent_pool_name: The name of the agent pool. Required. - :type agent_pool_name: str - :param machines: A list of machines from the agent pool to be deleted. Required. - :type machines: ~azure.mgmt.containerservice.models.AgentPoolDeleteMachinesParameter + :param parameters: The managed cluster to create or update. Required. + :type parameters: ~azure.mgmt.containerservice.models.ManagedCluster :keyword content_type: Body Parameter content-type. Content type parameter for JSON body. Default value is "application/json". :paramtype content_type: str - :return: An instance of LROPoller that returns None - :rtype: ~azure.core.polling.LROPoller[None] + :keyword etag: check if resource is changed. Set None to skip checking etag. Default value is + None. + :paramtype etag: str + :keyword match_condition: The match condition to use upon the etag. Default value is None. + :paramtype match_condition: ~azure.core.MatchConditions + :return: An instance of LROPoller that returns ManagedCluster. The ManagedCluster is compatible + with MutableMapping + :rtype: ~azure.core.polling.LROPoller[~azure.mgmt.containerservice.models.ManagedCluster] :raises ~azure.core.exceptions.HttpResponseError: """ @overload - def begin_delete_machines( + def begin_create_or_update( self, resource_group_name: str, resource_name: str, - agent_pool_name: str, - machines: JSON, + parameters: JSON, *, content_type: str = "application/json", + etag: Optional[str] = None, + match_condition: Optional[MatchConditions] = None, **kwargs: Any - ) -> LROPoller[None]: - """Deletes specific machines in an agent pool. + ) -> LROPoller[_models.ManagedCluster]: + """Creates or updates a managed cluster. :param resource_group_name: The name of the resource group. The name is case insensitive. Required. :type resource_group_name: str :param resource_name: The name of the managed cluster resource. Required. :type resource_name: str - :param agent_pool_name: The name of the agent pool. Required. - :type agent_pool_name: str - :param machines: A list of machines from the agent pool to be deleted. Required. - :type machines: JSON + :param parameters: The managed cluster to create or update. Required. + :type parameters: JSON :keyword content_type: Body Parameter content-type. Content type parameter for JSON body. Default value is "application/json". :paramtype content_type: str - :return: An instance of LROPoller that returns None - :rtype: ~azure.core.polling.LROPoller[None] + :keyword etag: check if resource is changed. Set None to skip checking etag. Default value is + None. + :paramtype etag: str + :keyword match_condition: The match condition to use upon the etag. Default value is None. + :paramtype match_condition: ~azure.core.MatchConditions + :return: An instance of LROPoller that returns ManagedCluster. The ManagedCluster is compatible + with MutableMapping + :rtype: ~azure.core.polling.LROPoller[~azure.mgmt.containerservice.models.ManagedCluster] :raises ~azure.core.exceptions.HttpResponseError: """ @overload - def begin_delete_machines( + def begin_create_or_update( self, resource_group_name: str, resource_name: str, - agent_pool_name: str, - machines: IO[bytes], + parameters: IO[bytes], *, content_type: str = "application/json", + etag: Optional[str] = None, + match_condition: Optional[MatchConditions] = None, **kwargs: Any - ) -> LROPoller[None]: - """Deletes specific machines in an agent pool. + ) -> LROPoller[_models.ManagedCluster]: + """Creates or updates a managed cluster. :param resource_group_name: The name of the resource group. The name is case insensitive. Required. :type resource_group_name: str :param resource_name: The name of the managed cluster resource. Required. :type resource_name: str - :param agent_pool_name: The name of the agent pool. Required. - :type agent_pool_name: str - :param machines: A list of machines from the agent pool to be deleted. Required. - :type machines: IO[bytes] + :param parameters: The managed cluster to create or update. Required. + :type parameters: IO[bytes] :keyword content_type: Body Parameter content-type. Content type parameter for binary body. Default value is "application/json". :paramtype content_type: str - :return: An instance of LROPoller that returns None - :rtype: ~azure.core.polling.LROPoller[None] + :keyword etag: check if resource is changed. Set None to skip checking etag. Default value is + None. + :paramtype etag: str + :keyword match_condition: The match condition to use upon the etag. Default value is None. + :paramtype match_condition: ~azure.core.MatchConditions + :return: An instance of LROPoller that returns ManagedCluster. The ManagedCluster is compatible + with MutableMapping + :rtype: ~azure.core.polling.LROPoller[~azure.mgmt.containerservice.models.ManagedCluster] :raises ~azure.core.exceptions.HttpResponseError: """ @distributed_trace - def begin_delete_machines( + def begin_create_or_update( self, resource_group_name: str, resource_name: str, - agent_pool_name: str, - machines: Union[_models.AgentPoolDeleteMachinesParameter, JSON, IO[bytes]], + parameters: Union[_models.ManagedCluster, JSON, IO[bytes]], + *, + etag: Optional[str] = None, + match_condition: Optional[MatchConditions] = None, **kwargs: Any - ) -> LROPoller[None]: - """Deletes specific machines in an agent pool. + ) -> LROPoller[_models.ManagedCluster]: + """Creates or updates a managed cluster. :param resource_group_name: The name of the resource group. The name is case insensitive. Required. :type resource_group_name: str :param resource_name: The name of the managed cluster resource. Required. :type resource_name: str - :param agent_pool_name: The name of the agent pool. Required. - :type agent_pool_name: str - :param machines: A list of machines from the agent pool to be deleted. Is one of the following - types: AgentPoolDeleteMachinesParameter, JSON, IO[bytes] Required. - :type machines: ~azure.mgmt.containerservice.models.AgentPoolDeleteMachinesParameter or JSON or - IO[bytes] - :return: An instance of LROPoller that returns None - :rtype: ~azure.core.polling.LROPoller[None] + :param parameters: The managed cluster to create or update. Is one of the following types: + ManagedCluster, JSON, IO[bytes] Required. + :type parameters: ~azure.mgmt.containerservice.models.ManagedCluster or JSON or IO[bytes] + :keyword etag: check if resource is changed. Set None to skip checking etag. Default value is + None. + :paramtype etag: str + :keyword match_condition: The match condition to use upon the etag. Default value is None. + :paramtype match_condition: ~azure.core.MatchConditions + :return: An instance of LROPoller that returns ManagedCluster. The ManagedCluster is compatible + with MutableMapping + :rtype: ~azure.core.polling.LROPoller[~azure.mgmt.containerservice.models.ManagedCluster] :raises ~azure.core.exceptions.HttpResponseError: """ _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) _params = kwargs.pop("params", {}) or {} content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) - cls: ClsType[None] = kwargs.pop("cls", None) + cls: ClsType[_models.ManagedCluster] = kwargs.pop("cls", None) polling: Union[bool, PollingMethod] = kwargs.pop("polling", True) lro_delay = kwargs.pop("polling_interval", self._config.polling_interval) cont_token: Optional[str] = kwargs.pop("continuation_token", None) if cont_token is None: - raw_result = self._delete_machines_initial( + raw_result = self._create_or_update_initial( resource_group_name=resource_group_name, resource_name=resource_name, - agent_pool_name=agent_pool_name, - machines=machines, + parameters=parameters, + etag=etag, + match_condition=match_condition, content_type=content_type, cls=lambda x, y, z: x, headers=_headers, @@ -4106,9 +3728,12 @@ def begin_delete_machines( raw_result.http_response.read() # type: ignore kwargs.pop("error_map", None) - def get_long_running_output(pipeline_response): # pylint: disable=inconsistent-return-statements + def get_long_running_output(pipeline_response): + response = pipeline_response.http_response + deserialized = _deserialize(_models.ManagedCluster, response.json()) if cls: - return cls(pipeline_response, None, {}) # type: ignore + return cls(pipeline_response, deserialized, {}) # type: ignore + return deserialized path_format_arguments = { "endpoint": self._serialize.url("self._config.base_url", self._config.base_url, "str", skip_quote=True), @@ -4123,16 +3748,25 @@ def get_long_running_output(pipeline_response): # pylint: disable=inconsistent- else: polling_method = polling if cont_token: - return LROPoller[None].from_continuation_token( + return LROPoller[_models.ManagedCluster].from_continuation_token( polling_method=polling_method, continuation_token=cont_token, client=self._client, deserialization_callback=get_long_running_output, ) - return LROPoller[None](self._client, raw_result, get_long_running_output, polling_method) # type: ignore + return LROPoller[_models.ManagedCluster]( + self._client, raw_result, get_long_running_output, polling_method # type: ignore + ) - def _upgrade_node_image_version_initial( - self, resource_group_name: str, resource_name: str, agent_pool_name: str, **kwargs: Any + def _update_tags_initial( + self, + resource_group_name: str, + resource_name: str, + parameters: Union[_models.TagsObject, JSON, IO[bytes]], + *, + etag: Optional[str] = None, + match_condition: Optional[MatchConditions] = None, + **kwargs: Any ) -> Iterator[bytes]: error_map: MutableMapping = { 401: ClientAuthenticationError, @@ -4140,19 +3774,36 @@ def _upgrade_node_image_version_initial( 409: ResourceExistsError, 304: ResourceNotModifiedError, } + if match_condition == MatchConditions.IfNotModified: + error_map[412] = ResourceModifiedError + elif match_condition == MatchConditions.IfPresent: + error_map[412] = ResourceNotFoundError + elif match_condition == MatchConditions.IfMissing: + error_map[412] = ResourceExistsError error_map.update(kwargs.pop("error_map", {}) or {}) - _headers = kwargs.pop("headers", {}) or {} + _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) _params = kwargs.pop("params", {}) or {} + content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) cls: ClsType[Iterator[bytes]] = kwargs.pop("cls", None) - _request = build_agent_pools_upgrade_node_image_version_request( + content_type = content_type or "application/json" + _content = None + if isinstance(parameters, (IOBase, bytes)): + _content = parameters + else: + _content = json.dumps(parameters, cls=SdkJSONEncoder, exclude_readonly=True) # type: ignore + + _request = build_managed_clusters_update_tags_request( resource_group_name=resource_group_name, resource_name=resource_name, - agent_pool_name=agent_pool_name, subscription_id=self._config.subscription_id, + etag=etag, + match_condition=match_condition, + content_type=content_type, api_version=self._config.api_version, + content=_content, headers=_headers, params=_params, ) @@ -4196,185 +3847,230 @@ def _upgrade_node_image_version_initial( return deserialized # type: ignore - @distributed_trace - def begin_upgrade_node_image_version( - self, resource_group_name: str, resource_name: str, agent_pool_name: str, **kwargs: Any - ) -> LROPoller[None]: - """Upgrades the node image version of an agent pool to the latest. - - Upgrading the node image version of an agent pool applies the newest OS and runtime updates to - the nodes. AKS provides one new image per week with the latest updates. For more details on - node image versions, see: `https://docs.microsoft.com/azure/aks/node-image-upgrade - `_. + @overload + def begin_update_tags( + self, + resource_group_name: str, + resource_name: str, + parameters: _models.TagsObject, + *, + content_type: str = "application/json", + etag: Optional[str] = None, + match_condition: Optional[MatchConditions] = None, + **kwargs: Any + ) -> LROPoller[_models.ManagedCluster]: + """Updates tags on a managed cluster. :param resource_group_name: The name of the resource group. The name is case insensitive. Required. :type resource_group_name: str :param resource_name: The name of the managed cluster resource. Required. :type resource_name: str - :param agent_pool_name: The name of the agent pool. Required. - :type agent_pool_name: str - :return: An instance of LROPoller that returns None - :rtype: ~azure.core.polling.LROPoller[None] + :param parameters: Parameters supplied to the Update Managed Cluster Tags operation. Required. + :type parameters: ~azure.mgmt.containerservice.models.TagsObject + :keyword content_type: Body Parameter content-type. Content type parameter for JSON body. + Default value is "application/json". + :paramtype content_type: str + :keyword etag: check if resource is changed. Set None to skip checking etag. Default value is + None. + :paramtype etag: str + :keyword match_condition: The match condition to use upon the etag. Default value is None. + :paramtype match_condition: ~azure.core.MatchConditions + :return: An instance of LROPoller that returns ManagedCluster. The ManagedCluster is compatible + with MutableMapping + :rtype: ~azure.core.polling.LROPoller[~azure.mgmt.containerservice.models.ManagedCluster] :raises ~azure.core.exceptions.HttpResponseError: """ - _headers = kwargs.pop("headers", {}) or {} - _params = kwargs.pop("params", {}) or {} - - cls: ClsType[None] = kwargs.pop("cls", None) - polling: Union[bool, PollingMethod] = kwargs.pop("polling", True) - lro_delay = kwargs.pop("polling_interval", self._config.polling_interval) - cont_token: Optional[str] = kwargs.pop("continuation_token", None) - if cont_token is None: - raw_result = self._upgrade_node_image_version_initial( - resource_group_name=resource_group_name, - resource_name=resource_name, - agent_pool_name=agent_pool_name, - cls=lambda x, y, z: x, - headers=_headers, - params=_params, - **kwargs - ) - raw_result.http_response.read() # type: ignore - kwargs.pop("error_map", None) - - def get_long_running_output(pipeline_response): # pylint: disable=inconsistent-return-statements - if cls: - return cls(pipeline_response, None, {}) # type: ignore - - path_format_arguments = { - "endpoint": self._serialize.url("self._config.base_url", self._config.base_url, "str", skip_quote=True), - } - - if polling is True: - polling_method: PollingMethod = cast( - PollingMethod, ARMPolling(lro_delay, path_format_arguments=path_format_arguments, **kwargs) - ) - elif polling is False: - polling_method = cast(PollingMethod, NoPolling()) - else: - polling_method = polling - if cont_token: - return LROPoller[None].from_continuation_token( - polling_method=polling_method, - continuation_token=cont_token, - client=self._client, - deserialization_callback=get_long_running_output, - ) - return LROPoller[None](self._client, raw_result, get_long_running_output, polling_method) # type: ignore - - @distributed_trace - def get_available_agent_pool_versions( - self, resource_group_name: str, resource_name: str, **kwargs: Any - ) -> _models.AgentPoolAvailableVersions: - """Gets a list of supported Kubernetes versions for the specified agent pool. - See `supported Kubernetes versions - `_ for more details about - the version lifecycle. + @overload + def begin_update_tags( + self, + resource_group_name: str, + resource_name: str, + parameters: JSON, + *, + content_type: str = "application/json", + etag: Optional[str] = None, + match_condition: Optional[MatchConditions] = None, + **kwargs: Any + ) -> LROPoller[_models.ManagedCluster]: + """Updates tags on a managed cluster. :param resource_group_name: The name of the resource group. The name is case insensitive. Required. :type resource_group_name: str :param resource_name: The name of the managed cluster resource. Required. :type resource_name: str - :return: AgentPoolAvailableVersions. The AgentPoolAvailableVersions is compatible with - MutableMapping - :rtype: ~azure.mgmt.containerservice.models.AgentPoolAvailableVersions - :raises ~azure.core.exceptions.HttpResponseError: - """ - error_map: MutableMapping = { - 401: ClientAuthenticationError, - 404: ResourceNotFoundError, - 409: ResourceExistsError, - 304: ResourceNotModifiedError, - } - error_map.update(kwargs.pop("error_map", {}) or {}) - - _headers = kwargs.pop("headers", {}) or {} - _params = kwargs.pop("params", {}) or {} - - cls: ClsType[_models.AgentPoolAvailableVersions] = kwargs.pop("cls", None) - - _request = build_agent_pools_get_available_agent_pool_versions_request( - resource_group_name=resource_group_name, - resource_name=resource_name, - subscription_id=self._config.subscription_id, - api_version=self._config.api_version, - headers=_headers, - params=_params, - ) - path_format_arguments = { - "endpoint": self._serialize.url("self._config.base_url", self._config.base_url, "str", skip_quote=True), - } - _request.url = self._client.format_url(_request.url, **path_format_arguments) - - _decompress = kwargs.pop("decompress", True) - _stream = kwargs.pop("stream", False) - pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access - _request, stream=_stream, **kwargs - ) - - response = pipeline_response.http_response - - if response.status_code not in [200]: - if _stream: - try: - response.read() # Load the body in memory and close the socket - except (StreamConsumedError, StreamClosedError): - pass - map_error(status_code=response.status_code, response=response, error_map=error_map) - error = _failsafe_deserialize( - _models.ErrorResponse, - response, - ) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - - if _stream: - deserialized = response.iter_bytes() if _decompress else response.iter_raw() - else: - deserialized = _deserialize(_models.AgentPoolAvailableVersions, response.json()) + :param parameters: Parameters supplied to the Update Managed Cluster Tags operation. Required. + :type parameters: JSON + :keyword content_type: Body Parameter content-type. Content type parameter for JSON body. + Default value is "application/json". + :paramtype content_type: str + :keyword etag: check if resource is changed. Set None to skip checking etag. Default value is + None. + :paramtype etag: str + :keyword match_condition: The match condition to use upon the etag. Default value is None. + :paramtype match_condition: ~azure.core.MatchConditions + :return: An instance of LROPoller that returns ManagedCluster. The ManagedCluster is compatible + with MutableMapping + :rtype: ~azure.core.polling.LROPoller[~azure.mgmt.containerservice.models.ManagedCluster] + :raises ~azure.core.exceptions.HttpResponseError: + """ - if cls: - return cls(pipeline_response, deserialized, {}) # type: ignore + @overload + def begin_update_tags( + self, + resource_group_name: str, + resource_name: str, + parameters: IO[bytes], + *, + content_type: str = "application/json", + etag: Optional[str] = None, + match_condition: Optional[MatchConditions] = None, + **kwargs: Any + ) -> LROPoller[_models.ManagedCluster]: + """Updates tags on a managed cluster. - return deserialized # type: ignore + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param resource_name: The name of the managed cluster resource. Required. + :type resource_name: str + :param parameters: Parameters supplied to the Update Managed Cluster Tags operation. Required. + :type parameters: IO[bytes] + :keyword content_type: Body Parameter content-type. Content type parameter for binary body. + Default value is "application/json". + :paramtype content_type: str + :keyword etag: check if resource is changed. Set None to skip checking etag. Default value is + None. + :paramtype etag: str + :keyword match_condition: The match condition to use upon the etag. Default value is None. + :paramtype match_condition: ~azure.core.MatchConditions + :return: An instance of LROPoller that returns ManagedCluster. The ManagedCluster is compatible + with MutableMapping + :rtype: ~azure.core.polling.LROPoller[~azure.mgmt.containerservice.models.ManagedCluster] + :raises ~azure.core.exceptions.HttpResponseError: + """ @distributed_trace - def get_upgrade_profile( - self, resource_group_name: str, resource_name: str, agent_pool_name: str, **kwargs: Any - ) -> _models.AgentPoolUpgradeProfile: - """Gets the upgrade profile for an agent pool. + def begin_update_tags( + self, + resource_group_name: str, + resource_name: str, + parameters: Union[_models.TagsObject, JSON, IO[bytes]], + *, + etag: Optional[str] = None, + match_condition: Optional[MatchConditions] = None, + **kwargs: Any + ) -> LROPoller[_models.ManagedCluster]: + """Updates tags on a managed cluster. :param resource_group_name: The name of the resource group. The name is case insensitive. Required. :type resource_group_name: str :param resource_name: The name of the managed cluster resource. Required. :type resource_name: str - :param agent_pool_name: The name of the agent pool. Required. - :type agent_pool_name: str - :return: AgentPoolUpgradeProfile. The AgentPoolUpgradeProfile is compatible with MutableMapping - :rtype: ~azure.mgmt.containerservice.models.AgentPoolUpgradeProfile + :param parameters: Parameters supplied to the Update Managed Cluster Tags operation. Is one of + the following types: TagsObject, JSON, IO[bytes] Required. + :type parameters: ~azure.mgmt.containerservice.models.TagsObject or JSON or IO[bytes] + :keyword etag: check if resource is changed. Set None to skip checking etag. Default value is + None. + :paramtype etag: str + :keyword match_condition: The match condition to use upon the etag. Default value is None. + :paramtype match_condition: ~azure.core.MatchConditions + :return: An instance of LROPoller that returns ManagedCluster. The ManagedCluster is compatible + with MutableMapping + :rtype: ~azure.core.polling.LROPoller[~azure.mgmt.containerservice.models.ManagedCluster] :raises ~azure.core.exceptions.HttpResponseError: """ + _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) + _params = kwargs.pop("params", {}) or {} + + content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) + cls: ClsType[_models.ManagedCluster] = kwargs.pop("cls", None) + polling: Union[bool, PollingMethod] = kwargs.pop("polling", True) + lro_delay = kwargs.pop("polling_interval", self._config.polling_interval) + cont_token: Optional[str] = kwargs.pop("continuation_token", None) + if cont_token is None: + raw_result = self._update_tags_initial( + resource_group_name=resource_group_name, + resource_name=resource_name, + parameters=parameters, + etag=etag, + match_condition=match_condition, + content_type=content_type, + cls=lambda x, y, z: x, + headers=_headers, + params=_params, + **kwargs + ) + raw_result.http_response.read() # type: ignore + kwargs.pop("error_map", None) + + def get_long_running_output(pipeline_response): + response = pipeline_response.http_response + deserialized = _deserialize(_models.ManagedCluster, response.json()) + if cls: + return cls(pipeline_response, deserialized, {}) # type: ignore + return deserialized + + path_format_arguments = { + "endpoint": self._serialize.url("self._config.base_url", self._config.base_url, "str", skip_quote=True), + } + + if polling is True: + polling_method: PollingMethod = cast( + PollingMethod, ARMPolling(lro_delay, path_format_arguments=path_format_arguments, **kwargs) + ) + elif polling is False: + polling_method = cast(PollingMethod, NoPolling()) + else: + polling_method = polling + if cont_token: + return LROPoller[_models.ManagedCluster].from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output, + ) + return LROPoller[_models.ManagedCluster]( + self._client, raw_result, get_long_running_output, polling_method # type: ignore + ) + + def _delete_initial( + self, + resource_group_name: str, + resource_name: str, + *, + etag: Optional[str] = None, + match_condition: Optional[MatchConditions] = None, + **kwargs: Any + ) -> Iterator[bytes]: error_map: MutableMapping = { 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError, 304: ResourceNotModifiedError, } + if match_condition == MatchConditions.IfNotModified: + error_map[412] = ResourceModifiedError + elif match_condition == MatchConditions.IfPresent: + error_map[412] = ResourceNotFoundError + elif match_condition == MatchConditions.IfMissing: + error_map[412] = ResourceExistsError error_map.update(kwargs.pop("error_map", {}) or {}) _headers = kwargs.pop("headers", {}) or {} _params = kwargs.pop("params", {}) or {} - cls: ClsType[_models.AgentPoolUpgradeProfile] = kwargs.pop("cls", None) + cls: ClsType[Iterator[bytes]] = kwargs.pop("cls", None) - _request = build_agent_pools_get_upgrade_profile_request( + _request = build_managed_clusters_delete_request( resource_group_name=resource_group_name, resource_name=resource_name, - agent_pool_name=agent_pool_name, subscription_id=self._config.subscription_id, + etag=etag, + match_condition=match_condition, api_version=self._config.api_version, headers=_headers, params=_params, @@ -4385,19 +4081,18 @@ def get_upgrade_profile( _request.url = self._client.format_url(_request.url, **path_format_arguments) _decompress = kwargs.pop("decompress", True) - _stream = kwargs.pop("stream", False) + _stream = True pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access _request, stream=_stream, **kwargs ) response = pipeline_response.http_response - if response.status_code not in [200]: - if _stream: - try: - response.read() # Load the body in memory and close the socket - except (StreamConsumedError, StreamClosedError): - pass + if response.status_code not in [202, 204]: + try: + response.read() # Load the body in memory and close the socket + except (StreamConsumedError, StreamClosedError): + pass map_error(status_code=response.status_code, response=response, error_map=error_map) error = _failsafe_deserialize( _models.ErrorResponse, @@ -4405,428 +4100,400 @@ def get_upgrade_profile( ) raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - if _stream: - deserialized = response.iter_bytes() if _decompress else response.iter_raw() - else: - deserialized = _deserialize(_models.AgentPoolUpgradeProfile, response.json()) + response_headers = {} + if response.status_code == 202: + response_headers["Azure-AsyncOperation"] = self._deserialize( + "str", response.headers.get("Azure-AsyncOperation") + ) + response_headers["Location"] = self._deserialize("str", response.headers.get("Location")) + response_headers["Retry-After"] = self._deserialize("int", response.headers.get("Retry-After")) + + deserialized = response.iter_bytes() if _decompress else response.iter_raw() if cls: - return cls(pipeline_response, deserialized, {}) # type: ignore + return cls(pipeline_response, deserialized, response_headers) # type: ignore return deserialized # type: ignore - -class ManagedClustersOperations: # pylint: disable=too-many-public-methods - """ - .. warning:: - **DO NOT** instantiate this class directly. - - Instead, you should access the following operations through - :class:`~azure.mgmt.containerservice.ContainerServiceClient`'s - :attr:`managed_clusters` attribute. - """ - - def __init__(self, *args, **kwargs) -> None: - input_args = list(args) - self._client: PipelineClient = input_args.pop(0) if input_args else kwargs.pop("client") - self._config: ContainerServiceClientConfiguration = input_args.pop(0) if input_args else kwargs.pop("config") - self._serialize: Serializer = input_args.pop(0) if input_args else kwargs.pop("serializer") - self._deserialize: Deserializer = input_args.pop(0) if input_args else kwargs.pop("deserializer") - @distributed_trace - def get(self, resource_group_name: str, resource_name: str, **kwargs: Any) -> _models.ManagedCluster: - """Gets a managed cluster. - - :param resource_group_name: The name of the resource group. The name is case insensitive. - Required. - :type resource_group_name: str - :param resource_name: The name of the managed cluster resource. Required. - :type resource_name: str - :return: ManagedCluster. The ManagedCluster is compatible with MutableMapping - :rtype: ~azure.mgmt.containerservice.models.ManagedCluster + def begin_delete( + self, + resource_group_name: str, + resource_name: str, + *, + etag: Optional[str] = None, + match_condition: Optional[MatchConditions] = None, + **kwargs: Any + ) -> LROPoller[None]: + """Deletes a managed cluster. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param resource_name: The name of the managed cluster resource. Required. + :type resource_name: str + :keyword etag: check if resource is changed. Set None to skip checking etag. Default value is + None. + :paramtype etag: str + :keyword match_condition: The match condition to use upon the etag. Default value is None. + :paramtype match_condition: ~azure.core.MatchConditions + :return: An instance of LROPoller that returns None + :rtype: ~azure.core.polling.LROPoller[None] :raises ~azure.core.exceptions.HttpResponseError: """ - error_map: MutableMapping = { - 401: ClientAuthenticationError, - 404: ResourceNotFoundError, - 409: ResourceExistsError, - 304: ResourceNotModifiedError, - } - error_map.update(kwargs.pop("error_map", {}) or {}) - _headers = kwargs.pop("headers", {}) or {} _params = kwargs.pop("params", {}) or {} - cls: ClsType[_models.ManagedCluster] = kwargs.pop("cls", None) + cls: ClsType[None] = kwargs.pop("cls", None) + polling: Union[bool, PollingMethod] = kwargs.pop("polling", True) + lro_delay = kwargs.pop("polling_interval", self._config.polling_interval) + cont_token: Optional[str] = kwargs.pop("continuation_token", None) + if cont_token is None: + raw_result = self._delete_initial( + resource_group_name=resource_group_name, + resource_name=resource_name, + etag=etag, + match_condition=match_condition, + cls=lambda x, y, z: x, + headers=_headers, + params=_params, + **kwargs + ) + raw_result.http_response.read() # type: ignore + kwargs.pop("error_map", None) + + def get_long_running_output(pipeline_response): # pylint: disable=inconsistent-return-statements + if cls: + return cls(pipeline_response, None, {}) # type: ignore - _request = build_managed_clusters_get_request( - resource_group_name=resource_group_name, - resource_name=resource_name, - subscription_id=self._config.subscription_id, - api_version=self._config.api_version, - headers=_headers, - params=_params, - ) path_format_arguments = { "endpoint": self._serialize.url("self._config.base_url", self._config.base_url, "str", skip_quote=True), } - _request.url = self._client.format_url(_request.url, **path_format_arguments) - - _decompress = kwargs.pop("decompress", True) - _stream = kwargs.pop("stream", False) - pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access - _request, stream=_stream, **kwargs - ) - response = pipeline_response.http_response - - if response.status_code not in [200]: - if _stream: - try: - response.read() # Load the body in memory and close the socket - except (StreamConsumedError, StreamClosedError): - pass - map_error(status_code=response.status_code, response=response, error_map=error_map) - error = _failsafe_deserialize( - _models.ErrorResponse, - response, + if polling is True: + polling_method: PollingMethod = cast( + PollingMethod, ARMPolling(lro_delay, path_format_arguments=path_format_arguments, **kwargs) ) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - - if _stream: - deserialized = response.iter_bytes() if _decompress else response.iter_raw() + elif polling is False: + polling_method = cast(PollingMethod, NoPolling()) else: - deserialized = _deserialize(_models.ManagedCluster, response.json()) + polling_method = polling + if cont_token: + return LROPoller[None].from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output, + ) + return LROPoller[None](self._client, raw_result, get_long_running_output, polling_method) # type: ignore - if cls: - return cls(pipeline_response, deserialized, {}) # type: ignore + @distributed_trace + def list_by_resource_group(self, resource_group_name: str, **kwargs: Any) -> ItemPaged["_models.ManagedCluster"]: + """Lists managed clusters in the specified subscription and resource group. - return deserialized # type: ignore + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :return: An iterator like instance of ManagedCluster + :rtype: ~azure.core.paging.ItemPaged[~azure.mgmt.containerservice.models.ManagedCluster] + :raises ~azure.core.exceptions.HttpResponseError: + """ + _headers = kwargs.pop("headers", {}) or {} + _params = kwargs.pop("params", {}) or {} + + cls: ClsType[List[_models.ManagedCluster]] = kwargs.pop("cls", None) - def _create_or_update_initial( - self, - resource_group_name: str, - resource_name: str, - parameters: Union[_models.ManagedCluster, JSON, IO[bytes]], - *, - etag: Optional[str] = None, - match_condition: Optional[MatchConditions] = None, - **kwargs: Any - ) -> Iterator[bytes]: error_map: MutableMapping = { 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError, 304: ResourceNotModifiedError, } - if match_condition == MatchConditions.IfNotModified: - error_map[412] = ResourceModifiedError - elif match_condition == MatchConditions.IfPresent: - error_map[412] = ResourceNotFoundError - elif match_condition == MatchConditions.IfMissing: - error_map[412] = ResourceExistsError error_map.update(kwargs.pop("error_map", {}) or {}) - _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) - _params = kwargs.pop("params", {}) or {} + def prepare_request(next_link=None): + if not next_link: - content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) - cls: ClsType[Iterator[bytes]] = kwargs.pop("cls", None) + _request = build_managed_clusters_list_by_resource_group_request( + resource_group_name=resource_group_name, + subscription_id=self._config.subscription_id, + api_version=self._config.api_version, + headers=_headers, + params=_params, + ) + path_format_arguments = { + "endpoint": self._serialize.url( + "self._config.base_url", self._config.base_url, "str", skip_quote=True + ), + } + _request.url = self._client.format_url(_request.url, **path_format_arguments) - content_type = content_type or "application/json" - _content = None - if isinstance(parameters, (IOBase, bytes)): - _content = parameters - else: - _content = json.dumps(parameters, cls=SdkJSONEncoder, exclude_readonly=True) # type: ignore + else: + # make call to next link with the client's api-version + _parsed_next_link = urllib.parse.urlparse(next_link) + _next_request_params = case_insensitive_dict( + { + key: [urllib.parse.quote(v) for v in value] + for key, value in urllib.parse.parse_qs(_parsed_next_link.query).items() + } + ) + _next_request_params["api-version"] = self._config.api_version + _request = HttpRequest( + "GET", + urllib.parse.urljoin(next_link, _parsed_next_link.path), + headers=_headers, + params=_next_request_params, + ) + path_format_arguments = { + "endpoint": self._serialize.url( + "self._config.base_url", self._config.base_url, "str", skip_quote=True + ), + } + _request.url = self._client.format_url(_request.url, **path_format_arguments) - _request = build_managed_clusters_create_or_update_request( - resource_group_name=resource_group_name, - resource_name=resource_name, - subscription_id=self._config.subscription_id, - etag=etag, - match_condition=match_condition, - content_type=content_type, - api_version=self._config.api_version, - content=_content, - headers=_headers, - params=_params, - ) - path_format_arguments = { - "endpoint": self._serialize.url("self._config.base_url", self._config.base_url, "str", skip_quote=True), - } - _request.url = self._client.format_url(_request.url, **path_format_arguments) + return _request - _decompress = kwargs.pop("decompress", True) - _stream = True - pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access - _request, stream=_stream, **kwargs - ) + def extract_data(pipeline_response): + deserialized = pipeline_response.http_response.json() + list_of_elem = _deserialize( + List[_models.ManagedCluster], + deserialized.get("value", []), + ) + if cls: + list_of_elem = cls(list_of_elem) # type: ignore + return deserialized.get("nextLink") or None, iter(list_of_elem) - response = pipeline_response.http_response + def get_next(next_link=None): + _request = prepare_request(next_link) - if response.status_code not in [200, 201]: - try: - response.read() # Load the body in memory and close the socket - except (StreamConsumedError, StreamClosedError): - pass - map_error(status_code=response.status_code, response=response, error_map=error_map) - error = _failsafe_deserialize( - _models.ErrorResponse, - response, + _stream = False + pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access + _request, stream=_stream, **kwargs ) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + response = pipeline_response.http_response - response_headers = {} - if response.status_code == 201: - response_headers["Azure-AsyncOperation"] = self._deserialize( - "str", response.headers.get("Azure-AsyncOperation") - ) - response_headers["Retry-After"] = self._deserialize("int", response.headers.get("Retry-After")) + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + error = _failsafe_deserialize( + _models.ErrorResponse, + response, + ) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - deserialized = response.iter_bytes() if _decompress else response.iter_raw() + return pipeline_response - if cls: - return cls(pipeline_response, deserialized, response_headers) # type: ignore + return ItemPaged(get_next, extract_data) - return deserialized # type: ignore + @distributed_trace + def list(self, **kwargs: Any) -> ItemPaged["_models.ManagedCluster"]: + """Gets a list of managed clusters in the specified subscription. - @overload - def begin_create_or_update( - self, - resource_group_name: str, - resource_name: str, - parameters: _models.ManagedCluster, - *, - content_type: str = "application/json", - etag: Optional[str] = None, - match_condition: Optional[MatchConditions] = None, - **kwargs: Any - ) -> LROPoller[_models.ManagedCluster]: - """Creates or updates a managed cluster. - - :param resource_group_name: The name of the resource group. The name is case insensitive. - Required. - :type resource_group_name: str - :param resource_name: The name of the managed cluster resource. Required. - :type resource_name: str - :param parameters: The managed cluster to create or update. Required. - :type parameters: ~azure.mgmt.containerservice.models.ManagedCluster - :keyword content_type: Body Parameter content-type. Content type parameter for JSON body. - Default value is "application/json". - :paramtype content_type: str - :keyword etag: check if resource is changed. Set None to skip checking etag. Default value is - None. - :paramtype etag: str - :keyword match_condition: The match condition to use upon the etag. Default value is None. - :paramtype match_condition: ~azure.core.MatchConditions - :return: An instance of LROPoller that returns ManagedCluster. The ManagedCluster is compatible - with MutableMapping - :rtype: ~azure.core.polling.LROPoller[~azure.mgmt.containerservice.models.ManagedCluster] + :return: An iterator like instance of ManagedCluster + :rtype: ~azure.core.paging.ItemPaged[~azure.mgmt.containerservice.models.ManagedCluster] :raises ~azure.core.exceptions.HttpResponseError: """ + _headers = kwargs.pop("headers", {}) or {} + _params = kwargs.pop("params", {}) or {} - @overload - def begin_create_or_update( - self, - resource_group_name: str, - resource_name: str, - parameters: JSON, - *, - content_type: str = "application/json", - etag: Optional[str] = None, - match_condition: Optional[MatchConditions] = None, - **kwargs: Any - ) -> LROPoller[_models.ManagedCluster]: - """Creates or updates a managed cluster. + cls: ClsType[List[_models.ManagedCluster]] = kwargs.pop("cls", None) - :param resource_group_name: The name of the resource group. The name is case insensitive. - Required. - :type resource_group_name: str - :param resource_name: The name of the managed cluster resource. Required. - :type resource_name: str - :param parameters: The managed cluster to create or update. Required. - :type parameters: JSON - :keyword content_type: Body Parameter content-type. Content type parameter for JSON body. - Default value is "application/json". - :paramtype content_type: str - :keyword etag: check if resource is changed. Set None to skip checking etag. Default value is - None. - :paramtype etag: str - :keyword match_condition: The match condition to use upon the etag. Default value is None. - :paramtype match_condition: ~azure.core.MatchConditions - :return: An instance of LROPoller that returns ManagedCluster. The ManagedCluster is compatible - with MutableMapping - :rtype: ~azure.core.polling.LROPoller[~azure.mgmt.containerservice.models.ManagedCluster] - :raises ~azure.core.exceptions.HttpResponseError: - """ + error_map: MutableMapping = { + 401: ClientAuthenticationError, + 404: ResourceNotFoundError, + 409: ResourceExistsError, + 304: ResourceNotModifiedError, + } + error_map.update(kwargs.pop("error_map", {}) or {}) - @overload - def begin_create_or_update( - self, - resource_group_name: str, - resource_name: str, - parameters: IO[bytes], - *, - content_type: str = "application/json", - etag: Optional[str] = None, - match_condition: Optional[MatchConditions] = None, - **kwargs: Any - ) -> LROPoller[_models.ManagedCluster]: - """Creates or updates a managed cluster. + def prepare_request(next_link=None): + if not next_link: - :param resource_group_name: The name of the resource group. The name is case insensitive. - Required. - :type resource_group_name: str - :param resource_name: The name of the managed cluster resource. Required. - :type resource_name: str - :param parameters: The managed cluster to create or update. Required. - :type parameters: IO[bytes] - :keyword content_type: Body Parameter content-type. Content type parameter for binary body. - Default value is "application/json". - :paramtype content_type: str - :keyword etag: check if resource is changed. Set None to skip checking etag. Default value is - None. - :paramtype etag: str - :keyword match_condition: The match condition to use upon the etag. Default value is None. - :paramtype match_condition: ~azure.core.MatchConditions - :return: An instance of LROPoller that returns ManagedCluster. The ManagedCluster is compatible - with MutableMapping - :rtype: ~azure.core.polling.LROPoller[~azure.mgmt.containerservice.models.ManagedCluster] - :raises ~azure.core.exceptions.HttpResponseError: - """ + _request = build_managed_clusters_list_request( + subscription_id=self._config.subscription_id, + api_version=self._config.api_version, + headers=_headers, + params=_params, + ) + path_format_arguments = { + "endpoint": self._serialize.url( + "self._config.base_url", self._config.base_url, "str", skip_quote=True + ), + } + _request.url = self._client.format_url(_request.url, **path_format_arguments) + + else: + # make call to next link with the client's api-version + _parsed_next_link = urllib.parse.urlparse(next_link) + _next_request_params = case_insensitive_dict( + { + key: [urllib.parse.quote(v) for v in value] + for key, value in urllib.parse.parse_qs(_parsed_next_link.query).items() + } + ) + _next_request_params["api-version"] = self._config.api_version + _request = HttpRequest( + "GET", + urllib.parse.urljoin(next_link, _parsed_next_link.path), + headers=_headers, + params=_next_request_params, + ) + path_format_arguments = { + "endpoint": self._serialize.url( + "self._config.base_url", self._config.base_url, "str", skip_quote=True + ), + } + _request.url = self._client.format_url(_request.url, **path_format_arguments) + + return _request + + def extract_data(pipeline_response): + deserialized = pipeline_response.http_response.json() + list_of_elem = _deserialize( + List[_models.ManagedCluster], + deserialized.get("value", []), + ) + if cls: + list_of_elem = cls(list_of_elem) # type: ignore + return deserialized.get("nextLink") or None, iter(list_of_elem) + + def get_next(next_link=None): + _request = prepare_request(next_link) + + _stream = False + pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access + _request, stream=_stream, **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + error = _failsafe_deserialize( + _models.ErrorResponse, + response, + ) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + return pipeline_response + + return ItemPaged(get_next, extract_data) @distributed_trace - def begin_create_or_update( - self, - resource_group_name: str, - resource_name: str, - parameters: Union[_models.ManagedCluster, JSON, IO[bytes]], - *, - etag: Optional[str] = None, - match_condition: Optional[MatchConditions] = None, - **kwargs: Any - ) -> LROPoller[_models.ManagedCluster]: - """Creates or updates a managed cluster. + def get_access_profile( + self, resource_group_name: str, resource_name: str, role_name: str, **kwargs: Any + ) -> _models.ManagedClusterAccessProfile: + """Gets an access profile of a managed cluster. + + **WARNING**: This API will be deprecated. Instead use `ListClusterUserCredentials + `_ or + `ListClusterAdminCredentials + `_ . :param resource_group_name: The name of the resource group. The name is case insensitive. Required. :type resource_group_name: str :param resource_name: The name of the managed cluster resource. Required. :type resource_name: str - :param parameters: The managed cluster to create or update. Is one of the following types: - ManagedCluster, JSON, IO[bytes] Required. - :type parameters: ~azure.mgmt.containerservice.models.ManagedCluster or JSON or IO[bytes] - :keyword etag: check if resource is changed. Set None to skip checking etag. Default value is - None. - :paramtype etag: str - :keyword match_condition: The match condition to use upon the etag. Default value is None. - :paramtype match_condition: ~azure.core.MatchConditions - :return: An instance of LROPoller that returns ManagedCluster. The ManagedCluster is compatible - with MutableMapping - :rtype: ~azure.core.polling.LROPoller[~azure.mgmt.containerservice.models.ManagedCluster] + :param role_name: The name of the role for managed cluster accessProfile resource. Required. + :type role_name: str + :return: ManagedClusterAccessProfile. The ManagedClusterAccessProfile is compatible with + MutableMapping + :rtype: ~azure.mgmt.containerservice.models.ManagedClusterAccessProfile :raises ~azure.core.exceptions.HttpResponseError: """ - _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) - _params = kwargs.pop("params", {}) or {} + error_map: MutableMapping = { + 401: ClientAuthenticationError, + 404: ResourceNotFoundError, + 409: ResourceExistsError, + 304: ResourceNotModifiedError, + } + error_map.update(kwargs.pop("error_map", {}) or {}) - content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) - cls: ClsType[_models.ManagedCluster] = kwargs.pop("cls", None) - polling: Union[bool, PollingMethod] = kwargs.pop("polling", True) - lro_delay = kwargs.pop("polling_interval", self._config.polling_interval) - cont_token: Optional[str] = kwargs.pop("continuation_token", None) - if cont_token is None: - raw_result = self._create_or_update_initial( - resource_group_name=resource_group_name, - resource_name=resource_name, - parameters=parameters, - etag=etag, - match_condition=match_condition, - content_type=content_type, - cls=lambda x, y, z: x, - headers=_headers, - params=_params, - **kwargs - ) - raw_result.http_response.read() # type: ignore - kwargs.pop("error_map", None) + _headers = kwargs.pop("headers", {}) or {} + _params = kwargs.pop("params", {}) or {} - def get_long_running_output(pipeline_response): - response = pipeline_response.http_response - deserialized = _deserialize(_models.ManagedCluster, response.json()) - if cls: - return cls(pipeline_response, deserialized, {}) # type: ignore - return deserialized + cls: ClsType[_models.ManagedClusterAccessProfile] = kwargs.pop("cls", None) + _request = build_managed_clusters_get_access_profile_request( + resource_group_name=resource_group_name, + resource_name=resource_name, + role_name=role_name, + subscription_id=self._config.subscription_id, + api_version=self._config.api_version, + headers=_headers, + params=_params, + ) path_format_arguments = { "endpoint": self._serialize.url("self._config.base_url", self._config.base_url, "str", skip_quote=True), } + _request.url = self._client.format_url(_request.url, **path_format_arguments) - if polling is True: - polling_method: PollingMethod = cast( - PollingMethod, ARMPolling(lro_delay, path_format_arguments=path_format_arguments, **kwargs) + _decompress = kwargs.pop("decompress", True) + _stream = kwargs.pop("stream", False) + pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access + _request, stream=_stream, **kwargs + ) + + response = pipeline_response.http_response + + if response.status_code not in [200]: + if _stream: + try: + response.read() # Load the body in memory and close the socket + except (StreamConsumedError, StreamClosedError): + pass + map_error(status_code=response.status_code, response=response, error_map=error_map) + error = _failsafe_deserialize( + _models.ErrorResponse, + response, ) - elif polling is False: - polling_method = cast(PollingMethod, NoPolling()) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + if _stream: + deserialized = response.iter_bytes() if _decompress else response.iter_raw() else: - polling_method = polling - if cont_token: - return LROPoller[_models.ManagedCluster].from_continuation_token( - polling_method=polling_method, - continuation_token=cont_token, - client=self._client, - deserialization_callback=get_long_running_output, - ) - return LROPoller[_models.ManagedCluster]( - self._client, raw_result, get_long_running_output, polling_method # type: ignore - ) + deserialized = _deserialize(_models.ManagedClusterAccessProfile, response.json()) - def _update_tags_initial( - self, - resource_group_name: str, - resource_name: str, - parameters: Union[_models.TagsObject, JSON, IO[bytes]], - *, - etag: Optional[str] = None, - match_condition: Optional[MatchConditions] = None, - **kwargs: Any - ) -> Iterator[bytes]: + if cls: + return cls(pipeline_response, deserialized, {}) # type: ignore + + return deserialized # type: ignore + + @distributed_trace + def list_cluster_admin_credentials( + self, resource_group_name: str, resource_name: str, *, server_fqdn: Optional[str] = None, **kwargs: Any + ) -> _models.CredentialResults: + """Lists the admin credentials of a managed cluster. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param resource_name: The name of the managed cluster resource. Required. + :type resource_name: str + :keyword server_fqdn: server fqdn type for credentials to be returned. Default value is None. + :paramtype server_fqdn: str + :return: CredentialResults. The CredentialResults is compatible with MutableMapping + :rtype: ~azure.mgmt.containerservice.models.CredentialResults + :raises ~azure.core.exceptions.HttpResponseError: + """ error_map: MutableMapping = { 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError, 304: ResourceNotModifiedError, } - if match_condition == MatchConditions.IfNotModified: - error_map[412] = ResourceModifiedError - elif match_condition == MatchConditions.IfPresent: - error_map[412] = ResourceNotFoundError - elif match_condition == MatchConditions.IfMissing: - error_map[412] = ResourceExistsError error_map.update(kwargs.pop("error_map", {}) or {}) - _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) + _headers = kwargs.pop("headers", {}) or {} _params = kwargs.pop("params", {}) or {} - content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) - cls: ClsType[Iterator[bytes]] = kwargs.pop("cls", None) - - content_type = content_type or "application/json" - _content = None - if isinstance(parameters, (IOBase, bytes)): - _content = parameters - else: - _content = json.dumps(parameters, cls=SdkJSONEncoder, exclude_readonly=True) # type: ignore + cls: ClsType[_models.CredentialResults] = kwargs.pop("cls", None) - _request = build_managed_clusters_update_tags_request( + _request = build_managed_clusters_list_cluster_admin_credentials_request( resource_group_name=resource_group_name, resource_name=resource_name, subscription_id=self._config.subscription_id, - etag=etag, - match_condition=match_condition, - content_type=content_type, + server_fqdn=server_fqdn, api_version=self._config.api_version, - content=_content, headers=_headers, params=_params, ) @@ -4836,18 +4503,19 @@ def _update_tags_initial( _request.url = self._client.format_url(_request.url, **path_format_arguments) _decompress = kwargs.pop("decompress", True) - _stream = True + _stream = kwargs.pop("stream", False) pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access _request, stream=_stream, **kwargs ) response = pipeline_response.http_response - if response.status_code not in [200, 202]: - try: - response.read() # Load the body in memory and close the socket - except (StreamConsumedError, StreamClosedError): - pass + if response.status_code not in [200]: + if _stream: + try: + response.read() # Load the body in memory and close the socket + except (StreamConsumedError, StreamClosedError): + pass map_error(status_code=response.status_code, response=response, error_map=error_map) error = _failsafe_deserialize( _models.ErrorResponse, @@ -4855,223 +4523,183 @@ def _update_tags_initial( ) raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - response_headers = {} - if response.status_code == 202: - response_headers["Azure-AsyncOperation"] = self._deserialize( - "str", response.headers.get("Azure-AsyncOperation") - ) - response_headers["Location"] = self._deserialize("str", response.headers.get("Location")) - response_headers["Retry-After"] = self._deserialize("int", response.headers.get("Retry-After")) - - deserialized = response.iter_bytes() if _decompress else response.iter_raw() + if _stream: + deserialized = response.iter_bytes() if _decompress else response.iter_raw() + else: + deserialized = _deserialize(_models.CredentialResults, response.json()) if cls: - return cls(pipeline_response, deserialized, response_headers) # type: ignore + return cls(pipeline_response, deserialized, {}) # type: ignore return deserialized # type: ignore - @overload - def begin_update_tags( + @distributed_trace + def list_cluster_user_credentials( self, resource_group_name: str, resource_name: str, - parameters: _models.TagsObject, *, - content_type: str = "application/json", - etag: Optional[str] = None, - match_condition: Optional[MatchConditions] = None, + server_fqdn: Optional[str] = None, + format: Optional[Union[str, _models.Format]] = None, **kwargs: Any - ) -> LROPoller[_models.ManagedCluster]: - """Updates tags on a managed cluster. + ) -> _models.CredentialResults: + """Lists the user credentials of a managed cluster. :param resource_group_name: The name of the resource group. The name is case insensitive. Required. :type resource_group_name: str :param resource_name: The name of the managed cluster resource. Required. :type resource_name: str - :param parameters: Parameters supplied to the Update Managed Cluster Tags operation. Required. - :type parameters: ~azure.mgmt.containerservice.models.TagsObject - :keyword content_type: Body Parameter content-type. Content type parameter for JSON body. - Default value is "application/json". - :paramtype content_type: str - :keyword etag: check if resource is changed. Set None to skip checking etag. Default value is - None. - :paramtype etag: str - :keyword match_condition: The match condition to use upon the etag. Default value is None. - :paramtype match_condition: ~azure.core.MatchConditions - :return: An instance of LROPoller that returns ManagedCluster. The ManagedCluster is compatible - with MutableMapping - :rtype: ~azure.core.polling.LROPoller[~azure.mgmt.containerservice.models.ManagedCluster] + :keyword server_fqdn: server fqdn type for credentials to be returned. Default value is None. + :paramtype server_fqdn: str + :keyword format: Only apply to AAD clusters, specifies the format of returned kubeconfig. + Format 'azure' will return azure auth-provider kubeconfig; format 'exec' will return exec + format kubeconfig, which requires kubelogin binary in the path. Known values are: "azure" and + "exec". Default value is None. + :paramtype format: str or ~azure.mgmt.containerservice.models.Format + :return: CredentialResults. The CredentialResults is compatible with MutableMapping + :rtype: ~azure.mgmt.containerservice.models.CredentialResults :raises ~azure.core.exceptions.HttpResponseError: """ + error_map: MutableMapping = { + 401: ClientAuthenticationError, + 404: ResourceNotFoundError, + 409: ResourceExistsError, + 304: ResourceNotModifiedError, + } + error_map.update(kwargs.pop("error_map", {}) or {}) - @overload - def begin_update_tags( - self, - resource_group_name: str, - resource_name: str, - parameters: JSON, - *, - content_type: str = "application/json", - etag: Optional[str] = None, - match_condition: Optional[MatchConditions] = None, - **kwargs: Any - ) -> LROPoller[_models.ManagedCluster]: - """Updates tags on a managed cluster. + _headers = kwargs.pop("headers", {}) or {} + _params = kwargs.pop("params", {}) or {} + + cls: ClsType[_models.CredentialResults] = kwargs.pop("cls", None) + + _request = build_managed_clusters_list_cluster_user_credentials_request( + resource_group_name=resource_group_name, + resource_name=resource_name, + subscription_id=self._config.subscription_id, + server_fqdn=server_fqdn, + format=format, + api_version=self._config.api_version, + headers=_headers, + params=_params, + ) + path_format_arguments = { + "endpoint": self._serialize.url("self._config.base_url", self._config.base_url, "str", skip_quote=True), + } + _request.url = self._client.format_url(_request.url, **path_format_arguments) + + _decompress = kwargs.pop("decompress", True) + _stream = kwargs.pop("stream", False) + pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access + _request, stream=_stream, **kwargs + ) + + response = pipeline_response.http_response + + if response.status_code not in [200]: + if _stream: + try: + response.read() # Load the body in memory and close the socket + except (StreamConsumedError, StreamClosedError): + pass + map_error(status_code=response.status_code, response=response, error_map=error_map) + error = _failsafe_deserialize( + _models.ErrorResponse, + response, + ) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + if _stream: + deserialized = response.iter_bytes() if _decompress else response.iter_raw() + else: + deserialized = _deserialize(_models.CredentialResults, response.json()) + + if cls: + return cls(pipeline_response, deserialized, {}) # type: ignore + + return deserialized # type: ignore + + @distributed_trace + def list_cluster_monitoring_user_credentials( + self, resource_group_name: str, resource_name: str, *, server_fqdn: Optional[str] = None, **kwargs: Any + ) -> _models.CredentialResults: + """Lists the cluster monitoring user credentials of a managed cluster. :param resource_group_name: The name of the resource group. The name is case insensitive. Required. :type resource_group_name: str :param resource_name: The name of the managed cluster resource. Required. :type resource_name: str - :param parameters: Parameters supplied to the Update Managed Cluster Tags operation. Required. - :type parameters: JSON - :keyword content_type: Body Parameter content-type. Content type parameter for JSON body. - Default value is "application/json". - :paramtype content_type: str - :keyword etag: check if resource is changed. Set None to skip checking etag. Default value is - None. - :paramtype etag: str - :keyword match_condition: The match condition to use upon the etag. Default value is None. - :paramtype match_condition: ~azure.core.MatchConditions - :return: An instance of LROPoller that returns ManagedCluster. The ManagedCluster is compatible - with MutableMapping - :rtype: ~azure.core.polling.LROPoller[~azure.mgmt.containerservice.models.ManagedCluster] + :keyword server_fqdn: server fqdn type for credentials to be returned. Default value is None. + :paramtype server_fqdn: str + :return: CredentialResults. The CredentialResults is compatible with MutableMapping + :rtype: ~azure.mgmt.containerservice.models.CredentialResults :raises ~azure.core.exceptions.HttpResponseError: """ + error_map: MutableMapping = { + 401: ClientAuthenticationError, + 404: ResourceNotFoundError, + 409: ResourceExistsError, + 304: ResourceNotModifiedError, + } + error_map.update(kwargs.pop("error_map", {}) or {}) - @overload - def begin_update_tags( - self, - resource_group_name: str, - resource_name: str, - parameters: IO[bytes], - *, - content_type: str = "application/json", - etag: Optional[str] = None, - match_condition: Optional[MatchConditions] = None, - **kwargs: Any - ) -> LROPoller[_models.ManagedCluster]: - """Updates tags on a managed cluster. - - :param resource_group_name: The name of the resource group. The name is case insensitive. - Required. - :type resource_group_name: str - :param resource_name: The name of the managed cluster resource. Required. - :type resource_name: str - :param parameters: Parameters supplied to the Update Managed Cluster Tags operation. Required. - :type parameters: IO[bytes] - :keyword content_type: Body Parameter content-type. Content type parameter for binary body. - Default value is "application/json". - :paramtype content_type: str - :keyword etag: check if resource is changed. Set None to skip checking etag. Default value is - None. - :paramtype etag: str - :keyword match_condition: The match condition to use upon the etag. Default value is None. - :paramtype match_condition: ~azure.core.MatchConditions - :return: An instance of LROPoller that returns ManagedCluster. The ManagedCluster is compatible - with MutableMapping - :rtype: ~azure.core.polling.LROPoller[~azure.mgmt.containerservice.models.ManagedCluster] - :raises ~azure.core.exceptions.HttpResponseError: - """ - - @distributed_trace - def begin_update_tags( - self, - resource_group_name: str, - resource_name: str, - parameters: Union[_models.TagsObject, JSON, IO[bytes]], - *, - etag: Optional[str] = None, - match_condition: Optional[MatchConditions] = None, - **kwargs: Any - ) -> LROPoller[_models.ManagedCluster]: - """Updates tags on a managed cluster. - - :param resource_group_name: The name of the resource group. The name is case insensitive. - Required. - :type resource_group_name: str - :param resource_name: The name of the managed cluster resource. Required. - :type resource_name: str - :param parameters: Parameters supplied to the Update Managed Cluster Tags operation. Is one of - the following types: TagsObject, JSON, IO[bytes] Required. - :type parameters: ~azure.mgmt.containerservice.models.TagsObject or JSON or IO[bytes] - :keyword etag: check if resource is changed. Set None to skip checking etag. Default value is - None. - :paramtype etag: str - :keyword match_condition: The match condition to use upon the etag. Default value is None. - :paramtype match_condition: ~azure.core.MatchConditions - :return: An instance of LROPoller that returns ManagedCluster. The ManagedCluster is compatible - with MutableMapping - :rtype: ~azure.core.polling.LROPoller[~azure.mgmt.containerservice.models.ManagedCluster] - :raises ~azure.core.exceptions.HttpResponseError: - """ - _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) + _headers = kwargs.pop("headers", {}) or {} _params = kwargs.pop("params", {}) or {} - content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) - cls: ClsType[_models.ManagedCluster] = kwargs.pop("cls", None) - polling: Union[bool, PollingMethod] = kwargs.pop("polling", True) - lro_delay = kwargs.pop("polling_interval", self._config.polling_interval) - cont_token: Optional[str] = kwargs.pop("continuation_token", None) - if cont_token is None: - raw_result = self._update_tags_initial( - resource_group_name=resource_group_name, - resource_name=resource_name, - parameters=parameters, - etag=etag, - match_condition=match_condition, - content_type=content_type, - cls=lambda x, y, z: x, - headers=_headers, - params=_params, - **kwargs - ) - raw_result.http_response.read() # type: ignore - kwargs.pop("error_map", None) - - def get_long_running_output(pipeline_response): - response = pipeline_response.http_response - deserialized = _deserialize(_models.ManagedCluster, response.json()) - if cls: - return cls(pipeline_response, deserialized, {}) # type: ignore - return deserialized + cls: ClsType[_models.CredentialResults] = kwargs.pop("cls", None) + _request = build_managed_clusters_list_cluster_monitoring_user_credentials_request( + resource_group_name=resource_group_name, + resource_name=resource_name, + subscription_id=self._config.subscription_id, + server_fqdn=server_fqdn, + api_version=self._config.api_version, + headers=_headers, + params=_params, + ) path_format_arguments = { "endpoint": self._serialize.url("self._config.base_url", self._config.base_url, "str", skip_quote=True), } + _request.url = self._client.format_url(_request.url, **path_format_arguments) - if polling is True: - polling_method: PollingMethod = cast( - PollingMethod, ARMPolling(lro_delay, path_format_arguments=path_format_arguments, **kwargs) + _decompress = kwargs.pop("decompress", True) + _stream = kwargs.pop("stream", False) + pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access + _request, stream=_stream, **kwargs + ) + + response = pipeline_response.http_response + + if response.status_code not in [200]: + if _stream: + try: + response.read() # Load the body in memory and close the socket + except (StreamConsumedError, StreamClosedError): + pass + map_error(status_code=response.status_code, response=response, error_map=error_map) + error = _failsafe_deserialize( + _models.ErrorResponse, + response, ) - elif polling is False: - polling_method = cast(PollingMethod, NoPolling()) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + if _stream: + deserialized = response.iter_bytes() if _decompress else response.iter_raw() else: - polling_method = polling - if cont_token: - return LROPoller[_models.ManagedCluster].from_continuation_token( - polling_method=polling_method, - continuation_token=cont_token, - client=self._client, - deserialization_callback=get_long_running_output, - ) - return LROPoller[_models.ManagedCluster]( - self._client, raw_result, get_long_running_output, polling_method # type: ignore - ) + deserialized = _deserialize(_models.CredentialResults, response.json()) - @api_version_validation( - params_added_on={"2026-03-02-preview": ["ignore_pod_disruption_budget"]}, - api_versions_list=["2025-10-01", "2026-01-01", "2026-02-01", "2026-03-01", "2026-03-02-preview"], - ) - def _delete_initial( + if cls: + return cls(pipeline_response, deserialized, {}) # type: ignore + + return deserialized # type: ignore + + def _reset_service_principal_profile_initial( self, resource_group_name: str, resource_name: str, - *, - ignore_pod_disruption_budget: Optional[bool] = None, - etag: Optional[str] = None, - match_condition: Optional[MatchConditions] = None, + parameters: Union[_models.ManagedClusterServicePrincipalProfile, JSON, IO[bytes]], **kwargs: Any ) -> Iterator[bytes]: error_map: MutableMapping = { @@ -5080,27 +4708,28 @@ def _delete_initial( 409: ResourceExistsError, 304: ResourceNotModifiedError, } - if match_condition == MatchConditions.IfNotModified: - error_map[412] = ResourceModifiedError - elif match_condition == MatchConditions.IfPresent: - error_map[412] = ResourceNotFoundError - elif match_condition == MatchConditions.IfMissing: - error_map[412] = ResourceExistsError error_map.update(kwargs.pop("error_map", {}) or {}) - _headers = kwargs.pop("headers", {}) or {} + _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) _params = kwargs.pop("params", {}) or {} + content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) cls: ClsType[Iterator[bytes]] = kwargs.pop("cls", None) - _request = build_managed_clusters_delete_request( + content_type = content_type or "application/json" + _content = None + if isinstance(parameters, (IOBase, bytes)): + _content = parameters + else: + _content = json.dumps(parameters, cls=SdkJSONEncoder, exclude_readonly=True) # type: ignore + + _request = build_managed_clusters_reset_service_principal_profile_request( resource_group_name=resource_group_name, resource_name=resource_name, subscription_id=self._config.subscription_id, - ignore_pod_disruption_budget=ignore_pod_disruption_budget, - etag=etag, - match_condition=match_condition, + content_type=content_type, api_version=self._config.api_version, + content=_content, headers=_headers, params=_params, ) @@ -5117,7 +4746,7 @@ def _delete_initial( response = pipeline_response.http_response - if response.status_code not in [202, 204]: + if response.status_code not in [200, 202]: try: response.read() # Load the body in memory and close the socket except (StreamConsumedError, StreamClosedError): @@ -5131,9 +4760,6 @@ def _delete_initial( response_headers = {} if response.status_code == 202: - response_headers["Azure-AsyncOperation"] = self._deserialize( - "str", response.headers.get("Azure-AsyncOperation") - ) response_headers["Location"] = self._deserialize("str", response.headers.get("Location")) response_headers["Retry-After"] = self._deserialize("int", response.headers.get("Retry-After")) @@ -5144,67 +4770,145 @@ def _delete_initial( return deserialized # type: ignore - @distributed_trace - @api_version_validation( - params_added_on={"2026-03-02-preview": ["ignore_pod_disruption_budget"]}, - api_versions_list=["2025-10-01", "2026-01-01", "2026-02-01", "2026-03-01", "2026-03-02-preview"], - ) - def begin_delete( + @overload + def begin_reset_service_principal_profile( self, resource_group_name: str, resource_name: str, + parameters: _models.ManagedClusterServicePrincipalProfile, *, - ignore_pod_disruption_budget: Optional[bool] = None, - etag: Optional[str] = None, - match_condition: Optional[MatchConditions] = None, + content_type: str = "application/json", **kwargs: Any ) -> LROPoller[None]: - """Deletes a managed cluster. + """Reset the Service Principal Profile of a managed cluster. + + This action cannot be performed on a cluster that is not using a service principal. :param resource_group_name: The name of the resource group. The name is case insensitive. Required. :type resource_group_name: str :param resource_name: The name of the managed cluster resource. Required. :type resource_name: str - :keyword ignore_pod_disruption_budget: ignore-pod-disruption-budget=true to delete those pods - on a node without considering Pod Disruption Budget. Default value is None. - :paramtype ignore_pod_disruption_budget: bool - :keyword etag: check if resource is changed. Set None to skip checking etag. Default value is - None. - :paramtype etag: str - :keyword match_condition: The match condition to use upon the etag. Default value is None. - :paramtype match_condition: ~azure.core.MatchConditions + :param parameters: The service principal profile to set on the managed cluster. Required. + :type parameters: ~azure.mgmt.containerservice.models.ManagedClusterServicePrincipalProfile + :keyword content_type: Body Parameter content-type. Content type parameter for JSON body. + Default value is "application/json". + :paramtype content_type: str :return: An instance of LROPoller that returns None :rtype: ~azure.core.polling.LROPoller[None] :raises ~azure.core.exceptions.HttpResponseError: """ - _headers = kwargs.pop("headers", {}) or {} - _params = kwargs.pop("params", {}) or {} - cls: ClsType[None] = kwargs.pop("cls", None) - polling: Union[bool, PollingMethod] = kwargs.pop("polling", True) - lro_delay = kwargs.pop("polling_interval", self._config.polling_interval) - cont_token: Optional[str] = kwargs.pop("continuation_token", None) - if cont_token is None: - raw_result = self._delete_initial( - resource_group_name=resource_group_name, - resource_name=resource_name, - ignore_pod_disruption_budget=ignore_pod_disruption_budget, - etag=etag, - match_condition=match_condition, - cls=lambda x, y, z: x, - headers=_headers, - params=_params, - **kwargs - ) - raw_result.http_response.read() # type: ignore - kwargs.pop("error_map", None) + @overload + def begin_reset_service_principal_profile( + self, + resource_group_name: str, + resource_name: str, + parameters: JSON, + *, + content_type: str = "application/json", + **kwargs: Any + ) -> LROPoller[None]: + """Reset the Service Principal Profile of a managed cluster. - def get_long_running_output(pipeline_response): # pylint: disable=inconsistent-return-statements - if cls: - return cls(pipeline_response, None, {}) # type: ignore + This action cannot be performed on a cluster that is not using a service principal. - path_format_arguments = { + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param resource_name: The name of the managed cluster resource. Required. + :type resource_name: str + :param parameters: The service principal profile to set on the managed cluster. Required. + :type parameters: JSON + :keyword content_type: Body Parameter content-type. Content type parameter for JSON body. + Default value is "application/json". + :paramtype content_type: str + :return: An instance of LROPoller that returns None + :rtype: ~azure.core.polling.LROPoller[None] + :raises ~azure.core.exceptions.HttpResponseError: + """ + + @overload + def begin_reset_service_principal_profile( + self, + resource_group_name: str, + resource_name: str, + parameters: IO[bytes], + *, + content_type: str = "application/json", + **kwargs: Any + ) -> LROPoller[None]: + """Reset the Service Principal Profile of a managed cluster. + + This action cannot be performed on a cluster that is not using a service principal. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param resource_name: The name of the managed cluster resource. Required. + :type resource_name: str + :param parameters: The service principal profile to set on the managed cluster. Required. + :type parameters: IO[bytes] + :keyword content_type: Body Parameter content-type. Content type parameter for binary body. + Default value is "application/json". + :paramtype content_type: str + :return: An instance of LROPoller that returns None + :rtype: ~azure.core.polling.LROPoller[None] + :raises ~azure.core.exceptions.HttpResponseError: + """ + + @distributed_trace + def begin_reset_service_principal_profile( + self, + resource_group_name: str, + resource_name: str, + parameters: Union[_models.ManagedClusterServicePrincipalProfile, JSON, IO[bytes]], + **kwargs: Any + ) -> LROPoller[None]: + """Reset the Service Principal Profile of a managed cluster. + + This action cannot be performed on a cluster that is not using a service principal. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param resource_name: The name of the managed cluster resource. Required. + :type resource_name: str + :param parameters: The service principal profile to set on the managed cluster. Is one of the + following types: ManagedClusterServicePrincipalProfile, JSON, IO[bytes] Required. + :type parameters: ~azure.mgmt.containerservice.models.ManagedClusterServicePrincipalProfile or + JSON or IO[bytes] + :return: An instance of LROPoller that returns None + :rtype: ~azure.core.polling.LROPoller[None] + :raises ~azure.core.exceptions.HttpResponseError: + """ + _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) + _params = kwargs.pop("params", {}) or {} + + content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) + cls: ClsType[None] = kwargs.pop("cls", None) + polling: Union[bool, PollingMethod] = kwargs.pop("polling", True) + lro_delay = kwargs.pop("polling_interval", self._config.polling_interval) + cont_token: Optional[str] = kwargs.pop("continuation_token", None) + if cont_token is None: + raw_result = self._reset_service_principal_profile_initial( + resource_group_name=resource_group_name, + resource_name=resource_name, + parameters=parameters, + content_type=content_type, + cls=lambda x, y, z: x, + headers=_headers, + params=_params, + **kwargs + ) + raw_result.http_response.read() # type: ignore + kwargs.pop("error_map", None) + + def get_long_running_output(pipeline_response): # pylint: disable=inconsistent-return-statements + if cls: + return cls(pipeline_response, None, {}) # type: ignore + + path_format_arguments = { "endpoint": self._serialize.url("self._config.base_url", self._config.base_url, "str", skip_quote=True), } @@ -5225,22 +4929,13 @@ def get_long_running_output(pipeline_response): # pylint: disable=inconsistent- ) return LROPoller[None](self._client, raw_result, get_long_running_output, polling_method) # type: ignore - @distributed_trace - def list_by_resource_group(self, resource_group_name: str, **kwargs: Any) -> ItemPaged["_models.ManagedCluster"]: - """Lists managed clusters in the specified subscription and resource group. - - :param resource_group_name: The name of the resource group. The name is case insensitive. - Required. - :type resource_group_name: str - :return: An iterator like instance of ManagedCluster - :rtype: ~azure.core.paging.ItemPaged[~azure.mgmt.containerservice.models.ManagedCluster] - :raises ~azure.core.exceptions.HttpResponseError: - """ - _headers = kwargs.pop("headers", {}) or {} - _params = kwargs.pop("params", {}) or {} - - cls: ClsType[List[_models.ManagedCluster]] = kwargs.pop("cls", None) - + def _reset_aad_profile_initial( + self, + resource_group_name: str, + resource_name: str, + parameters: Union[_models.ManagedClusterAADProfile, JSON, IO[bytes]], + **kwargs: Any + ) -> Iterator[bytes]: error_map: MutableMapping = { 401: ClientAuthenticationError, 404: ResourceNotFoundError, @@ -5249,195 +4944,236 @@ def list_by_resource_group(self, resource_group_name: str, **kwargs: Any) -> Ite } error_map.update(kwargs.pop("error_map", {}) or {}) - def prepare_request(next_link=None): - if not next_link: + _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) + _params = kwargs.pop("params", {}) or {} - _request = build_managed_clusters_list_by_resource_group_request( - resource_group_name=resource_group_name, - subscription_id=self._config.subscription_id, - api_version=self._config.api_version, - headers=_headers, - params=_params, - ) - path_format_arguments = { - "endpoint": self._serialize.url( - "self._config.base_url", self._config.base_url, "str", skip_quote=True - ), - } - _request.url = self._client.format_url(_request.url, **path_format_arguments) + content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) + cls: ClsType[Iterator[bytes]] = kwargs.pop("cls", None) - else: - # make call to next link with the client's api-version - _parsed_next_link = urllib.parse.urlparse(next_link) - _next_request_params = case_insensitive_dict( - { - key: [urllib.parse.quote(v) for v in value] - for key, value in urllib.parse.parse_qs(_parsed_next_link.query).items() - } - ) - _next_request_params["api-version"] = self._config.api_version - _request = HttpRequest( - "GET", - urllib.parse.urljoin(next_link, _parsed_next_link.path), - headers=_headers, - params=_next_request_params, - ) - path_format_arguments = { - "endpoint": self._serialize.url( - "self._config.base_url", self._config.base_url, "str", skip_quote=True - ), - } - _request.url = self._client.format_url(_request.url, **path_format_arguments) + content_type = content_type or "application/json" + _content = None + if isinstance(parameters, (IOBase, bytes)): + _content = parameters + else: + _content = json.dumps(parameters, cls=SdkJSONEncoder, exclude_readonly=True) # type: ignore - return _request + _request = build_managed_clusters_reset_aad_profile_request( + resource_group_name=resource_group_name, + resource_name=resource_name, + subscription_id=self._config.subscription_id, + content_type=content_type, + api_version=self._config.api_version, + content=_content, + headers=_headers, + params=_params, + ) + path_format_arguments = { + "endpoint": self._serialize.url("self._config.base_url", self._config.base_url, "str", skip_quote=True), + } + _request.url = self._client.format_url(_request.url, **path_format_arguments) - def extract_data(pipeline_response): - deserialized = pipeline_response.http_response.json() - list_of_elem = _deserialize( - List[_models.ManagedCluster], - deserialized.get("value", []), - ) - if cls: - list_of_elem = cls(list_of_elem) # type: ignore - return deserialized.get("nextLink") or None, iter(list_of_elem) + _decompress = kwargs.pop("decompress", True) + _stream = True + pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access + _request, stream=_stream, **kwargs + ) - def get_next(next_link=None): - _request = prepare_request(next_link) + response = pipeline_response.http_response - _stream = False - pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access - _request, stream=_stream, **kwargs + if response.status_code not in [200, 202]: + try: + response.read() # Load the body in memory and close the socket + except (StreamConsumedError, StreamClosedError): + pass + map_error(status_code=response.status_code, response=response, error_map=error_map) + error = _failsafe_deserialize( + _models.ErrorResponse, + response, ) - response = pipeline_response.http_response + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - if response.status_code not in [200]: - map_error(status_code=response.status_code, response=response, error_map=error_map) - error = _failsafe_deserialize( - _models.ErrorResponse, - response, - ) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + response_headers = {} + if response.status_code == 202: + response_headers["Location"] = self._deserialize("str", response.headers.get("Location")) + response_headers["Retry-After"] = self._deserialize("int", response.headers.get("Retry-After")) - return pipeline_response + deserialized = response.iter_bytes() if _decompress else response.iter_raw() - return ItemPaged(get_next, extract_data) + if cls: + return cls(pipeline_response, deserialized, response_headers) # type: ignore - @distributed_trace - def list(self, **kwargs: Any) -> ItemPaged["_models.ManagedCluster"]: - """Gets a list of managed clusters in the specified subscription. + return deserialized # type: ignore - :return: An iterator like instance of ManagedCluster - :rtype: ~azure.core.paging.ItemPaged[~azure.mgmt.containerservice.models.ManagedCluster] - :raises ~azure.core.exceptions.HttpResponseError: - """ - _headers = kwargs.pop("headers", {}) or {} - _params = kwargs.pop("params", {}) or {} + @overload + def begin_reset_aad_profile( + self, + resource_group_name: str, + resource_name: str, + parameters: _models.ManagedClusterAADProfile, + *, + content_type: str = "application/json", + **kwargs: Any + ) -> LROPoller[None]: + """Reset the AAD Profile of a managed cluster. - cls: ClsType[List[_models.ManagedCluster]] = kwargs.pop("cls", None) + **WARNING**: This API will be deprecated. Please see `AKS-managed Azure Active Directory + integration `_ to update your cluster with AKS-managed Azure + AD. - error_map: MutableMapping = { - 401: ClientAuthenticationError, - 404: ResourceNotFoundError, - 409: ResourceExistsError, - 304: ResourceNotModifiedError, - } - error_map.update(kwargs.pop("error_map", {}) or {}) - - def prepare_request(next_link=None): - if not next_link: - - _request = build_managed_clusters_list_request( - subscription_id=self._config.subscription_id, - api_version=self._config.api_version, - headers=_headers, - params=_params, - ) - path_format_arguments = { - "endpoint": self._serialize.url( - "self._config.base_url", self._config.base_url, "str", skip_quote=True - ), - } - _request.url = self._client.format_url(_request.url, **path_format_arguments) - - else: - # make call to next link with the client's api-version - _parsed_next_link = urllib.parse.urlparse(next_link) - _next_request_params = case_insensitive_dict( - { - key: [urllib.parse.quote(v) for v in value] - for key, value in urllib.parse.parse_qs(_parsed_next_link.query).items() - } - ) - _next_request_params["api-version"] = self._config.api_version - _request = HttpRequest( - "GET", - urllib.parse.urljoin(next_link, _parsed_next_link.path), - headers=_headers, - params=_next_request_params, - ) - path_format_arguments = { - "endpoint": self._serialize.url( - "self._config.base_url", self._config.base_url, "str", skip_quote=True - ), - } - _request.url = self._client.format_url(_request.url, **path_format_arguments) - - return _request + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param resource_name: The name of the managed cluster resource. Required. + :type resource_name: str + :param parameters: The AAD profile to set on the Managed Cluster. Required. + :type parameters: ~azure.mgmt.containerservice.models.ManagedClusterAADProfile + :keyword content_type: Body Parameter content-type. Content type parameter for JSON body. + Default value is "application/json". + :paramtype content_type: str + :return: An instance of LROPoller that returns None + :rtype: ~azure.core.polling.LROPoller[None] + :raises ~azure.core.exceptions.HttpResponseError: + """ - def extract_data(pipeline_response): - deserialized = pipeline_response.http_response.json() - list_of_elem = _deserialize( - List[_models.ManagedCluster], - deserialized.get("value", []), - ) - if cls: - list_of_elem = cls(list_of_elem) # type: ignore - return deserialized.get("nextLink") or None, iter(list_of_elem) + @overload + def begin_reset_aad_profile( + self, + resource_group_name: str, + resource_name: str, + parameters: JSON, + *, + content_type: str = "application/json", + **kwargs: Any + ) -> LROPoller[None]: + """Reset the AAD Profile of a managed cluster. - def get_next(next_link=None): - _request = prepare_request(next_link) + **WARNING**: This API will be deprecated. Please see `AKS-managed Azure Active Directory + integration `_ to update your cluster with AKS-managed Azure + AD. - _stream = False - pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access - _request, stream=_stream, **kwargs - ) - response = pipeline_response.http_response + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param resource_name: The name of the managed cluster resource. Required. + :type resource_name: str + :param parameters: The AAD profile to set on the Managed Cluster. Required. + :type parameters: JSON + :keyword content_type: Body Parameter content-type. Content type parameter for JSON body. + Default value is "application/json". + :paramtype content_type: str + :return: An instance of LROPoller that returns None + :rtype: ~azure.core.polling.LROPoller[None] + :raises ~azure.core.exceptions.HttpResponseError: + """ - if response.status_code not in [200]: - map_error(status_code=response.status_code, response=response, error_map=error_map) - error = _failsafe_deserialize( - _models.ErrorResponse, - response, - ) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + @overload + def begin_reset_aad_profile( + self, + resource_group_name: str, + resource_name: str, + parameters: IO[bytes], + *, + content_type: str = "application/json", + **kwargs: Any + ) -> LROPoller[None]: + """Reset the AAD Profile of a managed cluster. - return pipeline_response + **WARNING**: This API will be deprecated. Please see `AKS-managed Azure Active Directory + integration `_ to update your cluster with AKS-managed Azure + AD. - return ItemPaged(get_next, extract_data) + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param resource_name: The name of the managed cluster resource. Required. + :type resource_name: str + :param parameters: The AAD profile to set on the Managed Cluster. Required. + :type parameters: IO[bytes] + :keyword content_type: Body Parameter content-type. Content type parameter for binary body. + Default value is "application/json". + :paramtype content_type: str + :return: An instance of LROPoller that returns None + :rtype: ~azure.core.polling.LROPoller[None] + :raises ~azure.core.exceptions.HttpResponseError: + """ @distributed_trace - def get_access_profile( - self, resource_group_name: str, resource_name: str, role_name: str, **kwargs: Any - ) -> _models.ManagedClusterAccessProfile: - """Gets an access profile of a managed cluster. + def begin_reset_aad_profile( + self, + resource_group_name: str, + resource_name: str, + parameters: Union[_models.ManagedClusterAADProfile, JSON, IO[bytes]], + **kwargs: Any + ) -> LROPoller[None]: + """Reset the AAD Profile of a managed cluster. - **WARNING**: This API will be deprecated. Instead use `ListClusterUserCredentials - `_ or - `ListClusterAdminCredentials - `_ . + **WARNING**: This API will be deprecated. Please see `AKS-managed Azure Active Directory + integration `_ to update your cluster with AKS-managed Azure + AD. :param resource_group_name: The name of the resource group. The name is case insensitive. Required. :type resource_group_name: str :param resource_name: The name of the managed cluster resource. Required. :type resource_name: str - :param role_name: The name of the role for managed cluster accessProfile resource. Required. - :type role_name: str - :return: ManagedClusterAccessProfile. The ManagedClusterAccessProfile is compatible with - MutableMapping - :rtype: ~azure.mgmt.containerservice.models.ManagedClusterAccessProfile + :param parameters: The AAD profile to set on the Managed Cluster. Is one of the following + types: ManagedClusterAADProfile, JSON, IO[bytes] Required. + :type parameters: ~azure.mgmt.containerservice.models.ManagedClusterAADProfile or JSON or + IO[bytes] + :return: An instance of LROPoller that returns None + :rtype: ~azure.core.polling.LROPoller[None] :raises ~azure.core.exceptions.HttpResponseError: """ + _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) + _params = kwargs.pop("params", {}) or {} + + content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) + cls: ClsType[None] = kwargs.pop("cls", None) + polling: Union[bool, PollingMethod] = kwargs.pop("polling", True) + lro_delay = kwargs.pop("polling_interval", self._config.polling_interval) + cont_token: Optional[str] = kwargs.pop("continuation_token", None) + if cont_token is None: + raw_result = self._reset_aad_profile_initial( + resource_group_name=resource_group_name, + resource_name=resource_name, + parameters=parameters, + content_type=content_type, + cls=lambda x, y, z: x, + headers=_headers, + params=_params, + **kwargs + ) + raw_result.http_response.read() # type: ignore + kwargs.pop("error_map", None) + + def get_long_running_output(pipeline_response): # pylint: disable=inconsistent-return-statements + if cls: + return cls(pipeline_response, None, {}) # type: ignore + + path_format_arguments = { + "endpoint": self._serialize.url("self._config.base_url", self._config.base_url, "str", skip_quote=True), + } + + if polling is True: + polling_method: PollingMethod = cast( + PollingMethod, ARMPolling(lro_delay, path_format_arguments=path_format_arguments, **kwargs) + ) + elif polling is False: + polling_method = cast(PollingMethod, NoPolling()) + else: + polling_method = polling + if cont_token: + return LROPoller[None].from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output, + ) + return LROPoller[None](self._client, raw_result, get_long_running_output, polling_method) # type: ignore + + def _rotate_cluster_certificates_initial( + self, resource_group_name: str, resource_name: str, **kwargs: Any + ) -> Iterator[bytes]: error_map: MutableMapping = { 401: ClientAuthenticationError, 404: ResourceNotFoundError, @@ -5449,12 +5185,11 @@ def get_access_profile( _headers = kwargs.pop("headers", {}) or {} _params = kwargs.pop("params", {}) or {} - cls: ClsType[_models.ManagedClusterAccessProfile] = kwargs.pop("cls", None) + cls: ClsType[Iterator[bytes]] = kwargs.pop("cls", None) - _request = build_managed_clusters_get_access_profile_request( + _request = build_managed_clusters_rotate_cluster_certificates_request( resource_group_name=resource_group_name, resource_name=resource_name, - role_name=role_name, subscription_id=self._config.subscription_id, api_version=self._config.api_version, headers=_headers, @@ -5466,19 +5201,18 @@ def get_access_profile( _request.url = self._client.format_url(_request.url, **path_format_arguments) _decompress = kwargs.pop("decompress", True) - _stream = kwargs.pop("stream", False) + _stream = True pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access _request, stream=_stream, **kwargs ) response = pipeline_response.http_response - if response.status_code not in [200]: - if _stream: - try: - response.read() # Load the body in memory and close the socket - except (StreamConsumedError, StreamClosedError): - pass + if response.status_code not in [202, 204]: + try: + response.read() # Load the body in memory and close the socket + except (StreamConsumedError, StreamClosedError): + pass map_error(status_code=response.status_code, response=response, error_map=error_map) error = _failsafe_deserialize( _models.ErrorResponse, @@ -5486,33 +5220,83 @@ def get_access_profile( ) raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - if _stream: - deserialized = response.iter_bytes() if _decompress else response.iter_raw() - else: - deserialized = _deserialize(_models.ManagedClusterAccessProfile, response.json()) + response_headers = {} + if response.status_code == 202: + response_headers["Location"] = self._deserialize("str", response.headers.get("Location")) + response_headers["Retry-After"] = self._deserialize("int", response.headers.get("Retry-After")) + + deserialized = response.iter_bytes() if _decompress else response.iter_raw() if cls: - return cls(pipeline_response, deserialized, {}) # type: ignore + return cls(pipeline_response, deserialized, response_headers) # type: ignore return deserialized # type: ignore @distributed_trace - def list_cluster_admin_credentials( - self, resource_group_name: str, resource_name: str, *, server_fqdn: Optional[str] = None, **kwargs: Any - ) -> _models.CredentialResults: - """Lists the admin credentials of a managed cluster. - - :param resource_group_name: The name of the resource group. The name is case insensitive. + def begin_rotate_cluster_certificates( + self, resource_group_name: str, resource_name: str, **kwargs: Any + ) -> LROPoller[None]: + """Rotates the certificates of a managed cluster. + + See `Certificate rotation `_ for + more details about rotating managed cluster certificates. + + :param resource_group_name: The name of the resource group. The name is case insensitive. Required. :type resource_group_name: str :param resource_name: The name of the managed cluster resource. Required. :type resource_name: str - :keyword server_fqdn: server fqdn type for credentials to be returned. Default value is None. - :paramtype server_fqdn: str - :return: CredentialResults. The CredentialResults is compatible with MutableMapping - :rtype: ~azure.mgmt.containerservice.models.CredentialResults + :return: An instance of LROPoller that returns None + :rtype: ~azure.core.polling.LROPoller[None] :raises ~azure.core.exceptions.HttpResponseError: """ + _headers = kwargs.pop("headers", {}) or {} + _params = kwargs.pop("params", {}) or {} + + cls: ClsType[None] = kwargs.pop("cls", None) + polling: Union[bool, PollingMethod] = kwargs.pop("polling", True) + lro_delay = kwargs.pop("polling_interval", self._config.polling_interval) + cont_token: Optional[str] = kwargs.pop("continuation_token", None) + if cont_token is None: + raw_result = self._rotate_cluster_certificates_initial( + resource_group_name=resource_group_name, + resource_name=resource_name, + cls=lambda x, y, z: x, + headers=_headers, + params=_params, + **kwargs + ) + raw_result.http_response.read() # type: ignore + kwargs.pop("error_map", None) + + def get_long_running_output(pipeline_response): # pylint: disable=inconsistent-return-statements + if cls: + return cls(pipeline_response, None, {}) # type: ignore + + path_format_arguments = { + "endpoint": self._serialize.url("self._config.base_url", self._config.base_url, "str", skip_quote=True), + } + + if polling is True: + polling_method: PollingMethod = cast( + PollingMethod, ARMPolling(lro_delay, path_format_arguments=path_format_arguments, **kwargs) + ) + elif polling is False: + polling_method = cast(PollingMethod, NoPolling()) + else: + polling_method = polling + if cont_token: + return LROPoller[None].from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output, + ) + return LROPoller[None](self._client, raw_result, get_long_running_output, polling_method) # type: ignore + + def _abort_latest_operation_initial( + self, resource_group_name: str, resource_name: str, **kwargs: Any + ) -> Iterator[bytes]: error_map: MutableMapping = { 401: ClientAuthenticationError, 404: ResourceNotFoundError, @@ -5524,13 +5308,12 @@ def list_cluster_admin_credentials( _headers = kwargs.pop("headers", {}) or {} _params = kwargs.pop("params", {}) or {} - cls: ClsType[_models.CredentialResults] = kwargs.pop("cls", None) + cls: ClsType[Iterator[bytes]] = kwargs.pop("cls", None) - _request = build_managed_clusters_list_cluster_admin_credentials_request( + _request = build_managed_clusters_abort_latest_operation_request( resource_group_name=resource_group_name, resource_name=resource_name, subscription_id=self._config.subscription_id, - server_fqdn=server_fqdn, api_version=self._config.api_version, headers=_headers, params=_params, @@ -5541,19 +5324,18 @@ def list_cluster_admin_credentials( _request.url = self._client.format_url(_request.url, **path_format_arguments) _decompress = kwargs.pop("decompress", True) - _stream = kwargs.pop("stream", False) + _stream = True pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access _request, stream=_stream, **kwargs ) response = pipeline_response.http_response - if response.status_code not in [200]: - if _stream: - try: - response.read() # Load the body in memory and close the socket - except (StreamConsumedError, StreamClosedError): - pass + if response.status_code not in [202, 204]: + try: + response.read() # Load the body in memory and close the socket + except (StreamConsumedError, StreamClosedError): + pass map_error(status_code=response.status_code, response=response, error_map=error_map) error = _failsafe_deserialize( _models.ErrorResponse, @@ -5561,44 +5343,87 @@ def list_cluster_admin_credentials( ) raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - if _stream: - deserialized = response.iter_bytes() if _decompress else response.iter_raw() - else: - deserialized = _deserialize(_models.CredentialResults, response.json()) + response_headers = {} + if response.status_code == 202: + response_headers["Azure-AsyncOperation"] = self._deserialize( + "str", response.headers.get("Azure-AsyncOperation") + ) + response_headers["Location"] = self._deserialize("str", response.headers.get("Location")) + response_headers["Retry-After"] = self._deserialize("int", response.headers.get("Retry-After")) + + deserialized = response.iter_bytes() if _decompress else response.iter_raw() if cls: - return cls(pipeline_response, deserialized, {}) # type: ignore + return cls(pipeline_response, deserialized, response_headers) # type: ignore return deserialized # type: ignore @distributed_trace - def list_cluster_user_credentials( - self, - resource_group_name: str, - resource_name: str, - *, - server_fqdn: Optional[str] = None, - format: Optional[Union[str, _models.Format]] = None, - **kwargs: Any - ) -> _models.CredentialResults: - """Lists the user credentials of a managed cluster. + def begin_abort_latest_operation( + self, resource_group_name: str, resource_name: str, **kwargs: Any + ) -> LROPoller[None]: + """Aborts last operation running on managed cluster. + + Aborts the currently running operation on the managed cluster. The Managed Cluster will be + moved to a Canceling state and eventually to a Canceled state when cancellation finishes. If + the operation completes before cancellation can take place, a 409 error code is returned. :param resource_group_name: The name of the resource group. The name is case insensitive. Required. :type resource_group_name: str :param resource_name: The name of the managed cluster resource. Required. :type resource_name: str - :keyword server_fqdn: server fqdn type for credentials to be returned. Default value is None. - :paramtype server_fqdn: str - :keyword format: Only apply to AAD clusters, specifies the format of returned kubeconfig. - Format 'azure' will return azure auth-provider kubeconfig; format 'exec' will return exec - format kubeconfig, which requires kubelogin binary in the path. Known values are: "azure" and - "exec". Default value is None. - :paramtype format: str or ~azure.mgmt.containerservice.models.Format - :return: CredentialResults. The CredentialResults is compatible with MutableMapping - :rtype: ~azure.mgmt.containerservice.models.CredentialResults + :return: An instance of LROPoller that returns None + :rtype: ~azure.core.polling.LROPoller[None] :raises ~azure.core.exceptions.HttpResponseError: """ + _headers = kwargs.pop("headers", {}) or {} + _params = kwargs.pop("params", {}) or {} + + cls: ClsType[None] = kwargs.pop("cls", None) + polling: Union[bool, PollingMethod] = kwargs.pop("polling", True) + lro_delay = kwargs.pop("polling_interval", self._config.polling_interval) + cont_token: Optional[str] = kwargs.pop("continuation_token", None) + if cont_token is None: + raw_result = self._abort_latest_operation_initial( + resource_group_name=resource_group_name, + resource_name=resource_name, + cls=lambda x, y, z: x, + headers=_headers, + params=_params, + **kwargs + ) + raw_result.http_response.read() # type: ignore + kwargs.pop("error_map", None) + + def get_long_running_output(pipeline_response): # pylint: disable=inconsistent-return-statements + if cls: + return cls(pipeline_response, None, {}) # type: ignore + + path_format_arguments = { + "endpoint": self._serialize.url("self._config.base_url", self._config.base_url, "str", skip_quote=True), + } + + if polling is True: + polling_method: PollingMethod = cast( + PollingMethod, ARMPolling(lro_delay, path_format_arguments=path_format_arguments, **kwargs) + ) + elif polling is False: + polling_method = cast(PollingMethod, NoPolling()) + else: + polling_method = polling + if cont_token: + return LROPoller[None].from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output, + ) + return LROPoller[None](self._client, raw_result, get_long_running_output, polling_method) # type: ignore + + def _rotate_service_account_signing_keys_initial( # pylint: disable=name-too-long + self, resource_group_name: str, resource_name: str, **kwargs: Any + ) -> Iterator[bytes]: error_map: MutableMapping = { 401: ClientAuthenticationError, 404: ResourceNotFoundError, @@ -5610,14 +5435,12 @@ def list_cluster_user_credentials( _headers = kwargs.pop("headers", {}) or {} _params = kwargs.pop("params", {}) or {} - cls: ClsType[_models.CredentialResults] = kwargs.pop("cls", None) + cls: ClsType[Iterator[bytes]] = kwargs.pop("cls", None) - _request = build_managed_clusters_list_cluster_user_credentials_request( + _request = build_managed_clusters_rotate_service_account_signing_keys_request( resource_group_name=resource_group_name, resource_name=resource_name, subscription_id=self._config.subscription_id, - server_fqdn=server_fqdn, - format=format, api_version=self._config.api_version, headers=_headers, params=_params, @@ -5628,19 +5451,18 @@ def list_cluster_user_credentials( _request.url = self._client.format_url(_request.url, **path_format_arguments) _decompress = kwargs.pop("decompress", True) - _stream = kwargs.pop("stream", False) + _stream = True pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access _request, stream=_stream, **kwargs ) response = pipeline_response.http_response - if response.status_code not in [200]: - if _stream: - try: - response.read() # Load the body in memory and close the socket - except (StreamConsumedError, StreamClosedError): - pass + if response.status_code not in [202, 204]: + try: + response.read() # Load the body in memory and close the socket + except (StreamConsumedError, StreamClosedError): + pass map_error(status_code=response.status_code, response=response, error_map=error_map) error = _failsafe_deserialize( _models.ErrorResponse, @@ -5648,98 +5470,78 @@ def list_cluster_user_credentials( ) raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - if _stream: - deserialized = response.iter_bytes() if _decompress else response.iter_raw() - else: - deserialized = _deserialize(_models.CredentialResults, response.json()) + response_headers = {} + if response.status_code == 202: + response_headers["Location"] = self._deserialize("str", response.headers.get("Location")) + response_headers["Retry-After"] = self._deserialize("int", response.headers.get("Retry-After")) + + deserialized = response.iter_bytes() if _decompress else response.iter_raw() if cls: - return cls(pipeline_response, deserialized, {}) # type: ignore + return cls(pipeline_response, deserialized, response_headers) # type: ignore return deserialized # type: ignore @distributed_trace - def list_cluster_monitoring_user_credentials( - self, resource_group_name: str, resource_name: str, *, server_fqdn: Optional[str] = None, **kwargs: Any - ) -> _models.CredentialResults: - """Lists the cluster monitoring user credentials of a managed cluster. + def begin_rotate_service_account_signing_keys( # pylint: disable=name-too-long + self, resource_group_name: str, resource_name: str, **kwargs: Any + ) -> LROPoller[None]: + """Rotates the service account signing keys of a managed cluster. :param resource_group_name: The name of the resource group. The name is case insensitive. Required. :type resource_group_name: str :param resource_name: The name of the managed cluster resource. Required. :type resource_name: str - :keyword server_fqdn: server fqdn type for credentials to be returned. Default value is None. - :paramtype server_fqdn: str - :return: CredentialResults. The CredentialResults is compatible with MutableMapping - :rtype: ~azure.mgmt.containerservice.models.CredentialResults + :return: An instance of LROPoller that returns None + :rtype: ~azure.core.polling.LROPoller[None] :raises ~azure.core.exceptions.HttpResponseError: """ - error_map: MutableMapping = { - 401: ClientAuthenticationError, - 404: ResourceNotFoundError, - 409: ResourceExistsError, - 304: ResourceNotModifiedError, - } - error_map.update(kwargs.pop("error_map", {}) or {}) - _headers = kwargs.pop("headers", {}) or {} _params = kwargs.pop("params", {}) or {} - cls: ClsType[_models.CredentialResults] = kwargs.pop("cls", None) + cls: ClsType[None] = kwargs.pop("cls", None) + polling: Union[bool, PollingMethod] = kwargs.pop("polling", True) + lro_delay = kwargs.pop("polling_interval", self._config.polling_interval) + cont_token: Optional[str] = kwargs.pop("continuation_token", None) + if cont_token is None: + raw_result = self._rotate_service_account_signing_keys_initial( + resource_group_name=resource_group_name, + resource_name=resource_name, + cls=lambda x, y, z: x, + headers=_headers, + params=_params, + **kwargs + ) + raw_result.http_response.read() # type: ignore + kwargs.pop("error_map", None) + + def get_long_running_output(pipeline_response): # pylint: disable=inconsistent-return-statements + if cls: + return cls(pipeline_response, None, {}) # type: ignore - _request = build_managed_clusters_list_cluster_monitoring_user_credentials_request( - resource_group_name=resource_group_name, - resource_name=resource_name, - subscription_id=self._config.subscription_id, - server_fqdn=server_fqdn, - api_version=self._config.api_version, - headers=_headers, - params=_params, - ) path_format_arguments = { "endpoint": self._serialize.url("self._config.base_url", self._config.base_url, "str", skip_quote=True), } - _request.url = self._client.format_url(_request.url, **path_format_arguments) - _decompress = kwargs.pop("decompress", True) - _stream = kwargs.pop("stream", False) - pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access - _request, stream=_stream, **kwargs - ) - - response = pipeline_response.http_response - - if response.status_code not in [200]: - if _stream: - try: - response.read() # Load the body in memory and close the socket - except (StreamConsumedError, StreamClosedError): - pass - map_error(status_code=response.status_code, response=response, error_map=error_map) - error = _failsafe_deserialize( - _models.ErrorResponse, - response, + if polling is True: + polling_method: PollingMethod = cast( + PollingMethod, ARMPolling(lro_delay, path_format_arguments=path_format_arguments, **kwargs) ) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - - if _stream: - deserialized = response.iter_bytes() if _decompress else response.iter_raw() + elif polling is False: + polling_method = cast(PollingMethod, NoPolling()) else: - deserialized = _deserialize(_models.CredentialResults, response.json()) - - if cls: - return cls(pipeline_response, deserialized, {}) # type: ignore - - return deserialized # type: ignore + polling_method = polling + if cont_token: + return LROPoller[None].from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output, + ) + return LROPoller[None](self._client, raw_result, get_long_running_output, polling_method) # type: ignore - def _reset_service_principal_profile_initial( - self, - resource_group_name: str, - resource_name: str, - parameters: Union[_models.ManagedClusterServicePrincipalProfile, JSON, IO[bytes]], - **kwargs: Any - ) -> Iterator[bytes]: + def _stop_initial(self, resource_group_name: str, resource_name: str, **kwargs: Any) -> Iterator[bytes]: error_map: MutableMapping = { 401: ClientAuthenticationError, 404: ResourceNotFoundError, @@ -5748,26 +5550,16 @@ def _reset_service_principal_profile_initial( } error_map.update(kwargs.pop("error_map", {}) or {}) - _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) + _headers = kwargs.pop("headers", {}) or {} _params = kwargs.pop("params", {}) or {} - content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) cls: ClsType[Iterator[bytes]] = kwargs.pop("cls", None) - content_type = content_type or "application/json" - _content = None - if isinstance(parameters, (IOBase, bytes)): - _content = parameters - else: - _content = json.dumps(parameters, cls=SdkJSONEncoder, exclude_readonly=True) # type: ignore - - _request = build_managed_clusters_reset_service_principal_profile_request( + _request = build_managed_clusters_stop_request( resource_group_name=resource_group_name, resource_name=resource_name, subscription_id=self._config.subscription_id, - content_type=content_type, api_version=self._config.api_version, - content=_content, headers=_headers, params=_params, ) @@ -5784,7 +5576,7 @@ def _reset_service_principal_profile_initial( response = pipeline_response.http_response - if response.status_code not in [200, 202]: + if response.status_code not in [202, 204]: try: response.read() # Load the body in memory and close the socket except (StreamConsumedError, StreamClosedError): @@ -5808,132 +5600,36 @@ def _reset_service_principal_profile_initial( return deserialized # type: ignore - @overload - def begin_reset_service_principal_profile( - self, - resource_group_name: str, - resource_name: str, - parameters: _models.ManagedClusterServicePrincipalProfile, - *, - content_type: str = "application/json", - **kwargs: Any - ) -> LROPoller[None]: - """Reset the Service Principal Profile of a managed cluster. - - This action cannot be performed on a cluster that is not using a service principal. - - :param resource_group_name: The name of the resource group. The name is case insensitive. - Required. - :type resource_group_name: str - :param resource_name: The name of the managed cluster resource. Required. - :type resource_name: str - :param parameters: The service principal profile to set on the managed cluster. Required. - :type parameters: ~azure.mgmt.containerservice.models.ManagedClusterServicePrincipalProfile - :keyword content_type: Body Parameter content-type. Content type parameter for JSON body. - Default value is "application/json". - :paramtype content_type: str - :return: An instance of LROPoller that returns None - :rtype: ~azure.core.polling.LROPoller[None] - :raises ~azure.core.exceptions.HttpResponseError: - """ - - @overload - def begin_reset_service_principal_profile( - self, - resource_group_name: str, - resource_name: str, - parameters: JSON, - *, - content_type: str = "application/json", - **kwargs: Any - ) -> LROPoller[None]: - """Reset the Service Principal Profile of a managed cluster. - - This action cannot be performed on a cluster that is not using a service principal. - - :param resource_group_name: The name of the resource group. The name is case insensitive. - Required. - :type resource_group_name: str - :param resource_name: The name of the managed cluster resource. Required. - :type resource_name: str - :param parameters: The service principal profile to set on the managed cluster. Required. - :type parameters: JSON - :keyword content_type: Body Parameter content-type. Content type parameter for JSON body. - Default value is "application/json". - :paramtype content_type: str - :return: An instance of LROPoller that returns None - :rtype: ~azure.core.polling.LROPoller[None] - :raises ~azure.core.exceptions.HttpResponseError: - """ - - @overload - def begin_reset_service_principal_profile( - self, - resource_group_name: str, - resource_name: str, - parameters: IO[bytes], - *, - content_type: str = "application/json", - **kwargs: Any - ) -> LROPoller[None]: - """Reset the Service Principal Profile of a managed cluster. - - This action cannot be performed on a cluster that is not using a service principal. - - :param resource_group_name: The name of the resource group. The name is case insensitive. - Required. - :type resource_group_name: str - :param resource_name: The name of the managed cluster resource. Required. - :type resource_name: str - :param parameters: The service principal profile to set on the managed cluster. Required. - :type parameters: IO[bytes] - :keyword content_type: Body Parameter content-type. Content type parameter for binary body. - Default value is "application/json". - :paramtype content_type: str - :return: An instance of LROPoller that returns None - :rtype: ~azure.core.polling.LROPoller[None] - :raises ~azure.core.exceptions.HttpResponseError: - """ - @distributed_trace - def begin_reset_service_principal_profile( - self, - resource_group_name: str, - resource_name: str, - parameters: Union[_models.ManagedClusterServicePrincipalProfile, JSON, IO[bytes]], - **kwargs: Any - ) -> LROPoller[None]: - """Reset the Service Principal Profile of a managed cluster. + def begin_stop(self, resource_group_name: str, resource_name: str, **kwargs: Any) -> LROPoller[None]: + """Stops a Managed Cluster. - This action cannot be performed on a cluster that is not using a service principal. + This can only be performed on Azure Virtual Machine Scale set backed clusters. Stopping a + cluster stops the control plane and agent nodes entirely, while maintaining all object and + cluster state. A cluster does not accrue charges while it is stopped. See `stopping a cluster + `_ for more details about stopping a + cluster. :param resource_group_name: The name of the resource group. The name is case insensitive. Required. :type resource_group_name: str :param resource_name: The name of the managed cluster resource. Required. :type resource_name: str - :param parameters: The service principal profile to set on the managed cluster. Is one of the - following types: ManagedClusterServicePrincipalProfile, JSON, IO[bytes] Required. - :type parameters: ~azure.mgmt.containerservice.models.ManagedClusterServicePrincipalProfile or - JSON or IO[bytes] :return: An instance of LROPoller that returns None :rtype: ~azure.core.polling.LROPoller[None] :raises ~azure.core.exceptions.HttpResponseError: """ - _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) + _headers = kwargs.pop("headers", {}) or {} _params = kwargs.pop("params", {}) or {} - content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) cls: ClsType[None] = kwargs.pop("cls", None) polling: Union[bool, PollingMethod] = kwargs.pop("polling", True) lro_delay = kwargs.pop("polling_interval", self._config.polling_interval) cont_token: Optional[str] = kwargs.pop("continuation_token", None) if cont_token is None: - raw_result = self._reset_service_principal_profile_initial( + raw_result = self._stop_initial( resource_group_name=resource_group_name, resource_name=resource_name, - parameters=parameters, - content_type=content_type, cls=lambda x, y, z: x, headers=_headers, params=_params, @@ -5967,13 +5663,7 @@ def get_long_running_output(pipeline_response): # pylint: disable=inconsistent- ) return LROPoller[None](self._client, raw_result, get_long_running_output, polling_method) # type: ignore - def _reset_aad_profile_initial( - self, - resource_group_name: str, - resource_name: str, - parameters: Union[_models.ManagedClusterAADProfile, JSON, IO[bytes]], - **kwargs: Any - ) -> Iterator[bytes]: + def _start_initial(self, resource_group_name: str, resource_name: str, **kwargs: Any) -> Iterator[bytes]: error_map: MutableMapping = { 401: ClientAuthenticationError, 404: ResourceNotFoundError, @@ -5982,26 +5672,16 @@ def _reset_aad_profile_initial( } error_map.update(kwargs.pop("error_map", {}) or {}) - _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) + _headers = kwargs.pop("headers", {}) or {} _params = kwargs.pop("params", {}) or {} - content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) cls: ClsType[Iterator[bytes]] = kwargs.pop("cls", None) - content_type = content_type or "application/json" - _content = None - if isinstance(parameters, (IOBase, bytes)): - _content = parameters - else: - _content = json.dumps(parameters, cls=SdkJSONEncoder, exclude_readonly=True) # type: ignore - - _request = build_managed_clusters_reset_aad_profile_request( + _request = build_managed_clusters_start_request( resource_group_name=resource_group_name, resource_name=resource_name, subscription_id=self._config.subscription_id, - content_type=content_type, api_version=self._config.api_version, - content=_content, headers=_headers, params=_params, ) @@ -6018,7 +5698,7 @@ def _reset_aad_profile_initial( response = pipeline_response.http_response - if response.status_code not in [200, 202]: + if response.status_code not in [202, 204]: try: response.read() # Load the body in memory and close the socket except (StreamConsumedError, StreamClosedError): @@ -6042,139 +5722,278 @@ def _reset_aad_profile_initial( return deserialized # type: ignore - @overload - def begin_reset_aad_profile( - self, - resource_group_name: str, - resource_name: str, - parameters: _models.ManagedClusterAADProfile, - *, - content_type: str = "application/json", - **kwargs: Any - ) -> LROPoller[None]: - """Reset the AAD Profile of a managed cluster. + @distributed_trace + def begin_start(self, resource_group_name: str, resource_name: str, **kwargs: Any) -> LROPoller[None]: + """Starts a previously stopped Managed Cluster. - **WARNING**: This API will be deprecated. Please see `AKS-managed Azure Active Directory - integration `_ to update your cluster with AKS-managed Azure - AD. + See `starting a cluster `_ for more + details about starting a cluster. :param resource_group_name: The name of the resource group. The name is case insensitive. Required. :type resource_group_name: str :param resource_name: The name of the managed cluster resource. Required. :type resource_name: str - :param parameters: The AAD profile to set on the Managed Cluster. Required. - :type parameters: ~azure.mgmt.containerservice.models.ManagedClusterAADProfile - :keyword content_type: Body Parameter content-type. Content type parameter for JSON body. - Default value is "application/json". - :paramtype content_type: str :return: An instance of LROPoller that returns None :rtype: ~azure.core.polling.LROPoller[None] :raises ~azure.core.exceptions.HttpResponseError: """ + _headers = kwargs.pop("headers", {}) or {} + _params = kwargs.pop("params", {}) or {} - @overload - def begin_reset_aad_profile( - self, - resource_group_name: str, - resource_name: str, - parameters: JSON, - *, - content_type: str = "application/json", - **kwargs: Any - ) -> LROPoller[None]: - """Reset the AAD Profile of a managed cluster. + cls: ClsType[None] = kwargs.pop("cls", None) + polling: Union[bool, PollingMethod] = kwargs.pop("polling", True) + lro_delay = kwargs.pop("polling_interval", self._config.polling_interval) + cont_token: Optional[str] = kwargs.pop("continuation_token", None) + if cont_token is None: + raw_result = self._start_initial( + resource_group_name=resource_group_name, + resource_name=resource_name, + cls=lambda x, y, z: x, + headers=_headers, + params=_params, + **kwargs + ) + raw_result.http_response.read() # type: ignore + kwargs.pop("error_map", None) - **WARNING**: This API will be deprecated. Please see `AKS-managed Azure Active Directory - integration `_ to update your cluster with AKS-managed Azure - AD. + def get_long_running_output(pipeline_response): # pylint: disable=inconsistent-return-statements + if cls: + return cls(pipeline_response, None, {}) # type: ignore + + path_format_arguments = { + "endpoint": self._serialize.url("self._config.base_url", self._config.base_url, "str", skip_quote=True), + } + + if polling is True: + polling_method: PollingMethod = cast( + PollingMethod, ARMPolling(lro_delay, path_format_arguments=path_format_arguments, **kwargs) + ) + elif polling is False: + polling_method = cast(PollingMethod, NoPolling()) + else: + polling_method = polling + if cont_token: + return LROPoller[None].from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output, + ) + return LROPoller[None](self._client, raw_result, get_long_running_output, polling_method) # type: ignore + + def _run_command_initial( + self, + resource_group_name: str, + resource_name: str, + request_payload: Union[_models.RunCommandRequest, JSON, IO[bytes]], + **kwargs: Any + ) -> Iterator[bytes]: + error_map: MutableMapping = { + 401: ClientAuthenticationError, + 404: ResourceNotFoundError, + 409: ResourceExistsError, + 304: ResourceNotModifiedError, + } + error_map.update(kwargs.pop("error_map", {}) or {}) + + _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) + _params = kwargs.pop("params", {}) or {} + + content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) + cls: ClsType[Iterator[bytes]] = kwargs.pop("cls", None) + + content_type = content_type or "application/json" + _content = None + if isinstance(request_payload, (IOBase, bytes)): + _content = request_payload + else: + _content = json.dumps(request_payload, cls=SdkJSONEncoder, exclude_readonly=True) # type: ignore + + _request = build_managed_clusters_run_command_request( + resource_group_name=resource_group_name, + resource_name=resource_name, + subscription_id=self._config.subscription_id, + content_type=content_type, + api_version=self._config.api_version, + content=_content, + headers=_headers, + params=_params, + ) + path_format_arguments = { + "endpoint": self._serialize.url("self._config.base_url", self._config.base_url, "str", skip_quote=True), + } + _request.url = self._client.format_url(_request.url, **path_format_arguments) + + _decompress = kwargs.pop("decompress", True) + _stream = True + pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access + _request, stream=_stream, **kwargs + ) + + response = pipeline_response.http_response + + if response.status_code not in [200, 202]: + try: + response.read() # Load the body in memory and close the socket + except (StreamConsumedError, StreamClosedError): + pass + map_error(status_code=response.status_code, response=response, error_map=error_map) + error = _failsafe_deserialize( + _models.ErrorResponse, + response, + ) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + response_headers = {} + if response.status_code == 202: + response_headers["Location"] = self._deserialize("str", response.headers.get("Location")) + response_headers["Retry-After"] = self._deserialize("int", response.headers.get("Retry-After")) + + deserialized = response.iter_bytes() if _decompress else response.iter_raw() + + if cls: + return cls(pipeline_response, deserialized, response_headers) # type: ignore + + return deserialized # type: ignore + + @overload + def begin_run_command( + self, + resource_group_name: str, + resource_name: str, + request_payload: _models.RunCommandRequest, + *, + content_type: str = "application/json", + **kwargs: Any + ) -> LROPoller[_models.RunCommandResult]: + """Submits a command to run against the Managed Cluster. + + AKS will create a pod to run the command. This is primarily useful for private clusters. For + more information see `AKS Run Command + `_. :param resource_group_name: The name of the resource group. The name is case insensitive. Required. :type resource_group_name: str :param resource_name: The name of the managed cluster resource. Required. :type resource_name: str - :param parameters: The AAD profile to set on the Managed Cluster. Required. - :type parameters: JSON + :param request_payload: The run command request. Required. + :type request_payload: ~azure.mgmt.containerservice.models.RunCommandRequest :keyword content_type: Body Parameter content-type. Content type parameter for JSON body. Default value is "application/json". :paramtype content_type: str - :return: An instance of LROPoller that returns None - :rtype: ~azure.core.polling.LROPoller[None] + :return: An instance of LROPoller that returns RunCommandResult. The RunCommandResult is + compatible with MutableMapping + :rtype: ~azure.core.polling.LROPoller[~azure.mgmt.containerservice.models.RunCommandResult] :raises ~azure.core.exceptions.HttpResponseError: """ @overload - def begin_reset_aad_profile( + def begin_run_command( self, resource_group_name: str, resource_name: str, - parameters: IO[bytes], + request_payload: JSON, *, content_type: str = "application/json", **kwargs: Any - ) -> LROPoller[None]: - """Reset the AAD Profile of a managed cluster. + ) -> LROPoller[_models.RunCommandResult]: + """Submits a command to run against the Managed Cluster. - **WARNING**: This API will be deprecated. Please see `AKS-managed Azure Active Directory - integration `_ to update your cluster with AKS-managed Azure - AD. + AKS will create a pod to run the command. This is primarily useful for private clusters. For + more information see `AKS Run Command + `_. :param resource_group_name: The name of the resource group. The name is case insensitive. Required. :type resource_group_name: str :param resource_name: The name of the managed cluster resource. Required. :type resource_name: str - :param parameters: The AAD profile to set on the Managed Cluster. Required. - :type parameters: IO[bytes] + :param request_payload: The run command request. Required. + :type request_payload: JSON + :keyword content_type: Body Parameter content-type. Content type parameter for JSON body. + Default value is "application/json". + :paramtype content_type: str + :return: An instance of LROPoller that returns RunCommandResult. The RunCommandResult is + compatible with MutableMapping + :rtype: ~azure.core.polling.LROPoller[~azure.mgmt.containerservice.models.RunCommandResult] + :raises ~azure.core.exceptions.HttpResponseError: + """ + + @overload + def begin_run_command( + self, + resource_group_name: str, + resource_name: str, + request_payload: IO[bytes], + *, + content_type: str = "application/json", + **kwargs: Any + ) -> LROPoller[_models.RunCommandResult]: + """Submits a command to run against the Managed Cluster. + + AKS will create a pod to run the command. This is primarily useful for private clusters. For + more information see `AKS Run Command + `_. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param resource_name: The name of the managed cluster resource. Required. + :type resource_name: str + :param request_payload: The run command request. Required. + :type request_payload: IO[bytes] :keyword content_type: Body Parameter content-type. Content type parameter for binary body. Default value is "application/json". :paramtype content_type: str - :return: An instance of LROPoller that returns None - :rtype: ~azure.core.polling.LROPoller[None] + :return: An instance of LROPoller that returns RunCommandResult. The RunCommandResult is + compatible with MutableMapping + :rtype: ~azure.core.polling.LROPoller[~azure.mgmt.containerservice.models.RunCommandResult] :raises ~azure.core.exceptions.HttpResponseError: """ @distributed_trace - def begin_reset_aad_profile( + def begin_run_command( self, resource_group_name: str, resource_name: str, - parameters: Union[_models.ManagedClusterAADProfile, JSON, IO[bytes]], + request_payload: Union[_models.RunCommandRequest, JSON, IO[bytes]], **kwargs: Any - ) -> LROPoller[None]: - """Reset the AAD Profile of a managed cluster. + ) -> LROPoller[_models.RunCommandResult]: + """Submits a command to run against the Managed Cluster. - **WARNING**: This API will be deprecated. Please see `AKS-managed Azure Active Directory - integration `_ to update your cluster with AKS-managed Azure - AD. + AKS will create a pod to run the command. This is primarily useful for private clusters. For + more information see `AKS Run Command + `_. :param resource_group_name: The name of the resource group. The name is case insensitive. Required. :type resource_group_name: str :param resource_name: The name of the managed cluster resource. Required. :type resource_name: str - :param parameters: The AAD profile to set on the Managed Cluster. Is one of the following - types: ManagedClusterAADProfile, JSON, IO[bytes] Required. - :type parameters: ~azure.mgmt.containerservice.models.ManagedClusterAADProfile or JSON or + :param request_payload: The run command request. Is one of the following types: + RunCommandRequest, JSON, IO[bytes] Required. + :type request_payload: ~azure.mgmt.containerservice.models.RunCommandRequest or JSON or IO[bytes] - :return: An instance of LROPoller that returns None - :rtype: ~azure.core.polling.LROPoller[None] + :return: An instance of LROPoller that returns RunCommandResult. The RunCommandResult is + compatible with MutableMapping + :rtype: ~azure.core.polling.LROPoller[~azure.mgmt.containerservice.models.RunCommandResult] :raises ~azure.core.exceptions.HttpResponseError: """ _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) _params = kwargs.pop("params", {}) or {} content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) - cls: ClsType[None] = kwargs.pop("cls", None) + cls: ClsType[_models.RunCommandResult] = kwargs.pop("cls", None) polling: Union[bool, PollingMethod] = kwargs.pop("polling", True) lro_delay = kwargs.pop("polling_interval", self._config.polling_interval) cont_token: Optional[str] = kwargs.pop("continuation_token", None) if cont_token is None: - raw_result = self._reset_aad_profile_initial( + raw_result = self._run_command_initial( resource_group_name=resource_group_name, resource_name=resource_name, - parameters=parameters, + request_payload=request_payload, content_type=content_type, cls=lambda x, y, z: x, headers=_headers, @@ -6184,9 +6003,12 @@ def begin_reset_aad_profile( raw_result.http_response.read() # type: ignore kwargs.pop("error_map", None) - def get_long_running_output(pipeline_response): # pylint: disable=inconsistent-return-statements + def get_long_running_output(pipeline_response): + response = pipeline_response.http_response + deserialized = _deserialize(_models.RunCommandResult, response.json()) if cls: - return cls(pipeline_response, None, {}) # type: ignore + return cls(pipeline_response, deserialized, {}) # type: ignore + return deserialized path_format_arguments = { "endpoint": self._serialize.url("self._config.base_url", self._config.base_url, "str", skip_quote=True), @@ -6201,17 +6023,33 @@ def get_long_running_output(pipeline_response): # pylint: disable=inconsistent- else: polling_method = polling if cont_token: - return LROPoller[None].from_continuation_token( + return LROPoller[_models.RunCommandResult].from_continuation_token( polling_method=polling_method, continuation_token=cont_token, client=self._client, deserialization_callback=get_long_running_output, ) - return LROPoller[None](self._client, raw_result, get_long_running_output, polling_method) # type: ignore + return LROPoller[_models.RunCommandResult]( + self._client, raw_result, get_long_running_output, polling_method # type: ignore + ) - def _rotate_cluster_certificates_initial( - self, resource_group_name: str, resource_name: str, **kwargs: Any - ) -> Iterator[bytes]: + @distributed_trace + def get_command_result( + self, resource_group_name: str, resource_name: str, command_id: str, **kwargs: Any + ) -> Optional[_models.RunCommandResult]: + """Gets the results of a command which has been run on the Managed Cluster. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param resource_name: The name of the managed cluster resource. Required. + :type resource_name: str + :param command_id: Id of the command. Required. + :type command_id: str + :return: RunCommandResult or None. The RunCommandResult is compatible with MutableMapping + :rtype: ~azure.mgmt.containerservice.models.RunCommandResult or None + :raises ~azure.core.exceptions.HttpResponseError: + """ error_map: MutableMapping = { 401: ClientAuthenticationError, 404: ResourceNotFoundError, @@ -6223,11 +6061,12 @@ def _rotate_cluster_certificates_initial( _headers = kwargs.pop("headers", {}) or {} _params = kwargs.pop("params", {}) or {} - cls: ClsType[Iterator[bytes]] = kwargs.pop("cls", None) + cls: ClsType[Optional[_models.RunCommandResult]] = kwargs.pop("cls", None) - _request = build_managed_clusters_rotate_cluster_certificates_request( + _request = build_managed_clusters_get_command_result_request( resource_group_name=resource_group_name, resource_name=resource_name, + command_id=command_id, subscription_id=self._config.subscription_id, api_version=self._config.api_version, headers=_headers, @@ -6239,18 +6078,19 @@ def _rotate_cluster_certificates_initial( _request.url = self._client.format_url(_request.url, **path_format_arguments) _decompress = kwargs.pop("decompress", True) - _stream = True + _stream = kwargs.pop("stream", False) pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access _request, stream=_stream, **kwargs ) response = pipeline_response.http_response - if response.status_code not in [202, 204]: - try: - response.read() # Load the body in memory and close the socket - except (StreamConsumedError, StreamClosedError): - pass + if response.status_code not in [200, 202]: + if _stream: + try: + response.read() # Load the body in memory and close the socket + except (StreamConsumedError, StreamClosedError): + pass map_error(status_code=response.status_code, response=response, error_map=error_map) error = _failsafe_deserialize( _models.ErrorResponse, @@ -6258,12 +6098,16 @@ def _rotate_cluster_certificates_initial( ) raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + deserialized = None response_headers = {} - if response.status_code == 202: - response_headers["Location"] = self._deserialize("str", response.headers.get("Location")) - response_headers["Retry-After"] = self._deserialize("int", response.headers.get("Retry-After")) + if response.status_code == 200: + if _stream: + deserialized = response.iter_bytes() if _decompress else response.iter_raw() + else: + deserialized = _deserialize(_models.RunCommandResult, response.json()) - deserialized = response.iter_bytes() if _decompress else response.iter_raw() + if response.status_code == 202: + response_headers["location"] = self._deserialize("str", response.headers.get("location")) if cls: return cls(pipeline_response, deserialized, response_headers) # type: ignore @@ -6271,70 +6115,128 @@ def _rotate_cluster_certificates_initial( return deserialized # type: ignore @distributed_trace - def begin_rotate_cluster_certificates( + def list_outbound_network_dependencies_endpoints( # pylint: disable=name-too-long self, resource_group_name: str, resource_name: str, **kwargs: Any - ) -> LROPoller[None]: - """Rotates the certificates of a managed cluster. + ) -> ItemPaged["_models.OutboundEnvironmentEndpoint"]: + """Gets a list of egress endpoints (network endpoints of all outbound dependencies) in the + specified managed cluster. - See `Certificate rotation `_ for - more details about rotating managed cluster certificates. + Gets a list of egress endpoints (network endpoints of all outbound dependencies) in the + specified managed cluster. The operation returns properties of each egress endpoint. :param resource_group_name: The name of the resource group. The name is case insensitive. Required. :type resource_group_name: str :param resource_name: The name of the managed cluster resource. Required. :type resource_name: str - :return: An instance of LROPoller that returns None - :rtype: ~azure.core.polling.LROPoller[None] + :return: An iterator like instance of OutboundEnvironmentEndpoint + :rtype: + ~azure.core.paging.ItemPaged[~azure.mgmt.containerservice.models.OutboundEnvironmentEndpoint] :raises ~azure.core.exceptions.HttpResponseError: """ _headers = kwargs.pop("headers", {}) or {} _params = kwargs.pop("params", {}) or {} - cls: ClsType[None] = kwargs.pop("cls", None) - polling: Union[bool, PollingMethod] = kwargs.pop("polling", True) - lro_delay = kwargs.pop("polling_interval", self._config.polling_interval) - cont_token: Optional[str] = kwargs.pop("continuation_token", None) - if cont_token is None: - raw_result = self._rotate_cluster_certificates_initial( - resource_group_name=resource_group_name, - resource_name=resource_name, - cls=lambda x, y, z: x, - headers=_headers, - params=_params, - **kwargs - ) - raw_result.http_response.read() # type: ignore - kwargs.pop("error_map", None) - - def get_long_running_output(pipeline_response): # pylint: disable=inconsistent-return-statements - if cls: - return cls(pipeline_response, None, {}) # type: ignore + cls: ClsType[List[_models.OutboundEnvironmentEndpoint]] = kwargs.pop("cls", None) - path_format_arguments = { - "endpoint": self._serialize.url("self._config.base_url", self._config.base_url, "str", skip_quote=True), + error_map: MutableMapping = { + 401: ClientAuthenticationError, + 404: ResourceNotFoundError, + 409: ResourceExistsError, + 304: ResourceNotModifiedError, } + error_map.update(kwargs.pop("error_map", {}) or {}) - if polling is True: - polling_method: PollingMethod = cast( - PollingMethod, ARMPolling(lro_delay, path_format_arguments=path_format_arguments, **kwargs) + def prepare_request(next_link=None): + if not next_link: + + _request = build_managed_clusters_list_outbound_network_dependencies_endpoints_request( + resource_group_name=resource_group_name, + resource_name=resource_name, + subscription_id=self._config.subscription_id, + api_version=self._config.api_version, + headers=_headers, + params=_params, + ) + path_format_arguments = { + "endpoint": self._serialize.url( + "self._config.base_url", self._config.base_url, "str", skip_quote=True + ), + } + _request.url = self._client.format_url(_request.url, **path_format_arguments) + + else: + # make call to next link with the client's api-version + _parsed_next_link = urllib.parse.urlparse(next_link) + _next_request_params = case_insensitive_dict( + { + key: [urllib.parse.quote(v) for v in value] + for key, value in urllib.parse.parse_qs(_parsed_next_link.query).items() + } + ) + _next_request_params["api-version"] = self._config.api_version + _request = HttpRequest( + "GET", + urllib.parse.urljoin(next_link, _parsed_next_link.path), + headers=_headers, + params=_next_request_params, + ) + path_format_arguments = { + "endpoint": self._serialize.url( + "self._config.base_url", self._config.base_url, "str", skip_quote=True + ), + } + _request.url = self._client.format_url(_request.url, **path_format_arguments) + + return _request + + def extract_data(pipeline_response): + deserialized = pipeline_response.http_response.json() + list_of_elem = _deserialize( + List[_models.OutboundEnvironmentEndpoint], + deserialized.get("value", []), ) - elif polling is False: - polling_method = cast(PollingMethod, NoPolling()) - else: - polling_method = polling - if cont_token: - return LROPoller[None].from_continuation_token( - polling_method=polling_method, - continuation_token=cont_token, - client=self._client, - deserialization_callback=get_long_running_output, + if cls: + list_of_elem = cls(list_of_elem) # type: ignore + return deserialized.get("nextLink") or None, iter(list_of_elem) + + def get_next(next_link=None): + _request = prepare_request(next_link) + + _stream = False + pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access + _request, stream=_stream, **kwargs ) - return LROPoller[None](self._client, raw_result, get_long_running_output, polling_method) # type: ignore + response = pipeline_response.http_response - def _abort_latest_operation_initial( + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + error = _failsafe_deserialize( + _models.ErrorResponse, + response, + ) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + return pipeline_response + + return ItemPaged(get_next, extract_data) + + @distributed_trace + def get_upgrade_profile( self, resource_group_name: str, resource_name: str, **kwargs: Any - ) -> Iterator[bytes]: + ) -> _models.ManagedClusterUpgradeProfile: + """Gets the upgrade profile of a managed cluster. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param resource_name: The name of the managed cluster resource. Required. + :type resource_name: str + :return: ManagedClusterUpgradeProfile. The ManagedClusterUpgradeProfile is compatible with + MutableMapping + :rtype: ~azure.mgmt.containerservice.models.ManagedClusterUpgradeProfile + :raises ~azure.core.exceptions.HttpResponseError: + """ error_map: MutableMapping = { 401: ClientAuthenticationError, 404: ResourceNotFoundError, @@ -6346,9 +6248,9 @@ def _abort_latest_operation_initial( _headers = kwargs.pop("headers", {}) or {} _params = kwargs.pop("params", {}) or {} - cls: ClsType[Iterator[bytes]] = kwargs.pop("cls", None) + cls: ClsType[_models.ManagedClusterUpgradeProfile] = kwargs.pop("cls", None) - _request = build_managed_clusters_abort_latest_operation_request( + _request = build_managed_clusters_get_upgrade_profile_request( resource_group_name=resource_group_name, resource_name=resource_name, subscription_id=self._config.subscription_id, @@ -6362,18 +6264,19 @@ def _abort_latest_operation_initial( _request.url = self._client.format_url(_request.url, **path_format_arguments) _decompress = kwargs.pop("decompress", True) - _stream = True + _stream = kwargs.pop("stream", False) pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access _request, stream=_stream, **kwargs ) response = pipeline_response.http_response - if response.status_code not in [202, 204]: - try: - response.read() # Load the body in memory and close the socket - except (StreamConsumedError, StreamClosedError): - pass + if response.status_code not in [200]: + if _stream: + try: + response.read() # Load the body in memory and close the socket + except (StreamConsumedError, StreamClosedError): + pass map_error(status_code=response.status_code, response=response, error_map=error_map) error = _failsafe_deserialize( _models.ErrorResponse, @@ -6381,126 +6284,71 @@ def _abort_latest_operation_initial( ) raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - response_headers = {} - if response.status_code == 202: - response_headers["Azure-AsyncOperation"] = self._deserialize( - "str", response.headers.get("Azure-AsyncOperation") - ) - response_headers["Location"] = self._deserialize("str", response.headers.get("Location")) - response_headers["Retry-After"] = self._deserialize("int", response.headers.get("Retry-After")) - - deserialized = response.iter_bytes() if _decompress else response.iter_raw() + if _stream: + deserialized = response.iter_bytes() if _decompress else response.iter_raw() + else: + deserialized = _deserialize(_models.ManagedClusterUpgradeProfile, response.json()) if cls: - return cls(pipeline_response, deserialized, response_headers) # type: ignore + return cls(pipeline_response, deserialized, {}) # type: ignore return deserialized # type: ignore @distributed_trace - def begin_abort_latest_operation( - self, resource_group_name: str, resource_name: str, **kwargs: Any - ) -> LROPoller[None]: - """Aborts last operation running on managed cluster. + def get_mesh_revision_profile(self, location: str, mode: str, **kwargs: Any) -> _models.MeshRevisionProfile: + """Gets a mesh revision profile for a specified mesh in the specified location. - Aborts the currently running operation on the managed cluster. The Managed Cluster will be - moved to a Canceling state and eventually to a Canceled state when cancellation finishes. If - the operation completes before cancellation can take place, a 409 error code is returned. + Contains extra metadata on the revision, including supported revisions, cluster compatibility + and available upgrades. - :param resource_group_name: The name of the resource group. The name is case insensitive. - Required. - :type resource_group_name: str - :param resource_name: The name of the managed cluster resource. Required. - :type resource_name: str - :return: An instance of LROPoller that returns None - :rtype: ~azure.core.polling.LROPoller[None] + :param location: The name of the Azure region. Required. + :type location: str + :param mode: The mode of the mesh. Required. + :type mode: str + :return: MeshRevisionProfile. The MeshRevisionProfile is compatible with MutableMapping + :rtype: ~azure.mgmt.containerservice.models.MeshRevisionProfile :raises ~azure.core.exceptions.HttpResponseError: """ + error_map: MutableMapping = { + 401: ClientAuthenticationError, + 404: ResourceNotFoundError, + 409: ResourceExistsError, + 304: ResourceNotModifiedError, + } + error_map.update(kwargs.pop("error_map", {}) or {}) + _headers = kwargs.pop("headers", {}) or {} _params = kwargs.pop("params", {}) or {} - cls: ClsType[None] = kwargs.pop("cls", None) - polling: Union[bool, PollingMethod] = kwargs.pop("polling", True) - lro_delay = kwargs.pop("polling_interval", self._config.polling_interval) - cont_token: Optional[str] = kwargs.pop("continuation_token", None) - if cont_token is None: - raw_result = self._abort_latest_operation_initial( - resource_group_name=resource_group_name, - resource_name=resource_name, - cls=lambda x, y, z: x, - headers=_headers, - params=_params, - **kwargs - ) - raw_result.http_response.read() # type: ignore - kwargs.pop("error_map", None) - - def get_long_running_output(pipeline_response): # pylint: disable=inconsistent-return-statements - if cls: - return cls(pipeline_response, None, {}) # type: ignore + cls: ClsType[_models.MeshRevisionProfile] = kwargs.pop("cls", None) - path_format_arguments = { - "endpoint": self._serialize.url("self._config.base_url", self._config.base_url, "str", skip_quote=True), - } - - if polling is True: - polling_method: PollingMethod = cast( - PollingMethod, ARMPolling(lro_delay, path_format_arguments=path_format_arguments, **kwargs) - ) - elif polling is False: - polling_method = cast(PollingMethod, NoPolling()) - else: - polling_method = polling - if cont_token: - return LROPoller[None].from_continuation_token( - polling_method=polling_method, - continuation_token=cont_token, - client=self._client, - deserialization_callback=get_long_running_output, - ) - return LROPoller[None](self._client, raw_result, get_long_running_output, polling_method) # type: ignore - - def _rotate_service_account_signing_keys_initial( # pylint: disable=name-too-long - self, resource_group_name: str, resource_name: str, **kwargs: Any - ) -> Iterator[bytes]: - error_map: MutableMapping = { - 401: ClientAuthenticationError, - 404: ResourceNotFoundError, - 409: ResourceExistsError, - 304: ResourceNotModifiedError, - } - error_map.update(kwargs.pop("error_map", {}) or {}) - - _headers = kwargs.pop("headers", {}) or {} - _params = kwargs.pop("params", {}) or {} - - cls: ClsType[Iterator[bytes]] = kwargs.pop("cls", None) - - _request = build_managed_clusters_rotate_service_account_signing_keys_request( - resource_group_name=resource_group_name, - resource_name=resource_name, - subscription_id=self._config.subscription_id, - api_version=self._config.api_version, - headers=_headers, - params=_params, - ) + _request = build_managed_clusters_get_mesh_revision_profile_request( + location=location, + mode=mode, + subscription_id=self._config.subscription_id, + api_version=self._config.api_version, + headers=_headers, + params=_params, + ) path_format_arguments = { "endpoint": self._serialize.url("self._config.base_url", self._config.base_url, "str", skip_quote=True), } _request.url = self._client.format_url(_request.url, **path_format_arguments) _decompress = kwargs.pop("decompress", True) - _stream = True + _stream = kwargs.pop("stream", False) pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access _request, stream=_stream, **kwargs ) response = pipeline_response.http_response - if response.status_code not in [202, 204]: - try: - response.read() # Load the body in memory and close the socket - except (StreamConsumedError, StreamClosedError): - pass + if response.status_code not in [200]: + if _stream: + try: + response.read() # Load the body in memory and close the socket + except (StreamConsumedError, StreamClosedError): + pass map_error(status_code=response.status_code, response=response, error_map=error_map) error = _failsafe_deserialize( _models.ErrorResponse, @@ -6508,78 +6356,132 @@ def _rotate_service_account_signing_keys_initial( # pylint: disable=name-too-lo ) raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - response_headers = {} - if response.status_code == 202: - response_headers["Location"] = self._deserialize("str", response.headers.get("Location")) - response_headers["Retry-After"] = self._deserialize("int", response.headers.get("Retry-After")) - - deserialized = response.iter_bytes() if _decompress else response.iter_raw() + if _stream: + deserialized = response.iter_bytes() if _decompress else response.iter_raw() + else: + deserialized = _deserialize(_models.MeshRevisionProfile, response.json()) if cls: - return cls(pipeline_response, deserialized, response_headers) # type: ignore + return cls(pipeline_response, deserialized, {}) # type: ignore return deserialized # type: ignore @distributed_trace - def begin_rotate_service_account_signing_keys( # pylint: disable=name-too-long - self, resource_group_name: str, resource_name: str, **kwargs: Any - ) -> LROPoller[None]: - """Rotates the service account signing keys of a managed cluster. + def list_mesh_revision_profiles(self, location: str, **kwargs: Any) -> ItemPaged["_models.MeshRevisionProfile"]: + """Lists mesh revision profiles for all meshes in the specified location. - :param resource_group_name: The name of the resource group. The name is case insensitive. - Required. - :type resource_group_name: str - :param resource_name: The name of the managed cluster resource. Required. - :type resource_name: str - :return: An instance of LROPoller that returns None - :rtype: ~azure.core.polling.LROPoller[None] + Contains extra metadata on each revision, including supported revisions, cluster compatibility + and available upgrades. + + :param location: The name of the Azure region. Required. + :type location: str + :return: An iterator like instance of MeshRevisionProfile + :rtype: ~azure.core.paging.ItemPaged[~azure.mgmt.containerservice.models.MeshRevisionProfile] :raises ~azure.core.exceptions.HttpResponseError: """ _headers = kwargs.pop("headers", {}) or {} _params = kwargs.pop("params", {}) or {} - cls: ClsType[None] = kwargs.pop("cls", None) - polling: Union[bool, PollingMethod] = kwargs.pop("polling", True) - lro_delay = kwargs.pop("polling_interval", self._config.polling_interval) - cont_token: Optional[str] = kwargs.pop("continuation_token", None) - if cont_token is None: - raw_result = self._rotate_service_account_signing_keys_initial( - resource_group_name=resource_group_name, - resource_name=resource_name, - cls=lambda x, y, z: x, - headers=_headers, - params=_params, - **kwargs - ) - raw_result.http_response.read() # type: ignore - kwargs.pop("error_map", None) - - def get_long_running_output(pipeline_response): # pylint: disable=inconsistent-return-statements - if cls: - return cls(pipeline_response, None, {}) # type: ignore + cls: ClsType[List[_models.MeshRevisionProfile]] = kwargs.pop("cls", None) - path_format_arguments = { - "endpoint": self._serialize.url("self._config.base_url", self._config.base_url, "str", skip_quote=True), + error_map: MutableMapping = { + 401: ClientAuthenticationError, + 404: ResourceNotFoundError, + 409: ResourceExistsError, + 304: ResourceNotModifiedError, } + error_map.update(kwargs.pop("error_map", {}) or {}) - if polling is True: - polling_method: PollingMethod = cast( - PollingMethod, ARMPolling(lro_delay, path_format_arguments=path_format_arguments, **kwargs) + def prepare_request(next_link=None): + if not next_link: + + _request = build_managed_clusters_list_mesh_revision_profiles_request( + location=location, + subscription_id=self._config.subscription_id, + api_version=self._config.api_version, + headers=_headers, + params=_params, + ) + path_format_arguments = { + "endpoint": self._serialize.url( + "self._config.base_url", self._config.base_url, "str", skip_quote=True + ), + } + _request.url = self._client.format_url(_request.url, **path_format_arguments) + + else: + # make call to next link with the client's api-version + _parsed_next_link = urllib.parse.urlparse(next_link) + _next_request_params = case_insensitive_dict( + { + key: [urllib.parse.quote(v) for v in value] + for key, value in urllib.parse.parse_qs(_parsed_next_link.query).items() + } + ) + _next_request_params["api-version"] = self._config.api_version + _request = HttpRequest( + "GET", + urllib.parse.urljoin(next_link, _parsed_next_link.path), + headers=_headers, + params=_next_request_params, + ) + path_format_arguments = { + "endpoint": self._serialize.url( + "self._config.base_url", self._config.base_url, "str", skip_quote=True + ), + } + _request.url = self._client.format_url(_request.url, **path_format_arguments) + + return _request + + def extract_data(pipeline_response): + deserialized = pipeline_response.http_response.json() + list_of_elem = _deserialize( + List[_models.MeshRevisionProfile], + deserialized.get("value", []), ) - elif polling is False: - polling_method = cast(PollingMethod, NoPolling()) - else: - polling_method = polling - if cont_token: - return LROPoller[None].from_continuation_token( - polling_method=polling_method, - continuation_token=cont_token, - client=self._client, - deserialization_callback=get_long_running_output, + if cls: + list_of_elem = cls(list_of_elem) # type: ignore + return deserialized.get("nextLink") or None, iter(list_of_elem) + + def get_next(next_link=None): + _request = prepare_request(next_link) + + _stream = False + pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access + _request, stream=_stream, **kwargs ) - return LROPoller[None](self._client, raw_result, get_long_running_output, polling_method) # type: ignore + response = pipeline_response.http_response - def _stop_initial(self, resource_group_name: str, resource_name: str, **kwargs: Any) -> Iterator[bytes]: + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + error = _failsafe_deserialize( + _models.ErrorResponse, + response, + ) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + return pipeline_response + + return ItemPaged(get_next, extract_data) + + @distributed_trace + def get_mesh_upgrade_profile( + self, resource_group_name: str, resource_name: str, mode: str, **kwargs: Any + ) -> _models.MeshUpgradeProfile: + """Gets available upgrades for a service mesh in a cluster. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param resource_name: The name of the managed cluster resource. Required. + :type resource_name: str + :param mode: The mode of the mesh. Required. + :type mode: str + :return: MeshUpgradeProfile. The MeshUpgradeProfile is compatible with MutableMapping + :rtype: ~azure.mgmt.containerservice.models.MeshUpgradeProfile + :raises ~azure.core.exceptions.HttpResponseError: + """ error_map: MutableMapping = { 401: ClientAuthenticationError, 404: ResourceNotFoundError, @@ -6591,11 +6493,12 @@ def _stop_initial(self, resource_group_name: str, resource_name: str, **kwargs: _headers = kwargs.pop("headers", {}) or {} _params = kwargs.pop("params", {}) or {} - cls: ClsType[Iterator[bytes]] = kwargs.pop("cls", None) + cls: ClsType[_models.MeshUpgradeProfile] = kwargs.pop("cls", None) - _request = build_managed_clusters_stop_request( + _request = build_managed_clusters_get_mesh_upgrade_profile_request( resource_group_name=resource_group_name, resource_name=resource_name, + mode=mode, subscription_id=self._config.subscription_id, api_version=self._config.api_version, headers=_headers, @@ -6607,18 +6510,19 @@ def _stop_initial(self, resource_group_name: str, resource_name: str, **kwargs: _request.url = self._client.format_url(_request.url, **path_format_arguments) _decompress = kwargs.pop("decompress", True) - _stream = True + _stream = kwargs.pop("stream", False) pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access _request, stream=_stream, **kwargs ) response = pipeline_response.http_response - if response.status_code not in [202, 204]: - try: - response.read() # Load the body in memory and close the socket - except (StreamConsumedError, StreamClosedError): - pass + if response.status_code not in [200]: + if _stream: + try: + response.read() # Load the body in memory and close the socket + except (StreamConsumedError, StreamClosedError): + pass map_error(status_code=response.status_code, response=response, error_map=error_map) error = _failsafe_deserialize( _models.ErrorResponse, @@ -6626,82 +6530,132 @@ def _stop_initial(self, resource_group_name: str, resource_name: str, **kwargs: ) raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - response_headers = {} - if response.status_code == 202: - response_headers["Location"] = self._deserialize("str", response.headers.get("Location")) - response_headers["Retry-After"] = self._deserialize("int", response.headers.get("Retry-After")) - - deserialized = response.iter_bytes() if _decompress else response.iter_raw() + if _stream: + deserialized = response.iter_bytes() if _decompress else response.iter_raw() + else: + deserialized = _deserialize(_models.MeshUpgradeProfile, response.json()) if cls: - return cls(pipeline_response, deserialized, response_headers) # type: ignore + return cls(pipeline_response, deserialized, {}) # type: ignore return deserialized # type: ignore @distributed_trace - def begin_stop(self, resource_group_name: str, resource_name: str, **kwargs: Any) -> LROPoller[None]: - """Stops a Managed Cluster. - - This can only be performed on Azure Virtual Machine Scale set backed clusters. Stopping a - cluster stops the control plane and agent nodes entirely, while maintaining all object and - cluster state. A cluster does not accrue charges while it is stopped. See `stopping a cluster - `_ for more details about stopping a - cluster. + def list_mesh_upgrade_profiles( + self, resource_group_name: str, resource_name: str, **kwargs: Any + ) -> ItemPaged["_models.MeshUpgradeProfile"]: + """Lists available upgrades for all service meshes in a specific cluster. :param resource_group_name: The name of the resource group. The name is case insensitive. Required. :type resource_group_name: str :param resource_name: The name of the managed cluster resource. Required. :type resource_name: str - :return: An instance of LROPoller that returns None - :rtype: ~azure.core.polling.LROPoller[None] + :return: An iterator like instance of MeshUpgradeProfile + :rtype: ~azure.core.paging.ItemPaged[~azure.mgmt.containerservice.models.MeshUpgradeProfile] :raises ~azure.core.exceptions.HttpResponseError: """ _headers = kwargs.pop("headers", {}) or {} _params = kwargs.pop("params", {}) or {} - cls: ClsType[None] = kwargs.pop("cls", None) - polling: Union[bool, PollingMethod] = kwargs.pop("polling", True) - lro_delay = kwargs.pop("polling_interval", self._config.polling_interval) - cont_token: Optional[str] = kwargs.pop("continuation_token", None) - if cont_token is None: - raw_result = self._stop_initial( - resource_group_name=resource_group_name, - resource_name=resource_name, - cls=lambda x, y, z: x, - headers=_headers, - params=_params, - **kwargs - ) - raw_result.http_response.read() # type: ignore - kwargs.pop("error_map", None) - - def get_long_running_output(pipeline_response): # pylint: disable=inconsistent-return-statements - if cls: - return cls(pipeline_response, None, {}) # type: ignore + cls: ClsType[List[_models.MeshUpgradeProfile]] = kwargs.pop("cls", None) - path_format_arguments = { - "endpoint": self._serialize.url("self._config.base_url", self._config.base_url, "str", skip_quote=True), + error_map: MutableMapping = { + 401: ClientAuthenticationError, + 404: ResourceNotFoundError, + 409: ResourceExistsError, + 304: ResourceNotModifiedError, } + error_map.update(kwargs.pop("error_map", {}) or {}) - if polling is True: - polling_method: PollingMethod = cast( - PollingMethod, ARMPolling(lro_delay, path_format_arguments=path_format_arguments, **kwargs) + def prepare_request(next_link=None): + if not next_link: + + _request = build_managed_clusters_list_mesh_upgrade_profiles_request( + resource_group_name=resource_group_name, + resource_name=resource_name, + subscription_id=self._config.subscription_id, + api_version=self._config.api_version, + headers=_headers, + params=_params, + ) + path_format_arguments = { + "endpoint": self._serialize.url( + "self._config.base_url", self._config.base_url, "str", skip_quote=True + ), + } + _request.url = self._client.format_url(_request.url, **path_format_arguments) + + else: + # make call to next link with the client's api-version + _parsed_next_link = urllib.parse.urlparse(next_link) + _next_request_params = case_insensitive_dict( + { + key: [urllib.parse.quote(v) for v in value] + for key, value in urllib.parse.parse_qs(_parsed_next_link.query).items() + } + ) + _next_request_params["api-version"] = self._config.api_version + _request = HttpRequest( + "GET", + urllib.parse.urljoin(next_link, _parsed_next_link.path), + headers=_headers, + params=_next_request_params, + ) + path_format_arguments = { + "endpoint": self._serialize.url( + "self._config.base_url", self._config.base_url, "str", skip_quote=True + ), + } + _request.url = self._client.format_url(_request.url, **path_format_arguments) + + return _request + + def extract_data(pipeline_response): + deserialized = pipeline_response.http_response.json() + list_of_elem = _deserialize( + List[_models.MeshUpgradeProfile], + deserialized.get("value", []), ) - elif polling is False: - polling_method = cast(PollingMethod, NoPolling()) - else: - polling_method = polling - if cont_token: - return LROPoller[None].from_continuation_token( - polling_method=polling_method, - continuation_token=cont_token, - client=self._client, - deserialization_callback=get_long_running_output, + if cls: + list_of_elem = cls(list_of_elem) # type: ignore + return deserialized.get("nextLink") or None, iter(list_of_elem) + + def get_next(next_link=None): + _request = prepare_request(next_link) + + _stream = False + pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access + _request, stream=_stream, **kwargs ) - return LROPoller[None](self._client, raw_result, get_long_running_output, polling_method) # type: ignore + response = pipeline_response.http_response - def _start_initial(self, resource_group_name: str, resource_name: str, **kwargs: Any) -> Iterator[bytes]: + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + error = _failsafe_deserialize( + _models.ErrorResponse, + response, + ) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + return pipeline_response + + return ItemPaged(get_next, extract_data) + + @distributed_trace + def list_kubernetes_versions(self, location: str, **kwargs: Any) -> _models.KubernetesVersionListResult: + """Gets a list of supported Kubernetes versions in the specified subscription. + + Contains extra metadata on the version, including supported patch versions, capabilities, + available upgrades, and details on preview status of the version. + + :param location: The name of the Azure region. Required. + :type location: str + :return: KubernetesVersionListResult. The KubernetesVersionListResult is compatible with + MutableMapping + :rtype: ~azure.mgmt.containerservice.models.KubernetesVersionListResult + :raises ~azure.core.exceptions.HttpResponseError: + """ error_map: MutableMapping = { 401: ClientAuthenticationError, 404: ResourceNotFoundError, @@ -6713,11 +6667,10 @@ def _start_initial(self, resource_group_name: str, resource_name: str, **kwargs: _headers = kwargs.pop("headers", {}) or {} _params = kwargs.pop("params", {}) or {} - cls: ClsType[Iterator[bytes]] = kwargs.pop("cls", None) + cls: ClsType[_models.KubernetesVersionListResult] = kwargs.pop("cls", None) - _request = build_managed_clusters_start_request( - resource_group_name=resource_group_name, - resource_name=resource_name, + _request = build_managed_clusters_list_kubernetes_versions_request( + location=location, subscription_id=self._config.subscription_id, api_version=self._config.api_version, headers=_headers, @@ -6729,18 +6682,19 @@ def _start_initial(self, resource_group_name: str, resource_name: str, **kwargs: _request.url = self._client.format_url(_request.url, **path_format_arguments) _decompress = kwargs.pop("decompress", True) - _stream = True + _stream = kwargs.pop("stream", False) pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access _request, stream=_stream, **kwargs ) response = pipeline_response.http_response - if response.status_code not in [202, 204]: - try: - response.read() # Load the body in memory and close the socket - except (StreamConsumedError, StreamClosedError): - pass + if response.status_code not in [200]: + if _stream: + try: + response.read() # Load the body in memory and close the socket + except (StreamConsumedError, StreamClosedError): + pass map_error(status_code=response.status_code, response=response, error_map=error_map) error = _failsafe_deserialize( _models.ErrorResponse, @@ -6748,85 +6702,53 @@ def _start_initial(self, resource_group_name: str, resource_name: str, **kwargs: ) raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - response_headers = {} - if response.status_code == 202: - response_headers["Location"] = self._deserialize("str", response.headers.get("Location")) - response_headers["Retry-After"] = self._deserialize("int", response.headers.get("Retry-After")) - - deserialized = response.iter_bytes() if _decompress else response.iter_raw() + if _stream: + deserialized = response.iter_bytes() if _decompress else response.iter_raw() + else: + deserialized = _deserialize(_models.KubernetesVersionListResult, response.json()) if cls: - return cls(pipeline_response, deserialized, response_headers) # type: ignore + return cls(pipeline_response, deserialized, {}) # type: ignore return deserialized # type: ignore - @distributed_trace - def begin_start(self, resource_group_name: str, resource_name: str, **kwargs: Any) -> LROPoller[None]: - """Starts a previously stopped Managed Cluster. - See `starting a cluster `_ for more - details about starting a cluster. +class MaintenanceConfigurationsOperations: + """ + .. warning:: + **DO NOT** instantiate this class directly. + + Instead, you should access the following operations through + :class:`~azure.mgmt.containerservice.ContainerServiceClient`'s + :attr:`maintenance_configurations` attribute. + """ + + def __init__(self, *args, **kwargs) -> None: + input_args = list(args) + self._client: PipelineClient = input_args.pop(0) if input_args else kwargs.pop("client") + self._config: ContainerServiceClientConfiguration = input_args.pop(0) if input_args else kwargs.pop("config") + self._serialize: Serializer = input_args.pop(0) if input_args else kwargs.pop("serializer") + self._deserialize: Deserializer = input_args.pop(0) if input_args else kwargs.pop("deserializer") + + @distributed_trace + def get( + self, resource_group_name: str, resource_name: str, config_name: str, **kwargs: Any + ) -> _models.MaintenanceConfiguration: + """Gets the specified maintenance configuration of a managed cluster. :param resource_group_name: The name of the resource group. The name is case insensitive. Required. :type resource_group_name: str :param resource_name: The name of the managed cluster resource. Required. :type resource_name: str - :return: An instance of LROPoller that returns None - :rtype: ~azure.core.polling.LROPoller[None] + :param config_name: The name of the maintenance configuration. Supported values are 'default', + 'aksManagedAutoUpgradeSchedule', or 'aksManagedNodeOSUpgradeSchedule'. Required. + :type config_name: str + :return: MaintenanceConfiguration. The MaintenanceConfiguration is compatible with + MutableMapping + :rtype: ~azure.mgmt.containerservice.models.MaintenanceConfiguration :raises ~azure.core.exceptions.HttpResponseError: """ - _headers = kwargs.pop("headers", {}) or {} - _params = kwargs.pop("params", {}) or {} - - cls: ClsType[None] = kwargs.pop("cls", None) - polling: Union[bool, PollingMethod] = kwargs.pop("polling", True) - lro_delay = kwargs.pop("polling_interval", self._config.polling_interval) - cont_token: Optional[str] = kwargs.pop("continuation_token", None) - if cont_token is None: - raw_result = self._start_initial( - resource_group_name=resource_group_name, - resource_name=resource_name, - cls=lambda x, y, z: x, - headers=_headers, - params=_params, - **kwargs - ) - raw_result.http_response.read() # type: ignore - kwargs.pop("error_map", None) - - def get_long_running_output(pipeline_response): # pylint: disable=inconsistent-return-statements - if cls: - return cls(pipeline_response, None, {}) # type: ignore - - path_format_arguments = { - "endpoint": self._serialize.url("self._config.base_url", self._config.base_url, "str", skip_quote=True), - } - - if polling is True: - polling_method: PollingMethod = cast( - PollingMethod, ARMPolling(lro_delay, path_format_arguments=path_format_arguments, **kwargs) - ) - elif polling is False: - polling_method = cast(PollingMethod, NoPolling()) - else: - polling_method = polling - if cont_token: - return LROPoller[None].from_continuation_token( - polling_method=polling_method, - continuation_token=cont_token, - client=self._client, - deserialization_callback=get_long_running_output, - ) - return LROPoller[None](self._client, raw_result, get_long_running_output, polling_method) # type: ignore - - def _run_command_initial( - self, - resource_group_name: str, - resource_name: str, - request_payload: Union[_models.RunCommandRequest, JSON, IO[bytes]], - **kwargs: Any - ) -> Iterator[bytes]: error_map: MutableMapping = { 401: ClientAuthenticationError, 404: ResourceNotFoundError, @@ -6835,26 +6757,17 @@ def _run_command_initial( } error_map.update(kwargs.pop("error_map", {}) or {}) - _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) + _headers = kwargs.pop("headers", {}) or {} _params = kwargs.pop("params", {}) or {} - content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) - cls: ClsType[Iterator[bytes]] = kwargs.pop("cls", None) - - content_type = content_type or "application/json" - _content = None - if isinstance(request_payload, (IOBase, bytes)): - _content = request_payload - else: - _content = json.dumps(request_payload, cls=SdkJSONEncoder, exclude_readonly=True) # type: ignore + cls: ClsType[_models.MaintenanceConfiguration] = kwargs.pop("cls", None) - _request = build_managed_clusters_run_command_request( + _request = build_maintenance_configurations_get_request( resource_group_name=resource_group_name, resource_name=resource_name, + config_name=config_name, subscription_id=self._config.subscription_id, - content_type=content_type, api_version=self._config.api_version, - content=_content, headers=_headers, params=_params, ) @@ -6864,18 +6777,19 @@ def _run_command_initial( _request.url = self._client.format_url(_request.url, **path_format_arguments) _decompress = kwargs.pop("decompress", True) - _stream = True + _stream = kwargs.pop("stream", False) pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access _request, stream=_stream, **kwargs ) response = pipeline_response.http_response - if response.status_code not in [200, 202]: - try: - response.read() # Load the body in memory and close the socket - except (StreamConsumedError, StreamClosedError): - pass + if response.status_code not in [200]: + if _stream: + try: + response.read() # Load the body in memory and close the socket + except (StreamConsumedError, StreamClosedError): + pass map_error(status_code=response.status_code, response=response, error_map=error_map) error = _failsafe_deserialize( _models.ErrorResponse, @@ -6883,209 +6797,138 @@ def _run_command_initial( ) raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - response_headers = {} - if response.status_code == 202: - response_headers["Location"] = self._deserialize("str", response.headers.get("Location")) - response_headers["Retry-After"] = self._deserialize("int", response.headers.get("Retry-After")) - - deserialized = response.iter_bytes() if _decompress else response.iter_raw() + if _stream: + deserialized = response.iter_bytes() if _decompress else response.iter_raw() + else: + deserialized = _deserialize(_models.MaintenanceConfiguration, response.json()) if cls: - return cls(pipeline_response, deserialized, response_headers) # type: ignore + return cls(pipeline_response, deserialized, {}) # type: ignore return deserialized # type: ignore @overload - def begin_run_command( + def create_or_update( self, resource_group_name: str, resource_name: str, - request_payload: _models.RunCommandRequest, + config_name: str, + parameters: _models.MaintenanceConfiguration, *, content_type: str = "application/json", **kwargs: Any - ) -> LROPoller[_models.RunCommandResult]: - """Submits a command to run against the Managed Cluster. - - AKS will create a pod to run the command. This is primarily useful for private clusters. For - more information see `AKS Run Command - `_. + ) -> _models.MaintenanceConfiguration: + """Creates or updates a maintenance configuration in the specified managed cluster. :param resource_group_name: The name of the resource group. The name is case insensitive. Required. :type resource_group_name: str :param resource_name: The name of the managed cluster resource. Required. :type resource_name: str - :param request_payload: The run command request. Required. - :type request_payload: ~azure.mgmt.containerservice.models.RunCommandRequest + :param config_name: The name of the maintenance configuration. Supported values are 'default', + 'aksManagedAutoUpgradeSchedule', or 'aksManagedNodeOSUpgradeSchedule'. Required. + :type config_name: str + :param parameters: The maintenance configuration to create or update. Required. + :type parameters: ~azure.mgmt.containerservice.models.MaintenanceConfiguration :keyword content_type: Body Parameter content-type. Content type parameter for JSON body. Default value is "application/json". :paramtype content_type: str - :return: An instance of LROPoller that returns RunCommandResult. The RunCommandResult is - compatible with MutableMapping - :rtype: ~azure.core.polling.LROPoller[~azure.mgmt.containerservice.models.RunCommandResult] + :return: MaintenanceConfiguration. The MaintenanceConfiguration is compatible with + MutableMapping + :rtype: ~azure.mgmt.containerservice.models.MaintenanceConfiguration :raises ~azure.core.exceptions.HttpResponseError: """ @overload - def begin_run_command( + def create_or_update( self, resource_group_name: str, resource_name: str, - request_payload: JSON, + config_name: str, + parameters: JSON, *, content_type: str = "application/json", **kwargs: Any - ) -> LROPoller[_models.RunCommandResult]: - """Submits a command to run against the Managed Cluster. - - AKS will create a pod to run the command. This is primarily useful for private clusters. For - more information see `AKS Run Command - `_. + ) -> _models.MaintenanceConfiguration: + """Creates or updates a maintenance configuration in the specified managed cluster. :param resource_group_name: The name of the resource group. The name is case insensitive. Required. :type resource_group_name: str :param resource_name: The name of the managed cluster resource. Required. :type resource_name: str - :param request_payload: The run command request. Required. - :type request_payload: JSON + :param config_name: The name of the maintenance configuration. Supported values are 'default', + 'aksManagedAutoUpgradeSchedule', or 'aksManagedNodeOSUpgradeSchedule'. Required. + :type config_name: str + :param parameters: The maintenance configuration to create or update. Required. + :type parameters: JSON :keyword content_type: Body Parameter content-type. Content type parameter for JSON body. Default value is "application/json". :paramtype content_type: str - :return: An instance of LROPoller that returns RunCommandResult. The RunCommandResult is - compatible with MutableMapping - :rtype: ~azure.core.polling.LROPoller[~azure.mgmt.containerservice.models.RunCommandResult] + :return: MaintenanceConfiguration. The MaintenanceConfiguration is compatible with + MutableMapping + :rtype: ~azure.mgmt.containerservice.models.MaintenanceConfiguration :raises ~azure.core.exceptions.HttpResponseError: """ @overload - def begin_run_command( + def create_or_update( self, resource_group_name: str, resource_name: str, - request_payload: IO[bytes], + config_name: str, + parameters: IO[bytes], *, content_type: str = "application/json", **kwargs: Any - ) -> LROPoller[_models.RunCommandResult]: - """Submits a command to run against the Managed Cluster. - - AKS will create a pod to run the command. This is primarily useful for private clusters. For - more information see `AKS Run Command - `_. + ) -> _models.MaintenanceConfiguration: + """Creates or updates a maintenance configuration in the specified managed cluster. :param resource_group_name: The name of the resource group. The name is case insensitive. Required. :type resource_group_name: str :param resource_name: The name of the managed cluster resource. Required. :type resource_name: str - :param request_payload: The run command request. Required. - :type request_payload: IO[bytes] + :param config_name: The name of the maintenance configuration. Supported values are 'default', + 'aksManagedAutoUpgradeSchedule', or 'aksManagedNodeOSUpgradeSchedule'. Required. + :type config_name: str + :param parameters: The maintenance configuration to create or update. Required. + :type parameters: IO[bytes] :keyword content_type: Body Parameter content-type. Content type parameter for binary body. Default value is "application/json". :paramtype content_type: str - :return: An instance of LROPoller that returns RunCommandResult. The RunCommandResult is - compatible with MutableMapping - :rtype: ~azure.core.polling.LROPoller[~azure.mgmt.containerservice.models.RunCommandResult] + :return: MaintenanceConfiguration. The MaintenanceConfiguration is compatible with + MutableMapping + :rtype: ~azure.mgmt.containerservice.models.MaintenanceConfiguration :raises ~azure.core.exceptions.HttpResponseError: """ @distributed_trace - def begin_run_command( + def create_or_update( self, resource_group_name: str, resource_name: str, - request_payload: Union[_models.RunCommandRequest, JSON, IO[bytes]], + config_name: str, + parameters: Union[_models.MaintenanceConfiguration, JSON, IO[bytes]], **kwargs: Any - ) -> LROPoller[_models.RunCommandResult]: - """Submits a command to run against the Managed Cluster. - - AKS will create a pod to run the command. This is primarily useful for private clusters. For - more information see `AKS Run Command - `_. + ) -> _models.MaintenanceConfiguration: + """Creates or updates a maintenance configuration in the specified managed cluster. :param resource_group_name: The name of the resource group. The name is case insensitive. Required. :type resource_group_name: str :param resource_name: The name of the managed cluster resource. Required. :type resource_name: str - :param request_payload: The run command request. Is one of the following types: - RunCommandRequest, JSON, IO[bytes] Required. - :type request_payload: ~azure.mgmt.containerservice.models.RunCommandRequest or JSON or + :param config_name: The name of the maintenance configuration. Supported values are 'default', + 'aksManagedAutoUpgradeSchedule', or 'aksManagedNodeOSUpgradeSchedule'. Required. + :type config_name: str + :param parameters: The maintenance configuration to create or update. Is one of the following + types: MaintenanceConfiguration, JSON, IO[bytes] Required. + :type parameters: ~azure.mgmt.containerservice.models.MaintenanceConfiguration or JSON or IO[bytes] - :return: An instance of LROPoller that returns RunCommandResult. The RunCommandResult is - compatible with MutableMapping - :rtype: ~azure.core.polling.LROPoller[~azure.mgmt.containerservice.models.RunCommandResult] - :raises ~azure.core.exceptions.HttpResponseError: - """ - _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) - _params = kwargs.pop("params", {}) or {} - - content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) - cls: ClsType[_models.RunCommandResult] = kwargs.pop("cls", None) - polling: Union[bool, PollingMethod] = kwargs.pop("polling", True) - lro_delay = kwargs.pop("polling_interval", self._config.polling_interval) - cont_token: Optional[str] = kwargs.pop("continuation_token", None) - if cont_token is None: - raw_result = self._run_command_initial( - resource_group_name=resource_group_name, - resource_name=resource_name, - request_payload=request_payload, - content_type=content_type, - cls=lambda x, y, z: x, - headers=_headers, - params=_params, - **kwargs - ) - raw_result.http_response.read() # type: ignore - kwargs.pop("error_map", None) - - def get_long_running_output(pipeline_response): - response = pipeline_response.http_response - deserialized = _deserialize(_models.RunCommandResult, response.json()) - if cls: - return cls(pipeline_response, deserialized, {}) # type: ignore - return deserialized - - path_format_arguments = { - "endpoint": self._serialize.url("self._config.base_url", self._config.base_url, "str", skip_quote=True), - } - - if polling is True: - polling_method: PollingMethod = cast( - PollingMethod, ARMPolling(lro_delay, path_format_arguments=path_format_arguments, **kwargs) - ) - elif polling is False: - polling_method = cast(PollingMethod, NoPolling()) - else: - polling_method = polling - if cont_token: - return LROPoller[_models.RunCommandResult].from_continuation_token( - polling_method=polling_method, - continuation_token=cont_token, - client=self._client, - deserialization_callback=get_long_running_output, - ) - return LROPoller[_models.RunCommandResult]( - self._client, raw_result, get_long_running_output, polling_method # type: ignore - ) - - @distributed_trace - def get_command_result( - self, resource_group_name: str, resource_name: str, command_id: str, **kwargs: Any - ) -> Optional[_models.RunCommandResult]: - """Gets the results of a command which has been run on the Managed Cluster. - - :param resource_group_name: The name of the resource group. The name is case insensitive. - Required. - :type resource_group_name: str - :param resource_name: The name of the managed cluster resource. Required. - :type resource_name: str - :param command_id: Id of the command. Required. - :type command_id: str - :return: RunCommandResult or None. The RunCommandResult is compatible with MutableMapping - :rtype: ~azure.mgmt.containerservice.models.RunCommandResult or None + :return: MaintenanceConfiguration. The MaintenanceConfiguration is compatible with + MutableMapping + :rtype: ~azure.mgmt.containerservice.models.MaintenanceConfiguration :raises ~azure.core.exceptions.HttpResponseError: """ error_map: MutableMapping = { @@ -7096,17 +6939,27 @@ def get_command_result( } error_map.update(kwargs.pop("error_map", {}) or {}) - _headers = kwargs.pop("headers", {}) or {} + _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) _params = kwargs.pop("params", {}) or {} - cls: ClsType[Optional[_models.RunCommandResult]] = kwargs.pop("cls", None) + content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) + cls: ClsType[_models.MaintenanceConfiguration] = kwargs.pop("cls", None) - _request = build_managed_clusters_get_command_result_request( + content_type = content_type or "application/json" + _content = None + if isinstance(parameters, (IOBase, bytes)): + _content = parameters + else: + _content = json.dumps(parameters, cls=SdkJSONEncoder, exclude_readonly=True) # type: ignore + + _request = build_maintenance_configurations_create_or_update_request( resource_group_name=resource_group_name, resource_name=resource_name, - command_id=command_id, + config_name=config_name, subscription_id=self._config.subscription_id, + content_type=content_type, api_version=self._config.api_version, + content=_content, headers=_headers, params=_params, ) @@ -7123,7 +6976,7 @@ def get_command_result( response = pipeline_response.http_response - if response.status_code not in [200, 202]: + if response.status_code not in [200, 201]: if _stream: try: response.read() # Load the body in memory and close the socket @@ -7136,46 +6989,99 @@ def get_command_result( ) raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - deserialized = None - response_headers = {} - if response.status_code == 200: - if _stream: - deserialized = response.iter_bytes() if _decompress else response.iter_raw() - else: - deserialized = _deserialize(_models.RunCommandResult, response.json()) - - if response.status_code == 202: - response_headers["location"] = self._deserialize("str", response.headers.get("location")) + if _stream: + deserialized = response.iter_bytes() if _decompress else response.iter_raw() + else: + deserialized = _deserialize(_models.MaintenanceConfiguration, response.json()) if cls: - return cls(pipeline_response, deserialized, response_headers) # type: ignore + return cls(pipeline_response, deserialized, {}) # type: ignore return deserialized # type: ignore @distributed_trace - def list_outbound_network_dependencies_endpoints( # pylint: disable=name-too-long - self, resource_group_name: str, resource_name: str, **kwargs: Any - ) -> ItemPaged["_models.OutboundEnvironmentEndpoint"]: - """Gets a list of egress endpoints (network endpoints of all outbound dependencies) in the - specified managed cluster. + def delete( # pylint: disable=inconsistent-return-statements + self, resource_group_name: str, resource_name: str, config_name: str, **kwargs: Any + ) -> None: + """Deletes a maintenance configuration. - Gets a list of egress endpoints (network endpoints of all outbound dependencies) in the - specified managed cluster. The operation returns properties of each egress endpoint. + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param resource_name: The name of the managed cluster resource. Required. + :type resource_name: str + :param config_name: The name of the maintenance configuration. Supported values are 'default', + 'aksManagedAutoUpgradeSchedule', or 'aksManagedNodeOSUpgradeSchedule'. Required. + :type config_name: str + :return: None + :rtype: None + :raises ~azure.core.exceptions.HttpResponseError: + """ + error_map: MutableMapping = { + 401: ClientAuthenticationError, + 404: ResourceNotFoundError, + 409: ResourceExistsError, + 304: ResourceNotModifiedError, + } + error_map.update(kwargs.pop("error_map", {}) or {}) + + _headers = kwargs.pop("headers", {}) or {} + _params = kwargs.pop("params", {}) or {} + + cls: ClsType[None] = kwargs.pop("cls", None) + + _request = build_maintenance_configurations_delete_request( + resource_group_name=resource_group_name, + resource_name=resource_name, + config_name=config_name, + subscription_id=self._config.subscription_id, + api_version=self._config.api_version, + headers=_headers, + params=_params, + ) + path_format_arguments = { + "endpoint": self._serialize.url("self._config.base_url", self._config.base_url, "str", skip_quote=True), + } + _request.url = self._client.format_url(_request.url, **path_format_arguments) + + _stream = False + pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access + _request, stream=_stream, **kwargs + ) + + response = pipeline_response.http_response + + if response.status_code not in [200, 204]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + error = _failsafe_deserialize( + _models.ErrorResponse, + response, + ) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + if cls: + return cls(pipeline_response, None, {}) # type: ignore + + @distributed_trace + def list_by_managed_cluster( + self, resource_group_name: str, resource_name: str, **kwargs: Any + ) -> ItemPaged["_models.MaintenanceConfiguration"]: + """Gets a list of maintenance configurations in the specified managed cluster. :param resource_group_name: The name of the resource group. The name is case insensitive. Required. :type resource_group_name: str :param resource_name: The name of the managed cluster resource. Required. :type resource_name: str - :return: An iterator like instance of OutboundEnvironmentEndpoint + :return: An iterator like instance of MaintenanceConfiguration :rtype: - ~azure.core.paging.ItemPaged[~azure.mgmt.containerservice.models.OutboundEnvironmentEndpoint] + ~azure.core.paging.ItemPaged[~azure.mgmt.containerservice.models.MaintenanceConfiguration] :raises ~azure.core.exceptions.HttpResponseError: """ _headers = kwargs.pop("headers", {}) or {} _params = kwargs.pop("params", {}) or {} - cls: ClsType[List[_models.OutboundEnvironmentEndpoint]] = kwargs.pop("cls", None) + cls: ClsType[List[_models.MaintenanceConfiguration]] = kwargs.pop("cls", None) error_map: MutableMapping = { 401: ClientAuthenticationError, @@ -7188,7 +7094,7 @@ def list_outbound_network_dependencies_endpoints( # pylint: disable=name-too-lo def prepare_request(next_link=None): if not next_link: - _request = build_managed_clusters_list_outbound_network_dependencies_endpoints_request( + _request = build_maintenance_configurations_list_by_managed_cluster_request( resource_group_name=resource_group_name, resource_name=resource_name, subscription_id=self._config.subscription_id, @@ -7231,7 +7137,7 @@ def prepare_request(next_link=None): def extract_data(pipeline_response): deserialized = pipeline_response.http_response.json() list_of_elem = _deserialize( - List[_models.OutboundEnvironmentEndpoint], + List[_models.MaintenanceConfiguration], deserialized.get("value", []), ) if cls: @@ -7259,24 +7165,105 @@ def get_next(next_link=None): return ItemPaged(get_next, extract_data) - @api_version_validation( - method_added_on="2026-03-02-preview", - params_added_on={ - "2026-03-02-preview": [ - "api_version", - "subscription_id", - "resource_group_name", - "resource_name", - "content_type", - ] - }, - api_versions_list=["2026-03-02-preview"], - ) - def _rebalance_load_balancers_initial( + +class ManagedNamespacesOperations: + """ + .. warning:: + **DO NOT** instantiate this class directly. + + Instead, you should access the following operations through + :class:`~azure.mgmt.containerservice.ContainerServiceClient`'s + :attr:`managed_namespaces` attribute. + """ + + def __init__(self, *args, **kwargs) -> None: + input_args = list(args) + self._client: PipelineClient = input_args.pop(0) if input_args else kwargs.pop("client") + self._config: ContainerServiceClientConfiguration = input_args.pop(0) if input_args else kwargs.pop("config") + self._serialize: Serializer = input_args.pop(0) if input_args else kwargs.pop("serializer") + self._deserialize: Deserializer = input_args.pop(0) if input_args else kwargs.pop("deserializer") + + @distributed_trace + def get( + self, resource_group_name: str, resource_name: str, managed_namespace_name: str, **kwargs: Any + ) -> _models.ManagedNamespace: + """Gets the specified namespace of a managed cluster. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param resource_name: The name of the managed cluster resource. Required. + :type resource_name: str + :param managed_namespace_name: The name of the managed namespace. Required. + :type managed_namespace_name: str + :return: ManagedNamespace. The ManagedNamespace is compatible with MutableMapping + :rtype: ~azure.mgmt.containerservice.models.ManagedNamespace + :raises ~azure.core.exceptions.HttpResponseError: + """ + error_map: MutableMapping = { + 401: ClientAuthenticationError, + 404: ResourceNotFoundError, + 409: ResourceExistsError, + 304: ResourceNotModifiedError, + } + error_map.update(kwargs.pop("error_map", {}) or {}) + + _headers = kwargs.pop("headers", {}) or {} + _params = kwargs.pop("params", {}) or {} + + cls: ClsType[_models.ManagedNamespace] = kwargs.pop("cls", None) + + _request = build_managed_namespaces_get_request( + resource_group_name=resource_group_name, + resource_name=resource_name, + managed_namespace_name=managed_namespace_name, + subscription_id=self._config.subscription_id, + api_version=self._config.api_version, + headers=_headers, + params=_params, + ) + path_format_arguments = { + "endpoint": self._serialize.url("self._config.base_url", self._config.base_url, "str", skip_quote=True), + } + _request.url = self._client.format_url(_request.url, **path_format_arguments) + + _decompress = kwargs.pop("decompress", True) + _stream = kwargs.pop("stream", False) + pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access + _request, stream=_stream, **kwargs + ) + + response = pipeline_response.http_response + + if response.status_code not in [200]: + if _stream: + try: + response.read() # Load the body in memory and close the socket + except (StreamConsumedError, StreamClosedError): + pass + map_error(status_code=response.status_code, response=response, error_map=error_map) + error = _failsafe_deserialize( + _models.ErrorResponse, + response, + ) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + if _stream: + deserialized = response.iter_bytes() if _decompress else response.iter_raw() + else: + deserialized = _deserialize(_models.ManagedNamespace, response.json()) + + if cls: + return cls(pipeline_response, deserialized, {}) # type: ignore + + return deserialized # type: ignore + + def _create_or_update_initial( self, resource_group_name: str, resource_name: str, - parameters: Union[_models.RebalanceLoadBalancersRequestBody, JSON, IO[bytes]], + managed_namespace_name: str, + parameters: Union[_models.ManagedNamespace, JSON, IO[bytes]], **kwargs: Any ) -> Iterator[bytes]: error_map: MutableMapping = { @@ -7300,9 +7287,10 @@ def _rebalance_load_balancers_initial( else: _content = json.dumps(parameters, cls=SdkJSONEncoder, exclude_readonly=True) # type: ignore - _request = build_managed_clusters_rebalance_load_balancers_request( + _request = build_managed_namespaces_create_or_update_request( resource_group_name=resource_group_name, resource_name=resource_name, + managed_namespace_name=managed_namespace_name, subscription_id=self._config.subscription_id, content_type=content_type, api_version=self._config.api_version, @@ -7323,7 +7311,7 @@ def _rebalance_load_balancers_initial( response = pipeline_response.http_response - if response.status_code not in [202, 204]: + if response.status_code not in [200, 201]: try: response.read() # Load the body in memory and close the socket except (StreamConsumedError, StreamClosedError): @@ -7336,11 +7324,10 @@ def _rebalance_load_balancers_initial( raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) response_headers = {} - if response.status_code == 202: + if response.status_code == 201: response_headers["Azure-AsyncOperation"] = self._deserialize( "str", response.headers.get("Azure-AsyncOperation") ) - response_headers["Location"] = self._deserialize("str", response.headers.get("Location")) response_headers["Retry-After"] = self._deserialize("int", response.headers.get("Retry-After")) deserialized = response.iter_bytes() if _decompress else response.iter_raw() @@ -7351,138 +7338,145 @@ def _rebalance_load_balancers_initial( return deserialized # type: ignore @overload - def begin_rebalance_load_balancers( + def begin_create_or_update( self, resource_group_name: str, resource_name: str, - parameters: _models.RebalanceLoadBalancersRequestBody, + managed_namespace_name: str, + parameters: _models.ManagedNamespace, *, content_type: str = "application/json", **kwargs: Any - ) -> LROPoller[None]: - """Rebalance nodes across specific load balancers. + ) -> LROPoller[_models.ManagedNamespace]: + """Creates or updates a namespace managed by ARM for the specified managed cluster. Users can + configure aspects like resource quotas, network ingress/egress policies, and more. See + aka.ms/aks/managed-namespaces for more details. :param resource_group_name: The name of the resource group. The name is case insensitive. Required. :type resource_group_name: str :param resource_name: The name of the managed cluster resource. Required. :type resource_name: str - :param parameters: The names of the load balancers to be rebalanced. If set to empty, all load - balancers will be rebalanced. Required. - :type parameters: ~azure.mgmt.containerservice.models.RebalanceLoadBalancersRequestBody + :param managed_namespace_name: The name of the managed namespace. Required. + :type managed_namespace_name: str + :param parameters: The namespace to create or update. Required. + :type parameters: ~azure.mgmt.containerservice.models.ManagedNamespace :keyword content_type: Body Parameter content-type. Content type parameter for JSON body. Default value is "application/json". :paramtype content_type: str - :return: An instance of LROPoller that returns None - :rtype: ~azure.core.polling.LROPoller[None] + :return: An instance of LROPoller that returns ManagedNamespace. The ManagedNamespace is + compatible with MutableMapping + :rtype: ~azure.core.polling.LROPoller[~azure.mgmt.containerservice.models.ManagedNamespace] :raises ~azure.core.exceptions.HttpResponseError: """ @overload - def begin_rebalance_load_balancers( + def begin_create_or_update( self, resource_group_name: str, resource_name: str, + managed_namespace_name: str, parameters: JSON, *, content_type: str = "application/json", **kwargs: Any - ) -> LROPoller[None]: - """Rebalance nodes across specific load balancers. + ) -> LROPoller[_models.ManagedNamespace]: + """Creates or updates a namespace managed by ARM for the specified managed cluster. Users can + configure aspects like resource quotas, network ingress/egress policies, and more. See + aka.ms/aks/managed-namespaces for more details. :param resource_group_name: The name of the resource group. The name is case insensitive. Required. :type resource_group_name: str :param resource_name: The name of the managed cluster resource. Required. :type resource_name: str - :param parameters: The names of the load balancers to be rebalanced. If set to empty, all load - balancers will be rebalanced. Required. + :param managed_namespace_name: The name of the managed namespace. Required. + :type managed_namespace_name: str + :param parameters: The namespace to create or update. Required. :type parameters: JSON :keyword content_type: Body Parameter content-type. Content type parameter for JSON body. Default value is "application/json". :paramtype content_type: str - :return: An instance of LROPoller that returns None - :rtype: ~azure.core.polling.LROPoller[None] + :return: An instance of LROPoller that returns ManagedNamespace. The ManagedNamespace is + compatible with MutableMapping + :rtype: ~azure.core.polling.LROPoller[~azure.mgmt.containerservice.models.ManagedNamespace] :raises ~azure.core.exceptions.HttpResponseError: """ @overload - def begin_rebalance_load_balancers( + def begin_create_or_update( self, resource_group_name: str, resource_name: str, + managed_namespace_name: str, parameters: IO[bytes], *, content_type: str = "application/json", **kwargs: Any - ) -> LROPoller[None]: - """Rebalance nodes across specific load balancers. + ) -> LROPoller[_models.ManagedNamespace]: + """Creates or updates a namespace managed by ARM for the specified managed cluster. Users can + configure aspects like resource quotas, network ingress/egress policies, and more. See + aka.ms/aks/managed-namespaces for more details. :param resource_group_name: The name of the resource group. The name is case insensitive. Required. :type resource_group_name: str :param resource_name: The name of the managed cluster resource. Required. :type resource_name: str - :param parameters: The names of the load balancers to be rebalanced. If set to empty, all load - balancers will be rebalanced. Required. + :param managed_namespace_name: The name of the managed namespace. Required. + :type managed_namespace_name: str + :param parameters: The namespace to create or update. Required. :type parameters: IO[bytes] :keyword content_type: Body Parameter content-type. Content type parameter for binary body. Default value is "application/json". :paramtype content_type: str - :return: An instance of LROPoller that returns None - :rtype: ~azure.core.polling.LROPoller[None] + :return: An instance of LROPoller that returns ManagedNamespace. The ManagedNamespace is + compatible with MutableMapping + :rtype: ~azure.core.polling.LROPoller[~azure.mgmt.containerservice.models.ManagedNamespace] :raises ~azure.core.exceptions.HttpResponseError: """ @distributed_trace - @api_version_validation( - method_added_on="2026-03-02-preview", - params_added_on={ - "2026-03-02-preview": [ - "api_version", - "subscription_id", - "resource_group_name", - "resource_name", - "content_type", - ] - }, - api_versions_list=["2026-03-02-preview"], - ) - def begin_rebalance_load_balancers( + def begin_create_or_update( self, resource_group_name: str, resource_name: str, - parameters: Union[_models.RebalanceLoadBalancersRequestBody, JSON, IO[bytes]], + managed_namespace_name: str, + parameters: Union[_models.ManagedNamespace, JSON, IO[bytes]], **kwargs: Any - ) -> LROPoller[None]: - """Rebalance nodes across specific load balancers. - - :param resource_group_name: The name of the resource group. The name is case insensitive. + ) -> LROPoller[_models.ManagedNamespace]: + """Creates or updates a namespace managed by ARM for the specified managed cluster. Users can + configure aspects like resource quotas, network ingress/egress policies, and more. See + aka.ms/aks/managed-namespaces for more details. + + :param resource_group_name: The name of the resource group. The name is case insensitive. Required. :type resource_group_name: str :param resource_name: The name of the managed cluster resource. Required. :type resource_name: str - :param parameters: The names of the load balancers to be rebalanced. If set to empty, all load - balancers will be rebalanced. Is one of the following types: RebalanceLoadBalancersRequestBody, - JSON, IO[bytes] Required. - :type parameters: ~azure.mgmt.containerservice.models.RebalanceLoadBalancersRequestBody or JSON - or IO[bytes] - :return: An instance of LROPoller that returns None - :rtype: ~azure.core.polling.LROPoller[None] + :param managed_namespace_name: The name of the managed namespace. Required. + :type managed_namespace_name: str + :param parameters: The namespace to create or update. Is one of the following types: + ManagedNamespace, JSON, IO[bytes] Required. + :type parameters: ~azure.mgmt.containerservice.models.ManagedNamespace or JSON or IO[bytes] + :return: An instance of LROPoller that returns ManagedNamespace. The ManagedNamespace is + compatible with MutableMapping + :rtype: ~azure.core.polling.LROPoller[~azure.mgmt.containerservice.models.ManagedNamespace] :raises ~azure.core.exceptions.HttpResponseError: """ _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) _params = kwargs.pop("params", {}) or {} content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) - cls: ClsType[None] = kwargs.pop("cls", None) + cls: ClsType[_models.ManagedNamespace] = kwargs.pop("cls", None) polling: Union[bool, PollingMethod] = kwargs.pop("polling", True) lro_delay = kwargs.pop("polling_interval", self._config.polling_interval) cont_token: Optional[str] = kwargs.pop("continuation_token", None) if cont_token is None: - raw_result = self._rebalance_load_balancers_initial( + raw_result = self._create_or_update_initial( resource_group_name=resource_group_name, resource_name=resource_name, + managed_namespace_name=managed_namespace_name, parameters=parameters, content_type=content_type, cls=lambda x, y, z: x, @@ -7493,9 +7487,12 @@ def begin_rebalance_load_balancers( raw_result.http_response.read() # type: ignore kwargs.pop("error_map", None) - def get_long_running_output(pipeline_response): # pylint: disable=inconsistent-return-statements + def get_long_running_output(pipeline_response): + response = pipeline_response.http_response + deserialized = _deserialize(_models.ManagedNamespace, response.json()) if cls: - return cls(pipeline_response, None, {}) # type: ignore + return cls(pipeline_response, deserialized, {}) # type: ignore + return deserialized path_format_arguments = { "endpoint": self._serialize.url("self._config.base_url", self._config.base_url, "str", skip_quote=True), @@ -7510,28 +7507,132 @@ def get_long_running_output(pipeline_response): # pylint: disable=inconsistent- else: polling_method = polling if cont_token: - return LROPoller[None].from_continuation_token( + return LROPoller[_models.ManagedNamespace].from_continuation_token( polling_method=polling_method, continuation_token=cont_token, client=self._client, deserialization_callback=get_long_running_output, ) - return LROPoller[None](self._client, raw_result, get_long_running_output, polling_method) # type: ignore + return LROPoller[_models.ManagedNamespace]( + self._client, raw_result, get_long_running_output, polling_method # type: ignore + ) + + @overload + def update( + self, + resource_group_name: str, + resource_name: str, + managed_namespace_name: str, + parameters: _models.TagsObject, + *, + content_type: str = "application/json", + **kwargs: Any + ) -> _models.ManagedNamespace: + """Updates tags on a managed namespace. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param resource_name: The name of the managed cluster resource. Required. + :type resource_name: str + :param managed_namespace_name: The name of the managed namespace. Required. + :type managed_namespace_name: str + :param parameters: Parameters supplied to the patch namespace operation, we only support patch + tags for now. Required. + :type parameters: ~azure.mgmt.containerservice.models.TagsObject + :keyword content_type: Body Parameter content-type. Content type parameter for JSON body. + Default value is "application/json". + :paramtype content_type: str + :return: ManagedNamespace. The ManagedNamespace is compatible with MutableMapping + :rtype: ~azure.mgmt.containerservice.models.ManagedNamespace + :raises ~azure.core.exceptions.HttpResponseError: + """ + + @overload + def update( + self, + resource_group_name: str, + resource_name: str, + managed_namespace_name: str, + parameters: JSON, + *, + content_type: str = "application/json", + **kwargs: Any + ) -> _models.ManagedNamespace: + """Updates tags on a managed namespace. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param resource_name: The name of the managed cluster resource. Required. + :type resource_name: str + :param managed_namespace_name: The name of the managed namespace. Required. + :type managed_namespace_name: str + :param parameters: Parameters supplied to the patch namespace operation, we only support patch + tags for now. Required. + :type parameters: JSON + :keyword content_type: Body Parameter content-type. Content type parameter for JSON body. + Default value is "application/json". + :paramtype content_type: str + :return: ManagedNamespace. The ManagedNamespace is compatible with MutableMapping + :rtype: ~azure.mgmt.containerservice.models.ManagedNamespace + :raises ~azure.core.exceptions.HttpResponseError: + """ + + @overload + def update( + self, + resource_group_name: str, + resource_name: str, + managed_namespace_name: str, + parameters: IO[bytes], + *, + content_type: str = "application/json", + **kwargs: Any + ) -> _models.ManagedNamespace: + """Updates tags on a managed namespace. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param resource_name: The name of the managed cluster resource. Required. + :type resource_name: str + :param managed_namespace_name: The name of the managed namespace. Required. + :type managed_namespace_name: str + :param parameters: Parameters supplied to the patch namespace operation, we only support patch + tags for now. Required. + :type parameters: IO[bytes] + :keyword content_type: Body Parameter content-type. Content type parameter for binary body. + Default value is "application/json". + :paramtype content_type: str + :return: ManagedNamespace. The ManagedNamespace is compatible with MutableMapping + :rtype: ~azure.mgmt.containerservice.models.ManagedNamespace + :raises ~azure.core.exceptions.HttpResponseError: + """ @distributed_trace - def get_upgrade_profile( - self, resource_group_name: str, resource_name: str, **kwargs: Any - ) -> _models.ManagedClusterUpgradeProfile: - """Gets the upgrade profile of a managed cluster. + def update( + self, + resource_group_name: str, + resource_name: str, + managed_namespace_name: str, + parameters: Union[_models.TagsObject, JSON, IO[bytes]], + **kwargs: Any + ) -> _models.ManagedNamespace: + """Updates tags on a managed namespace. :param resource_group_name: The name of the resource group. The name is case insensitive. Required. :type resource_group_name: str :param resource_name: The name of the managed cluster resource. Required. :type resource_name: str - :return: ManagedClusterUpgradeProfile. The ManagedClusterUpgradeProfile is compatible with - MutableMapping - :rtype: ~azure.mgmt.containerservice.models.ManagedClusterUpgradeProfile + :param managed_namespace_name: The name of the managed namespace. Required. + :type managed_namespace_name: str + :param parameters: Parameters supplied to the patch namespace operation, we only support patch + tags for now. Is one of the following types: TagsObject, JSON, IO[bytes] Required. + :type parameters: ~azure.mgmt.containerservice.models.TagsObject or JSON or IO[bytes] + :return: ManagedNamespace. The ManagedNamespace is compatible with MutableMapping + :rtype: ~azure.mgmt.containerservice.models.ManagedNamespace :raises ~azure.core.exceptions.HttpResponseError: """ error_map: MutableMapping = { @@ -7542,16 +7643,27 @@ def get_upgrade_profile( } error_map.update(kwargs.pop("error_map", {}) or {}) - _headers = kwargs.pop("headers", {}) or {} + _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) _params = kwargs.pop("params", {}) or {} - cls: ClsType[_models.ManagedClusterUpgradeProfile] = kwargs.pop("cls", None) + content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) + cls: ClsType[_models.ManagedNamespace] = kwargs.pop("cls", None) - _request = build_managed_clusters_get_upgrade_profile_request( + content_type = content_type or "application/json" + _content = None + if isinstance(parameters, (IOBase, bytes)): + _content = parameters + else: + _content = json.dumps(parameters, cls=SdkJSONEncoder, exclude_readonly=True) # type: ignore + + _request = build_managed_namespaces_update_request( resource_group_name=resource_group_name, resource_name=resource_name, + managed_namespace_name=managed_namespace_name, subscription_id=self._config.subscription_id, + content_type=content_type, api_version=self._config.api_version, + content=_content, headers=_headers, params=_params, ) @@ -7584,28 +7696,16 @@ def get_upgrade_profile( if _stream: deserialized = response.iter_bytes() if _decompress else response.iter_raw() else: - deserialized = _deserialize(_models.ManagedClusterUpgradeProfile, response.json()) + deserialized = _deserialize(_models.ManagedNamespace, response.json()) if cls: return cls(pipeline_response, deserialized, {}) # type: ignore return deserialized # type: ignore - @distributed_trace - def get_guardrails_versions(self, location: str, version: str, **kwargs: Any) -> _models.GuardrailsAvailableVersion: - """Gets supported Guardrails version in the specified subscription and location. - - Contains Guardrails version along with its support info and whether it is a default version. - - :param location: The name of the Azure region. Required. - :type location: str - :param version: Safeguards version. Required. - :type version: str - :return: GuardrailsAvailableVersion. The GuardrailsAvailableVersion is compatible with - MutableMapping - :rtype: ~azure.mgmt.containerservice.models.GuardrailsAvailableVersion - :raises ~azure.core.exceptions.HttpResponseError: - """ + def _delete_initial( + self, resource_group_name: str, resource_name: str, managed_namespace_name: str, **kwargs: Any + ) -> Iterator[bytes]: error_map: MutableMapping = { 401: ClientAuthenticationError, 404: ResourceNotFoundError, @@ -7617,11 +7717,12 @@ def get_guardrails_versions(self, location: str, version: str, **kwargs: Any) -> _headers = kwargs.pop("headers", {}) or {} _params = kwargs.pop("params", {}) or {} - cls: ClsType[_models.GuardrailsAvailableVersion] = kwargs.pop("cls", None) + cls: ClsType[Iterator[bytes]] = kwargs.pop("cls", None) - _request = build_managed_clusters_get_guardrails_versions_request( - location=location, - version=version, + _request = build_managed_namespaces_delete_request( + resource_group_name=resource_group_name, + resource_name=resource_name, + managed_namespace_name=managed_namespace_name, subscription_id=self._config.subscription_id, api_version=self._config.api_version, headers=_headers, @@ -7633,19 +7734,18 @@ def get_guardrails_versions(self, location: str, version: str, **kwargs: Any) -> _request.url = self._client.format_url(_request.url, **path_format_arguments) _decompress = kwargs.pop("decompress", True) - _stream = kwargs.pop("stream", False) + _stream = True pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access _request, stream=_stream, **kwargs ) response = pipeline_response.http_response - if response.status_code not in [200]: - if _stream: - try: - response.read() # Load the body in memory and close the socket - except (StreamConsumedError, StreamClosedError): - pass + if response.status_code not in [202, 204]: + try: + response.read() # Load the body in memory and close the socket + except (StreamConsumedError, StreamClosedError): + pass map_error(status_code=response.status_code, response=response, error_map=error_map) error = _failsafe_deserialize( _models.ErrorResponse, @@ -7653,48 +7753,117 @@ def get_guardrails_versions(self, location: str, version: str, **kwargs: Any) -> ) raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - if _stream: - deserialized = response.iter_bytes() if _decompress else response.iter_raw() - else: - deserialized = _deserialize(_models.GuardrailsAvailableVersion, response.json()) + response_headers = {} + if response.status_code == 202: + response_headers["Azure-AsyncOperation"] = self._deserialize( + "str", response.headers.get("Azure-AsyncOperation") + ) + response_headers["Location"] = self._deserialize("str", response.headers.get("Location")) + response_headers["Retry-After"] = self._deserialize("int", response.headers.get("Retry-After")) + + deserialized = response.iter_bytes() if _decompress else response.iter_raw() if cls: - return cls(pipeline_response, deserialized, {}) # type: ignore + return cls(pipeline_response, deserialized, response_headers) # type: ignore return deserialized # type: ignore @distributed_trace - def list_guardrails_versions(self, location: str, **kwargs: Any) -> ItemPaged["_models.GuardrailsAvailableVersion"]: - """Gets a list of supported Guardrails versions in the specified subscription and location. - - Contains list of Guardrails version along with its support info and whether it is a default - version. + def begin_delete( + self, resource_group_name: str, resource_name: str, managed_namespace_name: str, **kwargs: Any + ) -> LROPoller[None]: + """Deletes a namespace. - :param location: The name of the Azure region. Required. - :type location: str - :return: An iterator like instance of GuardrailsAvailableVersion - :rtype: - ~azure.core.paging.ItemPaged[~azure.mgmt.containerservice.models.GuardrailsAvailableVersion] + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param resource_name: The name of the managed cluster resource. Required. + :type resource_name: str + :param managed_namespace_name: The name of the managed namespace. Required. + :type managed_namespace_name: str + :return: An instance of LROPoller that returns None + :rtype: ~azure.core.polling.LROPoller[None] :raises ~azure.core.exceptions.HttpResponseError: """ _headers = kwargs.pop("headers", {}) or {} _params = kwargs.pop("params", {}) or {} - cls: ClsType[List[_models.GuardrailsAvailableVersion]] = kwargs.pop("cls", None) + cls: ClsType[None] = kwargs.pop("cls", None) + polling: Union[bool, PollingMethod] = kwargs.pop("polling", True) + lro_delay = kwargs.pop("polling_interval", self._config.polling_interval) + cont_token: Optional[str] = kwargs.pop("continuation_token", None) + if cont_token is None: + raw_result = self._delete_initial( + resource_group_name=resource_group_name, + resource_name=resource_name, + managed_namespace_name=managed_namespace_name, + cls=lambda x, y, z: x, + headers=_headers, + params=_params, + **kwargs + ) + raw_result.http_response.read() # type: ignore + kwargs.pop("error_map", None) - error_map: MutableMapping = { - 401: ClientAuthenticationError, - 404: ResourceNotFoundError, - 409: ResourceExistsError, - 304: ResourceNotModifiedError, - } - error_map.update(kwargs.pop("error_map", {}) or {}) + def get_long_running_output(pipeline_response): # pylint: disable=inconsistent-return-statements + if cls: + return cls(pipeline_response, None, {}) # type: ignore + + path_format_arguments = { + "endpoint": self._serialize.url("self._config.base_url", self._config.base_url, "str", skip_quote=True), + } + + if polling is True: + polling_method: PollingMethod = cast( + PollingMethod, ARMPolling(lro_delay, path_format_arguments=path_format_arguments, **kwargs) + ) + elif polling is False: + polling_method = cast(PollingMethod, NoPolling()) + else: + polling_method = polling + if cont_token: + return LROPoller[None].from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output, + ) + return LROPoller[None](self._client, raw_result, get_long_running_output, polling_method) # type: ignore + + @distributed_trace + def list_by_managed_cluster( + self, resource_group_name: str, resource_name: str, **kwargs: Any + ) -> ItemPaged["_models.ManagedNamespace"]: + """Gets a list of managed namespaces in the specified managed cluster. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param resource_name: The name of the managed cluster resource. Required. + :type resource_name: str + :return: An iterator like instance of ManagedNamespace + :rtype: ~azure.core.paging.ItemPaged[~azure.mgmt.containerservice.models.ManagedNamespace] + :raises ~azure.core.exceptions.HttpResponseError: + """ + _headers = kwargs.pop("headers", {}) or {} + _params = kwargs.pop("params", {}) or {} + + cls: ClsType[List[_models.ManagedNamespace]] = kwargs.pop("cls", None) + + error_map: MutableMapping = { + 401: ClientAuthenticationError, + 404: ResourceNotFoundError, + 409: ResourceExistsError, + 304: ResourceNotModifiedError, + } + error_map.update(kwargs.pop("error_map", {}) or {}) def prepare_request(next_link=None): if not next_link: - _request = build_managed_clusters_list_guardrails_versions_request( - location=location, + _request = build_managed_namespaces_list_by_managed_cluster_request( + resource_group_name=resource_group_name, + resource_name=resource_name, subscription_id=self._config.subscription_id, api_version=self._config.api_version, headers=_headers, @@ -7735,7 +7904,7 @@ def prepare_request(next_link=None): def extract_data(pipeline_response): deserialized = pipeline_response.http_response.json() list_of_elem = _deserialize( - List[_models.GuardrailsAvailableVersion], + List[_models.ManagedNamespace], deserialized.get("value", []), ) if cls: @@ -7764,18 +7933,20 @@ def get_next(next_link=None): return ItemPaged(get_next, extract_data) @distributed_trace - def get_safeguards_versions(self, location: str, version: str, **kwargs: Any) -> _models.SafeguardsAvailableVersion: - """Gets supported Safeguards version in the specified subscription and location. - - Contains Safeguards version along with its support info and whether it is a default version. + def list_credential( + self, resource_group_name: str, resource_name: str, managed_namespace_name: str, **kwargs: Any + ) -> _models.CredentialResults: + """Lists the credentials of a namespace. - :param location: The name of the Azure region. Required. - :type location: str - :param version: Safeguards version. Required. - :type version: str - :return: SafeguardsAvailableVersion. The SafeguardsAvailableVersion is compatible with - MutableMapping - :rtype: ~azure.mgmt.containerservice.models.SafeguardsAvailableVersion + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param resource_name: The name of the managed cluster resource. Required. + :type resource_name: str + :param managed_namespace_name: The name of the managed namespace. Required. + :type managed_namespace_name: str + :return: CredentialResults. The CredentialResults is compatible with MutableMapping + :rtype: ~azure.mgmt.containerservice.models.CredentialResults :raises ~azure.core.exceptions.HttpResponseError: """ error_map: MutableMapping = { @@ -7789,11 +7960,12 @@ def get_safeguards_versions(self, location: str, version: str, **kwargs: Any) -> _headers = kwargs.pop("headers", {}) or {} _params = kwargs.pop("params", {}) or {} - cls: ClsType[_models.SafeguardsAvailableVersion] = kwargs.pop("cls", None) + cls: ClsType[_models.CredentialResults] = kwargs.pop("cls", None) - _request = build_managed_clusters_get_safeguards_versions_request( - location=location, - version=version, + _request = build_managed_namespaces_list_credential_request( + resource_group_name=resource_group_name, + resource_name=resource_name, + managed_namespace_name=managed_namespace_name, subscription_id=self._config.subscription_id, api_version=self._config.api_version, headers=_headers, @@ -7828,126 +8000,48 @@ def get_safeguards_versions(self, location: str, version: str, **kwargs: Any) -> if _stream: deserialized = response.iter_bytes() if _decompress else response.iter_raw() else: - deserialized = _deserialize(_models.SafeguardsAvailableVersion, response.json()) + deserialized = _deserialize(_models.CredentialResults, response.json()) if cls: return cls(pipeline_response, deserialized, {}) # type: ignore return deserialized # type: ignore - @distributed_trace - def list_safeguards_versions(self, location: str, **kwargs: Any) -> ItemPaged["_models.SafeguardsAvailableVersion"]: - """Gets a list of supported Safeguards versions in the specified subscription and location. - - Contains list of Safeguards version along with its support info and whether it is a default - version. - - :param location: The name of the Azure region. Required. - :type location: str - :return: An iterator like instance of SafeguardsAvailableVersion - :rtype: - ~azure.core.paging.ItemPaged[~azure.mgmt.containerservice.models.SafeguardsAvailableVersion] - :raises ~azure.core.exceptions.HttpResponseError: - """ - _headers = kwargs.pop("headers", {}) or {} - _params = kwargs.pop("params", {}) or {} - - cls: ClsType[List[_models.SafeguardsAvailableVersion]] = kwargs.pop("cls", None) - - error_map: MutableMapping = { - 401: ClientAuthenticationError, - 404: ResourceNotFoundError, - 409: ResourceExistsError, - 304: ResourceNotModifiedError, - } - error_map.update(kwargs.pop("error_map", {}) or {}) - - def prepare_request(next_link=None): - if not next_link: - - _request = build_managed_clusters_list_safeguards_versions_request( - location=location, - subscription_id=self._config.subscription_id, - api_version=self._config.api_version, - headers=_headers, - params=_params, - ) - path_format_arguments = { - "endpoint": self._serialize.url( - "self._config.base_url", self._config.base_url, "str", skip_quote=True - ), - } - _request.url = self._client.format_url(_request.url, **path_format_arguments) - - else: - # make call to next link with the client's api-version - _parsed_next_link = urllib.parse.urlparse(next_link) - _next_request_params = case_insensitive_dict( - { - key: [urllib.parse.quote(v) for v in value] - for key, value in urllib.parse.parse_qs(_parsed_next_link.query).items() - } - ) - _next_request_params["api-version"] = self._config.api_version - _request = HttpRequest( - "GET", - urllib.parse.urljoin(next_link, _parsed_next_link.path), - headers=_headers, - params=_next_request_params, - ) - path_format_arguments = { - "endpoint": self._serialize.url( - "self._config.base_url", self._config.base_url, "str", skip_quote=True - ), - } - _request.url = self._client.format_url(_request.url, **path_format_arguments) - - return _request - - def extract_data(pipeline_response): - deserialized = pipeline_response.http_response.json() - list_of_elem = _deserialize( - List[_models.SafeguardsAvailableVersion], - deserialized.get("value", []), - ) - if cls: - list_of_elem = cls(list_of_elem) # type: ignore - return deserialized.get("nextLink") or None, iter(list_of_elem) - - def get_next(next_link=None): - _request = prepare_request(next_link) - - _stream = False - pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access - _request, stream=_stream, **kwargs - ) - response = pipeline_response.http_response - if response.status_code not in [200]: - map_error(status_code=response.status_code, response=response, error_map=error_map) - error = _failsafe_deserialize( - _models.ErrorResponse, - response, - ) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) +class MachinesOperations: + """ + .. warning:: + **DO NOT** instantiate this class directly. - return pipeline_response + Instead, you should access the following operations through + :class:`~azure.mgmt.containerservice.ContainerServiceClient`'s + :attr:`machines` attribute. + """ - return ItemPaged(get_next, extract_data) + def __init__(self, *args, **kwargs) -> None: + input_args = list(args) + self._client: PipelineClient = input_args.pop(0) if input_args else kwargs.pop("client") + self._config: ContainerServiceClientConfiguration = input_args.pop(0) if input_args else kwargs.pop("config") + self._serialize: Serializer = input_args.pop(0) if input_args else kwargs.pop("serializer") + self._deserialize: Deserializer = input_args.pop(0) if input_args else kwargs.pop("deserializer") @distributed_trace - def get_mesh_revision_profile(self, location: str, mode: str, **kwargs: Any) -> _models.MeshRevisionProfile: - """Gets a mesh revision profile for a specified mesh in the specified location. - - Contains extra metadata on the revision, including supported revisions, cluster compatibility - and available upgrades. + def get( + self, resource_group_name: str, resource_name: str, agent_pool_name: str, machine_name: str, **kwargs: Any + ) -> _models.Machine: + """Get a specific machine in the specified agent pool. - :param location: The name of the Azure region. Required. - :type location: str - :param mode: The mode of the mesh. Required. - :type mode: str - :return: MeshRevisionProfile. The MeshRevisionProfile is compatible with MutableMapping - :rtype: ~azure.mgmt.containerservice.models.MeshRevisionProfile + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param resource_name: The name of the managed cluster resource. Required. + :type resource_name: str + :param agent_pool_name: The name of the agent pool. Required. + :type agent_pool_name: str + :param machine_name: Host name of the machine. Required. + :type machine_name: str + :return: Machine. The Machine is compatible with MutableMapping + :rtype: ~azure.mgmt.containerservice.models.Machine :raises ~azure.core.exceptions.HttpResponseError: """ error_map: MutableMapping = { @@ -7961,11 +8055,13 @@ def get_mesh_revision_profile(self, location: str, mode: str, **kwargs: Any) -> _headers = kwargs.pop("headers", {}) or {} _params = kwargs.pop("params", {}) or {} - cls: ClsType[_models.MeshRevisionProfile] = kwargs.pop("cls", None) + cls: ClsType[_models.Machine] = kwargs.pop("cls", None) - _request = build_managed_clusters_get_mesh_revision_profile_request( - location=location, - mode=mode, + _request = build_machines_get_request( + resource_group_name=resource_group_name, + resource_name=resource_name, + agent_pool_name=agent_pool_name, + machine_name=machine_name, subscription_id=self._config.subscription_id, api_version=self._config.api_version, headers=_headers, @@ -8000,7 +8096,7 @@ def get_mesh_revision_profile(self, location: str, mode: str, **kwargs: Any) -> if _stream: deserialized = response.iter_bytes() if _decompress else response.iter_raw() else: - deserialized = _deserialize(_models.MeshRevisionProfile, response.json()) + deserialized = _deserialize(_models.Machine, response.json()) if cls: return cls(pipeline_response, deserialized, {}) # type: ignore @@ -8008,22 +8104,26 @@ def get_mesh_revision_profile(self, location: str, mode: str, **kwargs: Any) -> return deserialized # type: ignore @distributed_trace - def list_mesh_revision_profiles(self, location: str, **kwargs: Any) -> ItemPaged["_models.MeshRevisionProfile"]: - """Lists mesh revision profiles for all meshes in the specified location. - - Contains extra metadata on each revision, including supported revisions, cluster compatibility - and available upgrades. + def list( + self, resource_group_name: str, resource_name: str, agent_pool_name: str, **kwargs: Any + ) -> ItemPaged["_models.Machine"]: + """Gets a list of machines in the specified agent pool. - :param location: The name of the Azure region. Required. - :type location: str - :return: An iterator like instance of MeshRevisionProfile - :rtype: ~azure.core.paging.ItemPaged[~azure.mgmt.containerservice.models.MeshRevisionProfile] + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param resource_name: The name of the managed cluster resource. Required. + :type resource_name: str + :param agent_pool_name: The name of the agent pool. Required. + :type agent_pool_name: str + :return: An iterator like instance of Machine + :rtype: ~azure.core.paging.ItemPaged[~azure.mgmt.containerservice.models.Machine] :raises ~azure.core.exceptions.HttpResponseError: """ _headers = kwargs.pop("headers", {}) or {} _params = kwargs.pop("params", {}) or {} - cls: ClsType[List[_models.MeshRevisionProfile]] = kwargs.pop("cls", None) + cls: ClsType[List[_models.Machine]] = kwargs.pop("cls", None) error_map: MutableMapping = { 401: ClientAuthenticationError, @@ -8036,8 +8136,10 @@ def list_mesh_revision_profiles(self, location: str, **kwargs: Any) -> ItemPaged def prepare_request(next_link=None): if not next_link: - _request = build_managed_clusters_list_mesh_revision_profiles_request( - location=location, + _request = build_machines_list_request( + resource_group_name=resource_group_name, + resource_name=resource_name, + agent_pool_name=agent_pool_name, subscription_id=self._config.subscription_id, api_version=self._config.api_version, headers=_headers, @@ -8078,7 +8180,7 @@ def prepare_request(next_link=None): def extract_data(pipeline_response): deserialized = pipeline_response.http_response.json() list_of_elem = _deserialize( - List[_models.MeshRevisionProfile], + List[_models.Machine], deserialized.get("value", []), ) if cls: @@ -8106,21 +8208,44 @@ def get_next(next_link=None): return ItemPaged(get_next, extract_data) - @distributed_trace - def get_mesh_upgrade_profile( - self, resource_group_name: str, resource_name: str, mode: str, **kwargs: Any - ) -> _models.MeshUpgradeProfile: - """Gets available upgrades for a service mesh in a cluster. - :param resource_group_name: The name of the resource group. The name is case insensitive. - Required. +class PrivateEndpointConnectionsOperations: + """ + .. warning:: + **DO NOT** instantiate this class directly. + + Instead, you should access the following operations through + :class:`~azure.mgmt.containerservice.ContainerServiceClient`'s + :attr:`private_endpoint_connections` attribute. + """ + + def __init__(self, *args, **kwargs) -> None: + input_args = list(args) + self._client: PipelineClient = input_args.pop(0) if input_args else kwargs.pop("client") + self._config: ContainerServiceClientConfiguration = input_args.pop(0) if input_args else kwargs.pop("config") + self._serialize: Serializer = input_args.pop(0) if input_args else kwargs.pop("serializer") + self._deserialize: Deserializer = input_args.pop(0) if input_args else kwargs.pop("deserializer") + + @distributed_trace + def get( + self, resource_group_name: str, resource_name: str, private_endpoint_connection_name: str, **kwargs: Any + ) -> _models.PrivateEndpointConnection: + """Gets the specified private endpoint connection. + + To learn more about private clusters, see: + `https://docs.microsoft.com/azure/aks/private-clusters + `_. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. :type resource_group_name: str :param resource_name: The name of the managed cluster resource. Required. :type resource_name: str - :param mode: The mode of the mesh. Required. - :type mode: str - :return: MeshUpgradeProfile. The MeshUpgradeProfile is compatible with MutableMapping - :rtype: ~azure.mgmt.containerservice.models.MeshUpgradeProfile + :param private_endpoint_connection_name: The name of the private endpoint connection. Required. + :type private_endpoint_connection_name: str + :return: PrivateEndpointConnection. The PrivateEndpointConnection is compatible with + MutableMapping + :rtype: ~azure.mgmt.containerservice.models.PrivateEndpointConnection :raises ~azure.core.exceptions.HttpResponseError: """ error_map: MutableMapping = { @@ -8134,12 +8259,12 @@ def get_mesh_upgrade_profile( _headers = kwargs.pop("headers", {}) or {} _params = kwargs.pop("params", {}) or {} - cls: ClsType[_models.MeshUpgradeProfile] = kwargs.pop("cls", None) + cls: ClsType[_models.PrivateEndpointConnection] = kwargs.pop("cls", None) - _request = build_managed_clusters_get_mesh_upgrade_profile_request( + _request = build_private_endpoint_connections_get_request( resource_group_name=resource_group_name, resource_name=resource_name, - mode=mode, + private_endpoint_connection_name=private_endpoint_connection_name, subscription_id=self._config.subscription_id, api_version=self._config.api_version, headers=_headers, @@ -8174,127 +8299,131 @@ def get_mesh_upgrade_profile( if _stream: deserialized = response.iter_bytes() if _decompress else response.iter_raw() else: - deserialized = _deserialize(_models.MeshUpgradeProfile, response.json()) + deserialized = _deserialize(_models.PrivateEndpointConnection, response.json()) if cls: return cls(pipeline_response, deserialized, {}) # type: ignore return deserialized # type: ignore - @distributed_trace - def list_mesh_upgrade_profiles( - self, resource_group_name: str, resource_name: str, **kwargs: Any - ) -> ItemPaged["_models.MeshUpgradeProfile"]: - """Lists available upgrades for all service meshes in a specific cluster. + @overload + def update( + self, + resource_group_name: str, + resource_name: str, + private_endpoint_connection_name: str, + parameters: _models.PrivateEndpointConnection, + *, + content_type: str = "application/json", + **kwargs: Any + ) -> _models.PrivateEndpointConnection: + """Updates a private endpoint connection. :param resource_group_name: The name of the resource group. The name is case insensitive. Required. :type resource_group_name: str :param resource_name: The name of the managed cluster resource. Required. :type resource_name: str - :return: An iterator like instance of MeshUpgradeProfile - :rtype: ~azure.core.paging.ItemPaged[~azure.mgmt.containerservice.models.MeshUpgradeProfile] + :param private_endpoint_connection_name: The name of the private endpoint connection. Required. + :type private_endpoint_connection_name: str + :param parameters: The updated private endpoint connection. Required. + :type parameters: ~azure.mgmt.containerservice.models.PrivateEndpointConnection + :keyword content_type: Body Parameter content-type. Content type parameter for JSON body. + Default value is "application/json". + :paramtype content_type: str + :return: PrivateEndpointConnection. The PrivateEndpointConnection is compatible with + MutableMapping + :rtype: ~azure.mgmt.containerservice.models.PrivateEndpointConnection :raises ~azure.core.exceptions.HttpResponseError: """ - _headers = kwargs.pop("headers", {}) or {} - _params = kwargs.pop("params", {}) or {} - - cls: ClsType[List[_models.MeshUpgradeProfile]] = kwargs.pop("cls", None) - - error_map: MutableMapping = { - 401: ClientAuthenticationError, - 404: ResourceNotFoundError, - 409: ResourceExistsError, - 304: ResourceNotModifiedError, - } - error_map.update(kwargs.pop("error_map", {}) or {}) - - def prepare_request(next_link=None): - if not next_link: - - _request = build_managed_clusters_list_mesh_upgrade_profiles_request( - resource_group_name=resource_group_name, - resource_name=resource_name, - subscription_id=self._config.subscription_id, - api_version=self._config.api_version, - headers=_headers, - params=_params, - ) - path_format_arguments = { - "endpoint": self._serialize.url( - "self._config.base_url", self._config.base_url, "str", skip_quote=True - ), - } - _request.url = self._client.format_url(_request.url, **path_format_arguments) - - else: - # make call to next link with the client's api-version - _parsed_next_link = urllib.parse.urlparse(next_link) - _next_request_params = case_insensitive_dict( - { - key: [urllib.parse.quote(v) for v in value] - for key, value in urllib.parse.parse_qs(_parsed_next_link.query).items() - } - ) - _next_request_params["api-version"] = self._config.api_version - _request = HttpRequest( - "GET", - urllib.parse.urljoin(next_link, _parsed_next_link.path), - headers=_headers, - params=_next_request_params, - ) - path_format_arguments = { - "endpoint": self._serialize.url( - "self._config.base_url", self._config.base_url, "str", skip_quote=True - ), - } - _request.url = self._client.format_url(_request.url, **path_format_arguments) - return _request - - def extract_data(pipeline_response): - deserialized = pipeline_response.http_response.json() - list_of_elem = _deserialize( - List[_models.MeshUpgradeProfile], - deserialized.get("value", []), - ) - if cls: - list_of_elem = cls(list_of_elem) # type: ignore - return deserialized.get("nextLink") or None, iter(list_of_elem) - - def get_next(next_link=None): - _request = prepare_request(next_link) - - _stream = False - pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access - _request, stream=_stream, **kwargs - ) - response = pipeline_response.http_response + @overload + def update( + self, + resource_group_name: str, + resource_name: str, + private_endpoint_connection_name: str, + parameters: JSON, + *, + content_type: str = "application/json", + **kwargs: Any + ) -> _models.PrivateEndpointConnection: + """Updates a private endpoint connection. - if response.status_code not in [200]: - map_error(status_code=response.status_code, response=response, error_map=error_map) - error = _failsafe_deserialize( - _models.ErrorResponse, - response, - ) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param resource_name: The name of the managed cluster resource. Required. + :type resource_name: str + :param private_endpoint_connection_name: The name of the private endpoint connection. Required. + :type private_endpoint_connection_name: str + :param parameters: The updated private endpoint connection. Required. + :type parameters: JSON + :keyword content_type: Body Parameter content-type. Content type parameter for JSON body. + Default value is "application/json". + :paramtype content_type: str + :return: PrivateEndpointConnection. The PrivateEndpointConnection is compatible with + MutableMapping + :rtype: ~azure.mgmt.containerservice.models.PrivateEndpointConnection + :raises ~azure.core.exceptions.HttpResponseError: + """ - return pipeline_response + @overload + def update( + self, + resource_group_name: str, + resource_name: str, + private_endpoint_connection_name: str, + parameters: IO[bytes], + *, + content_type: str = "application/json", + **kwargs: Any + ) -> _models.PrivateEndpointConnection: + """Updates a private endpoint connection. - return ItemPaged(get_next, extract_data) + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param resource_name: The name of the managed cluster resource. Required. + :type resource_name: str + :param private_endpoint_connection_name: The name of the private endpoint connection. Required. + :type private_endpoint_connection_name: str + :param parameters: The updated private endpoint connection. Required. + :type parameters: IO[bytes] + :keyword content_type: Body Parameter content-type. Content type parameter for binary body. + Default value is "application/json". + :paramtype content_type: str + :return: PrivateEndpointConnection. The PrivateEndpointConnection is compatible with + MutableMapping + :rtype: ~azure.mgmt.containerservice.models.PrivateEndpointConnection + :raises ~azure.core.exceptions.HttpResponseError: + """ @distributed_trace - def list_kubernetes_versions(self, location: str, **kwargs: Any) -> _models.KubernetesVersionListResult: - """Gets a list of supported Kubernetes versions in the specified subscription. - - Contains extra metadata on the version, including supported patch versions, capabilities, - available upgrades, and details on preview status of the version. + def update( + self, + resource_group_name: str, + resource_name: str, + private_endpoint_connection_name: str, + parameters: Union[_models.PrivateEndpointConnection, JSON, IO[bytes]], + **kwargs: Any + ) -> _models.PrivateEndpointConnection: + """Updates a private endpoint connection. - :param location: The name of the Azure region. Required. - :type location: str - :return: KubernetesVersionListResult. The KubernetesVersionListResult is compatible with + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param resource_name: The name of the managed cluster resource. Required. + :type resource_name: str + :param private_endpoint_connection_name: The name of the private endpoint connection. Required. + :type private_endpoint_connection_name: str + :param parameters: The updated private endpoint connection. Is one of the following types: + PrivateEndpointConnection, JSON, IO[bytes] Required. + :type parameters: ~azure.mgmt.containerservice.models.PrivateEndpointConnection or JSON or + IO[bytes] + :return: PrivateEndpointConnection. The PrivateEndpointConnection is compatible with MutableMapping - :rtype: ~azure.mgmt.containerservice.models.KubernetesVersionListResult + :rtype: ~azure.mgmt.containerservice.models.PrivateEndpointConnection :raises ~azure.core.exceptions.HttpResponseError: """ error_map: MutableMapping = { @@ -8305,16 +8434,231 @@ def list_kubernetes_versions(self, location: str, **kwargs: Any) -> _models.Kube } error_map.update(kwargs.pop("error_map", {}) or {}) - _headers = kwargs.pop("headers", {}) or {} + _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) _params = kwargs.pop("params", {}) or {} - cls: ClsType[_models.KubernetesVersionListResult] = kwargs.pop("cls", None) + content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) + cls: ClsType[_models.PrivateEndpointConnection] = kwargs.pop("cls", None) - _request = build_managed_clusters_list_kubernetes_versions_request( - location=location, - subscription_id=self._config.subscription_id, - api_version=self._config.api_version, - headers=_headers, + content_type = content_type or "application/json" + _content = None + if isinstance(parameters, (IOBase, bytes)): + _content = parameters + else: + _content = json.dumps(parameters, cls=SdkJSONEncoder, exclude_readonly=True) # type: ignore + + _request = build_private_endpoint_connections_update_request( + resource_group_name=resource_group_name, + resource_name=resource_name, + private_endpoint_connection_name=private_endpoint_connection_name, + subscription_id=self._config.subscription_id, + content_type=content_type, + api_version=self._config.api_version, + content=_content, + headers=_headers, + params=_params, + ) + path_format_arguments = { + "endpoint": self._serialize.url("self._config.base_url", self._config.base_url, "str", skip_quote=True), + } + _request.url = self._client.format_url(_request.url, **path_format_arguments) + + _decompress = kwargs.pop("decompress", True) + _stream = kwargs.pop("stream", False) + pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access + _request, stream=_stream, **kwargs + ) + + response = pipeline_response.http_response + + if response.status_code not in [200, 201]: + if _stream: + try: + response.read() # Load the body in memory and close the socket + except (StreamConsumedError, StreamClosedError): + pass + map_error(status_code=response.status_code, response=response, error_map=error_map) + error = _failsafe_deserialize( + _models.ErrorResponse, + response, + ) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + if _stream: + deserialized = response.iter_bytes() if _decompress else response.iter_raw() + else: + deserialized = _deserialize(_models.PrivateEndpointConnection, response.json()) + + if cls: + return cls(pipeline_response, deserialized, {}) # type: ignore + + return deserialized # type: ignore + + def _delete_initial( + self, resource_group_name: str, resource_name: str, private_endpoint_connection_name: str, **kwargs: Any + ) -> Iterator[bytes]: + error_map: MutableMapping = { + 401: ClientAuthenticationError, + 404: ResourceNotFoundError, + 409: ResourceExistsError, + 304: ResourceNotModifiedError, + } + error_map.update(kwargs.pop("error_map", {}) or {}) + + _headers = kwargs.pop("headers", {}) or {} + _params = kwargs.pop("params", {}) or {} + + cls: ClsType[Iterator[bytes]] = kwargs.pop("cls", None) + + _request = build_private_endpoint_connections_delete_request( + resource_group_name=resource_group_name, + resource_name=resource_name, + private_endpoint_connection_name=private_endpoint_connection_name, + subscription_id=self._config.subscription_id, + api_version=self._config.api_version, + headers=_headers, + params=_params, + ) + path_format_arguments = { + "endpoint": self._serialize.url("self._config.base_url", self._config.base_url, "str", skip_quote=True), + } + _request.url = self._client.format_url(_request.url, **path_format_arguments) + + _decompress = kwargs.pop("decompress", True) + _stream = True + pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access + _request, stream=_stream, **kwargs + ) + + response = pipeline_response.http_response + + if response.status_code not in [200, 204]: + try: + response.read() # Load the body in memory and close the socket + except (StreamConsumedError, StreamClosedError): + pass + map_error(status_code=response.status_code, response=response, error_map=error_map) + error = _failsafe_deserialize( + _models.ErrorResponse, + response, + ) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + response_headers = {} + if response.status_code == 200: + response_headers["Azure-AsyncOperation"] = self._deserialize( + "str", response.headers.get("Azure-AsyncOperation") + ) + response_headers["Retry-After"] = self._deserialize("int", response.headers.get("Retry-After")) + + deserialized = response.iter_bytes() if _decompress else response.iter_raw() + + if cls: + return cls(pipeline_response, deserialized, response_headers) # type: ignore + + return deserialized # type: ignore + + @distributed_trace + def begin_delete( + self, resource_group_name: str, resource_name: str, private_endpoint_connection_name: str, **kwargs: Any + ) -> LROPoller[None]: + """Deletes a private endpoint connection. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param resource_name: The name of the managed cluster resource. Required. + :type resource_name: str + :param private_endpoint_connection_name: The name of the private endpoint connection. Required. + :type private_endpoint_connection_name: str + :return: An instance of LROPoller that returns None + :rtype: ~azure.core.polling.LROPoller[None] + :raises ~azure.core.exceptions.HttpResponseError: + """ + _headers = kwargs.pop("headers", {}) or {} + _params = kwargs.pop("params", {}) or {} + + cls: ClsType[None] = kwargs.pop("cls", None) + polling: Union[bool, PollingMethod] = kwargs.pop("polling", True) + lro_delay = kwargs.pop("polling_interval", self._config.polling_interval) + cont_token: Optional[str] = kwargs.pop("continuation_token", None) + if cont_token is None: + raw_result = self._delete_initial( + resource_group_name=resource_group_name, + resource_name=resource_name, + private_endpoint_connection_name=private_endpoint_connection_name, + cls=lambda x, y, z: x, + headers=_headers, + params=_params, + **kwargs + ) + raw_result.http_response.read() # type: ignore + kwargs.pop("error_map", None) + + def get_long_running_output(pipeline_response): # pylint: disable=inconsistent-return-statements + if cls: + return cls(pipeline_response, None, {}) # type: ignore + + path_format_arguments = { + "endpoint": self._serialize.url("self._config.base_url", self._config.base_url, "str", skip_quote=True), + } + + if polling is True: + polling_method: PollingMethod = cast( + PollingMethod, ARMPolling(lro_delay, path_format_arguments=path_format_arguments, **kwargs) + ) + elif polling is False: + polling_method = cast(PollingMethod, NoPolling()) + else: + polling_method = polling + if cont_token: + return LROPoller[None].from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output, + ) + return LROPoller[None](self._client, raw_result, get_long_running_output, polling_method) # type: ignore + + @distributed_trace + def list( + self, resource_group_name: str, resource_name: str, **kwargs: Any + ) -> _models.PrivateEndpointConnectionListResult: + """Gets a list of private endpoint connections in the specified managed cluster. + + To learn more about private clusters, see: + `https://docs.microsoft.com/azure/aks/private-clusters + `_. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param resource_name: The name of the managed cluster resource. Required. + :type resource_name: str + :return: PrivateEndpointConnectionListResult. The PrivateEndpointConnectionListResult is + compatible with MutableMapping + :rtype: ~azure.mgmt.containerservice.models.PrivateEndpointConnectionListResult + :raises ~azure.core.exceptions.HttpResponseError: + """ + error_map: MutableMapping = { + 401: ClientAuthenticationError, + 404: ResourceNotFoundError, + 409: ResourceExistsError, + 304: ResourceNotModifiedError, + } + error_map.update(kwargs.pop("error_map", {}) or {}) + + _headers = kwargs.pop("headers", {}) or {} + _params = kwargs.pop("params", {}) or {} + + cls: ClsType[_models.PrivateEndpointConnectionListResult] = kwargs.pop("cls", None) + + _request = build_private_endpoint_connections_list_request( + resource_group_name=resource_group_name, + resource_name=resource_name, + subscription_id=self._config.subscription_id, + api_version=self._config.api_version, + headers=_headers, params=_params, ) path_format_arguments = { @@ -8346,7 +8690,7 @@ def list_kubernetes_versions(self, location: str, **kwargs: Any) -> _models.Kube if _stream: deserialized = response.iter_bytes() if _decompress else response.iter_raw() else: - deserialized = _deserialize(_models.KubernetesVersionListResult, response.json()) + deserialized = _deserialize(_models.PrivateEndpointConnectionListResult, response.json()) if cls: return cls(pipeline_response, deserialized, {}) # type: ignore @@ -8354,14 +8698,14 @@ def list_kubernetes_versions(self, location: str, **kwargs: Any) -> _models.Kube return deserialized # type: ignore -class MaintenanceConfigurationsOperations: +class SnapshotsOperations: """ .. warning:: **DO NOT** instantiate this class directly. Instead, you should access the following operations through :class:`~azure.mgmt.containerservice.ContainerServiceClient`'s - :attr:`maintenance_configurations` attribute. + :attr:`snapshots` attribute. """ def __init__(self, *args, **kwargs) -> None: @@ -8372,22 +8716,16 @@ def __init__(self, *args, **kwargs) -> None: self._deserialize: Deserializer = input_args.pop(0) if input_args else kwargs.pop("deserializer") @distributed_trace - def get( - self, resource_group_name: str, resource_name: str, config_name: str, **kwargs: Any - ) -> _models.MaintenanceConfiguration: - """Gets the specified maintenance configuration of a managed cluster. + def get(self, resource_group_name: str, resource_name: str, **kwargs: Any) -> _models.Snapshot: + """Gets a snapshot. :param resource_group_name: The name of the resource group. The name is case insensitive. Required. :type resource_group_name: str :param resource_name: The name of the managed cluster resource. Required. :type resource_name: str - :param config_name: The name of the maintenance configuration. Supported values are 'default', - 'aksManagedAutoUpgradeSchedule', or 'aksManagedNodeOSUpgradeSchedule'. Required. - :type config_name: str - :return: MaintenanceConfiguration. The MaintenanceConfiguration is compatible with - MutableMapping - :rtype: ~azure.mgmt.containerservice.models.MaintenanceConfiguration + :return: Snapshot. The Snapshot is compatible with MutableMapping + :rtype: ~azure.mgmt.containerservice.models.Snapshot :raises ~azure.core.exceptions.HttpResponseError: """ error_map: MutableMapping = { @@ -8401,12 +8739,11 @@ def get( _headers = kwargs.pop("headers", {}) or {} _params = kwargs.pop("params", {}) or {} - cls: ClsType[_models.MaintenanceConfiguration] = kwargs.pop("cls", None) + cls: ClsType[_models.Snapshot] = kwargs.pop("cls", None) - _request = build_maintenance_configurations_get_request( + _request = build_snapshots_get_request( resource_group_name=resource_group_name, resource_name=resource_name, - config_name=config_name, subscription_id=self._config.subscription_id, api_version=self._config.api_version, headers=_headers, @@ -8441,7 +8778,7 @@ def get( if _stream: deserialized = response.iter_bytes() if _decompress else response.iter_raw() else: - deserialized = _deserialize(_models.MaintenanceConfiguration, response.json()) + deserialized = _deserialize(_models.Snapshot, response.json()) if cls: return cls(pipeline_response, deserialized, {}) # type: ignore @@ -8453,30 +8790,25 @@ def create_or_update( self, resource_group_name: str, resource_name: str, - config_name: str, - parameters: _models.MaintenanceConfiguration, + parameters: _models.Snapshot, *, content_type: str = "application/json", **kwargs: Any - ) -> _models.MaintenanceConfiguration: - """Creates or updates a maintenance configuration in the specified managed cluster. + ) -> _models.Snapshot: + """Creates or updates a snapshot. :param resource_group_name: The name of the resource group. The name is case insensitive. Required. :type resource_group_name: str :param resource_name: The name of the managed cluster resource. Required. :type resource_name: str - :param config_name: The name of the maintenance configuration. Supported values are 'default', - 'aksManagedAutoUpgradeSchedule', or 'aksManagedNodeOSUpgradeSchedule'. Required. - :type config_name: str - :param parameters: The maintenance configuration to create or update. Required. - :type parameters: ~azure.mgmt.containerservice.models.MaintenanceConfiguration + :param parameters: The snapshot to create or update. Required. + :type parameters: ~azure.mgmt.containerservice.models.Snapshot :keyword content_type: Body Parameter content-type. Content type parameter for JSON body. Default value is "application/json". :paramtype content_type: str - :return: MaintenanceConfiguration. The MaintenanceConfiguration is compatible with - MutableMapping - :rtype: ~azure.mgmt.containerservice.models.MaintenanceConfiguration + :return: Snapshot. The Snapshot is compatible with MutableMapping + :rtype: ~azure.mgmt.containerservice.models.Snapshot :raises ~azure.core.exceptions.HttpResponseError: """ @@ -8485,30 +8817,25 @@ def create_or_update( self, resource_group_name: str, resource_name: str, - config_name: str, parameters: JSON, *, content_type: str = "application/json", **kwargs: Any - ) -> _models.MaintenanceConfiguration: - """Creates or updates a maintenance configuration in the specified managed cluster. + ) -> _models.Snapshot: + """Creates or updates a snapshot. :param resource_group_name: The name of the resource group. The name is case insensitive. Required. :type resource_group_name: str :param resource_name: The name of the managed cluster resource. Required. :type resource_name: str - :param config_name: The name of the maintenance configuration. Supported values are 'default', - 'aksManagedAutoUpgradeSchedule', or 'aksManagedNodeOSUpgradeSchedule'. Required. - :type config_name: str - :param parameters: The maintenance configuration to create or update. Required. + :param parameters: The snapshot to create or update. Required. :type parameters: JSON :keyword content_type: Body Parameter content-type. Content type parameter for JSON body. Default value is "application/json". :paramtype content_type: str - :return: MaintenanceConfiguration. The MaintenanceConfiguration is compatible with - MutableMapping - :rtype: ~azure.mgmt.containerservice.models.MaintenanceConfiguration + :return: Snapshot. The Snapshot is compatible with MutableMapping + :rtype: ~azure.mgmt.containerservice.models.Snapshot :raises ~azure.core.exceptions.HttpResponseError: """ @@ -8517,30 +8844,25 @@ def create_or_update( self, resource_group_name: str, resource_name: str, - config_name: str, parameters: IO[bytes], *, content_type: str = "application/json", **kwargs: Any - ) -> _models.MaintenanceConfiguration: - """Creates or updates a maintenance configuration in the specified managed cluster. + ) -> _models.Snapshot: + """Creates or updates a snapshot. :param resource_group_name: The name of the resource group. The name is case insensitive. Required. :type resource_group_name: str :param resource_name: The name of the managed cluster resource. Required. :type resource_name: str - :param config_name: The name of the maintenance configuration. Supported values are 'default', - 'aksManagedAutoUpgradeSchedule', or 'aksManagedNodeOSUpgradeSchedule'. Required. - :type config_name: str - :param parameters: The maintenance configuration to create or update. Required. + :param parameters: The snapshot to create or update. Required. :type parameters: IO[bytes] :keyword content_type: Body Parameter content-type. Content type parameter for binary body. Default value is "application/json". :paramtype content_type: str - :return: MaintenanceConfiguration. The MaintenanceConfiguration is compatible with - MutableMapping - :rtype: ~azure.mgmt.containerservice.models.MaintenanceConfiguration + :return: Snapshot. The Snapshot is compatible with MutableMapping + :rtype: ~azure.mgmt.containerservice.models.Snapshot :raises ~azure.core.exceptions.HttpResponseError: """ @@ -8549,27 +8871,21 @@ def create_or_update( self, resource_group_name: str, resource_name: str, - config_name: str, - parameters: Union[_models.MaintenanceConfiguration, JSON, IO[bytes]], + parameters: Union[_models.Snapshot, JSON, IO[bytes]], **kwargs: Any - ) -> _models.MaintenanceConfiguration: - """Creates or updates a maintenance configuration in the specified managed cluster. + ) -> _models.Snapshot: + """Creates or updates a snapshot. :param resource_group_name: The name of the resource group. The name is case insensitive. Required. :type resource_group_name: str :param resource_name: The name of the managed cluster resource. Required. :type resource_name: str - :param config_name: The name of the maintenance configuration. Supported values are 'default', - 'aksManagedAutoUpgradeSchedule', or 'aksManagedNodeOSUpgradeSchedule'. Required. - :type config_name: str - :param parameters: The maintenance configuration to create or update. Is one of the following - types: MaintenanceConfiguration, JSON, IO[bytes] Required. - :type parameters: ~azure.mgmt.containerservice.models.MaintenanceConfiguration or JSON or - IO[bytes] - :return: MaintenanceConfiguration. The MaintenanceConfiguration is compatible with - MutableMapping - :rtype: ~azure.mgmt.containerservice.models.MaintenanceConfiguration + :param parameters: The snapshot to create or update. Is one of the following types: Snapshot, + JSON, IO[bytes] Required. + :type parameters: ~azure.mgmt.containerservice.models.Snapshot or JSON or IO[bytes] + :return: Snapshot. The Snapshot is compatible with MutableMapping + :rtype: ~azure.mgmt.containerservice.models.Snapshot :raises ~azure.core.exceptions.HttpResponseError: """ error_map: MutableMapping = { @@ -8584,7 +8900,7 @@ def create_or_update( _params = kwargs.pop("params", {}) or {} content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) - cls: ClsType[_models.MaintenanceConfiguration] = kwargs.pop("cls", None) + cls: ClsType[_models.Snapshot] = kwargs.pop("cls", None) content_type = content_type or "application/json" _content = None @@ -8593,10 +8909,9 @@ def create_or_update( else: _content = json.dumps(parameters, cls=SdkJSONEncoder, exclude_readonly=True) # type: ignore - _request = build_maintenance_configurations_create_or_update_request( + _request = build_snapshots_create_or_update_request( resource_group_name=resource_group_name, resource_name=resource_name, - config_name=config_name, subscription_id=self._config.subscription_id, content_type=content_type, api_version=self._config.api_version, @@ -8633,29 +8948,114 @@ def create_or_update( if _stream: deserialized = response.iter_bytes() if _decompress else response.iter_raw() else: - deserialized = _deserialize(_models.MaintenanceConfiguration, response.json()) + deserialized = _deserialize(_models.Snapshot, response.json()) if cls: return cls(pipeline_response, deserialized, {}) # type: ignore return deserialized # type: ignore + @overload + def update_tags( + self, + resource_group_name: str, + resource_name: str, + parameters: _models.TagsObject, + *, + content_type: str = "application/json", + **kwargs: Any + ) -> _models.Snapshot: + """Updates tags on a snapshot. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param resource_name: The name of the managed cluster resource. Required. + :type resource_name: str + :param parameters: Parameters supplied to the Update snapshot Tags operation. Required. + :type parameters: ~azure.mgmt.containerservice.models.TagsObject + :keyword content_type: Body Parameter content-type. Content type parameter for JSON body. + Default value is "application/json". + :paramtype content_type: str + :return: Snapshot. The Snapshot is compatible with MutableMapping + :rtype: ~azure.mgmt.containerservice.models.Snapshot + :raises ~azure.core.exceptions.HttpResponseError: + """ + + @overload + def update_tags( + self, + resource_group_name: str, + resource_name: str, + parameters: JSON, + *, + content_type: str = "application/json", + **kwargs: Any + ) -> _models.Snapshot: + """Updates tags on a snapshot. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param resource_name: The name of the managed cluster resource. Required. + :type resource_name: str + :param parameters: Parameters supplied to the Update snapshot Tags operation. Required. + :type parameters: JSON + :keyword content_type: Body Parameter content-type. Content type parameter for JSON body. + Default value is "application/json". + :paramtype content_type: str + :return: Snapshot. The Snapshot is compatible with MutableMapping + :rtype: ~azure.mgmt.containerservice.models.Snapshot + :raises ~azure.core.exceptions.HttpResponseError: + """ + + @overload + def update_tags( + self, + resource_group_name: str, + resource_name: str, + parameters: IO[bytes], + *, + content_type: str = "application/json", + **kwargs: Any + ) -> _models.Snapshot: + """Updates tags on a snapshot. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param resource_name: The name of the managed cluster resource. Required. + :type resource_name: str + :param parameters: Parameters supplied to the Update snapshot Tags operation. Required. + :type parameters: IO[bytes] + :keyword content_type: Body Parameter content-type. Content type parameter for binary body. + Default value is "application/json". + :paramtype content_type: str + :return: Snapshot. The Snapshot is compatible with MutableMapping + :rtype: ~azure.mgmt.containerservice.models.Snapshot + :raises ~azure.core.exceptions.HttpResponseError: + """ + @distributed_trace - def delete( # pylint: disable=inconsistent-return-statements - self, resource_group_name: str, resource_name: str, config_name: str, **kwargs: Any - ) -> None: - """Deletes a maintenance configuration. + def update_tags( + self, + resource_group_name: str, + resource_name: str, + parameters: Union[_models.TagsObject, JSON, IO[bytes]], + **kwargs: Any + ) -> _models.Snapshot: + """Updates tags on a snapshot. :param resource_group_name: The name of the resource group. The name is case insensitive. Required. :type resource_group_name: str :param resource_name: The name of the managed cluster resource. Required. :type resource_name: str - :param config_name: The name of the maintenance configuration. Supported values are 'default', - 'aksManagedAutoUpgradeSchedule', or 'aksManagedNodeOSUpgradeSchedule'. Required. - :type config_name: str - :return: None - :rtype: None + :param parameters: Parameters supplied to the Update snapshot Tags operation. Is one of the + following types: TagsObject, JSON, IO[bytes] Required. + :type parameters: ~azure.mgmt.containerservice.models.TagsObject or JSON or IO[bytes] + :return: Snapshot. The Snapshot is compatible with MutableMapping + :rtype: ~azure.mgmt.containerservice.models.Snapshot :raises ~azure.core.exceptions.HttpResponseError: """ error_map: MutableMapping = { @@ -8666,17 +9066,26 @@ def delete( # pylint: disable=inconsistent-return-statements } error_map.update(kwargs.pop("error_map", {}) or {}) - _headers = kwargs.pop("headers", {}) or {} + _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) _params = kwargs.pop("params", {}) or {} - cls: ClsType[None] = kwargs.pop("cls", None) + content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) + cls: ClsType[_models.Snapshot] = kwargs.pop("cls", None) - _request = build_maintenance_configurations_delete_request( + content_type = content_type or "application/json" + _content = None + if isinstance(parameters, (IOBase, bytes)): + _content = parameters + else: + _content = json.dumps(parameters, cls=SdkJSONEncoder, exclude_readonly=True) # type: ignore + + _request = build_snapshots_update_tags_request( resource_group_name=resource_group_name, resource_name=resource_name, - config_name=config_name, subscription_id=self._config.subscription_id, + content_type=content_type, api_version=self._config.api_version, + content=_content, headers=_headers, params=_params, ) @@ -8685,14 +9094,20 @@ def delete( # pylint: disable=inconsistent-return-statements } _request.url = self._client.format_url(_request.url, **path_format_arguments) - _stream = False + _decompress = kwargs.pop("decompress", True) + _stream = kwargs.pop("stream", False) pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access _request, stream=_stream, **kwargs ) response = pipeline_response.http_response - if response.status_code not in [200, 204]: + if response.status_code not in [200]: + if _stream: + try: + response.read() # Load the body in memory and close the socket + except (StreamConsumedError, StreamClosedError): + pass map_error(status_code=response.status_code, response=response, error_map=error_map) error = _failsafe_deserialize( _models.ErrorResponse, @@ -8700,30 +9115,31 @@ def delete( # pylint: disable=inconsistent-return-statements ) raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + if _stream: + deserialized = response.iter_bytes() if _decompress else response.iter_raw() + else: + deserialized = _deserialize(_models.Snapshot, response.json()) + if cls: - return cls(pipeline_response, None, {}) # type: ignore + return cls(pipeline_response, deserialized, {}) # type: ignore + + return deserialized # type: ignore @distributed_trace - def list_by_managed_cluster( + def delete( # pylint: disable=inconsistent-return-statements self, resource_group_name: str, resource_name: str, **kwargs: Any - ) -> ItemPaged["_models.MaintenanceConfiguration"]: - """Gets a list of maintenance configurations in the specified managed cluster. + ) -> None: + """Deletes a snapshot. :param resource_group_name: The name of the resource group. The name is case insensitive. Required. :type resource_group_name: str :param resource_name: The name of the managed cluster resource. Required. :type resource_name: str - :return: An iterator like instance of MaintenanceConfiguration - :rtype: - ~azure.core.paging.ItemPaged[~azure.mgmt.containerservice.models.MaintenanceConfiguration] + :return: None + :rtype: None :raises ~azure.core.exceptions.HttpResponseError: """ - _headers = kwargs.pop("headers", {}) or {} - _params = kwargs.pop("params", {}) or {} - - cls: ClsType[List[_models.MaintenanceConfiguration]] = kwargs.pop("cls", None) - error_map: MutableMapping = { 401: ClientAuthenticationError, 404: ResourceNotFoundError, @@ -8732,38 +9148,97 @@ def list_by_managed_cluster( } error_map.update(kwargs.pop("error_map", {}) or {}) - def prepare_request(next_link=None): - if not next_link: + _headers = kwargs.pop("headers", {}) or {} + _params = kwargs.pop("params", {}) or {} - _request = build_maintenance_configurations_list_by_managed_cluster_request( - resource_group_name=resource_group_name, - resource_name=resource_name, - subscription_id=self._config.subscription_id, - api_version=self._config.api_version, - headers=_headers, - params=_params, - ) - path_format_arguments = { - "endpoint": self._serialize.url( - "self._config.base_url", self._config.base_url, "str", skip_quote=True - ), - } - _request.url = self._client.format_url(_request.url, **path_format_arguments) + cls: ClsType[None] = kwargs.pop("cls", None) - else: - # make call to next link with the client's api-version - _parsed_next_link = urllib.parse.urlparse(next_link) - _next_request_params = case_insensitive_dict( - { - key: [urllib.parse.quote(v) for v in value] - for key, value in urllib.parse.parse_qs(_parsed_next_link.query).items() - } - ) - _next_request_params["api-version"] = self._config.api_version - _request = HttpRequest( - "GET", - urllib.parse.urljoin(next_link, _parsed_next_link.path), - headers=_headers, + _request = build_snapshots_delete_request( + resource_group_name=resource_group_name, + resource_name=resource_name, + subscription_id=self._config.subscription_id, + api_version=self._config.api_version, + headers=_headers, + params=_params, + ) + path_format_arguments = { + "endpoint": self._serialize.url("self._config.base_url", self._config.base_url, "str", skip_quote=True), + } + _request.url = self._client.format_url(_request.url, **path_format_arguments) + + _stream = False + pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access + _request, stream=_stream, **kwargs + ) + + response = pipeline_response.http_response + + if response.status_code not in [200, 204]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + error = _failsafe_deserialize( + _models.ErrorResponse, + response, + ) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + if cls: + return cls(pipeline_response, None, {}) # type: ignore + + @distributed_trace + def list_by_resource_group(self, resource_group_name: str, **kwargs: Any) -> ItemPaged["_models.Snapshot"]: + """Lists snapshots in the specified subscription and resource group. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :return: An iterator like instance of Snapshot + :rtype: ~azure.core.paging.ItemPaged[~azure.mgmt.containerservice.models.Snapshot] + :raises ~azure.core.exceptions.HttpResponseError: + """ + _headers = kwargs.pop("headers", {}) or {} + _params = kwargs.pop("params", {}) or {} + + cls: ClsType[List[_models.Snapshot]] = kwargs.pop("cls", None) + + error_map: MutableMapping = { + 401: ClientAuthenticationError, + 404: ResourceNotFoundError, + 409: ResourceExistsError, + 304: ResourceNotModifiedError, + } + error_map.update(kwargs.pop("error_map", {}) or {}) + + def prepare_request(next_link=None): + if not next_link: + + _request = build_snapshots_list_by_resource_group_request( + resource_group_name=resource_group_name, + subscription_id=self._config.subscription_id, + api_version=self._config.api_version, + headers=_headers, + params=_params, + ) + path_format_arguments = { + "endpoint": self._serialize.url( + "self._config.base_url", self._config.base_url, "str", skip_quote=True + ), + } + _request.url = self._client.format_url(_request.url, **path_format_arguments) + + else: + # make call to next link with the client's api-version + _parsed_next_link = urllib.parse.urlparse(next_link) + _next_request_params = case_insensitive_dict( + { + key: [urllib.parse.quote(v) for v in value] + for key, value in urllib.parse.parse_qs(_parsed_next_link.query).items() + } + ) + _next_request_params["api-version"] = self._config.api_version + _request = HttpRequest( + "GET", + urllib.parse.urljoin(next_link, _parsed_next_link.path), + headers=_headers, params=_next_request_params, ) path_format_arguments = { @@ -8778,7 +9253,7 @@ def prepare_request(next_link=None): def extract_data(pipeline_response): deserialized = pipeline_response.http_response.json() list_of_elem = _deserialize( - List[_models.MaintenanceConfiguration], + List[_models.Snapshot], deserialized.get("value", []), ) if cls: @@ -8806,15 +9281,108 @@ def get_next(next_link=None): return ItemPaged(get_next, extract_data) + @distributed_trace + def list(self, **kwargs: Any) -> ItemPaged["_models.Snapshot"]: + """Gets a list of snapshots in the specified subscription. -class ManagedNamespacesOperations: + :return: An iterator like instance of Snapshot + :rtype: ~azure.core.paging.ItemPaged[~azure.mgmt.containerservice.models.Snapshot] + :raises ~azure.core.exceptions.HttpResponseError: + """ + _headers = kwargs.pop("headers", {}) or {} + _params = kwargs.pop("params", {}) or {} + + cls: ClsType[List[_models.Snapshot]] = kwargs.pop("cls", None) + + error_map: MutableMapping = { + 401: ClientAuthenticationError, + 404: ResourceNotFoundError, + 409: ResourceExistsError, + 304: ResourceNotModifiedError, + } + error_map.update(kwargs.pop("error_map", {}) or {}) + + def prepare_request(next_link=None): + if not next_link: + + _request = build_snapshots_list_request( + subscription_id=self._config.subscription_id, + api_version=self._config.api_version, + headers=_headers, + params=_params, + ) + path_format_arguments = { + "endpoint": self._serialize.url( + "self._config.base_url", self._config.base_url, "str", skip_quote=True + ), + } + _request.url = self._client.format_url(_request.url, **path_format_arguments) + + else: + # make call to next link with the client's api-version + _parsed_next_link = urllib.parse.urlparse(next_link) + _next_request_params = case_insensitive_dict( + { + key: [urllib.parse.quote(v) for v in value] + for key, value in urllib.parse.parse_qs(_parsed_next_link.query).items() + } + ) + _next_request_params["api-version"] = self._config.api_version + _request = HttpRequest( + "GET", + urllib.parse.urljoin(next_link, _parsed_next_link.path), + headers=_headers, + params=_next_request_params, + ) + path_format_arguments = { + "endpoint": self._serialize.url( + "self._config.base_url", self._config.base_url, "str", skip_quote=True + ), + } + _request.url = self._client.format_url(_request.url, **path_format_arguments) + + return _request + + def extract_data(pipeline_response): + deserialized = pipeline_response.http_response.json() + list_of_elem = _deserialize( + List[_models.Snapshot], + deserialized.get("value", []), + ) + if cls: + list_of_elem = cls(list_of_elem) # type: ignore + return deserialized.get("nextLink") or None, iter(list_of_elem) + + def get_next(next_link=None): + _request = prepare_request(next_link) + + _stream = False + pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access + _request, stream=_stream, **kwargs + ) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + error = _failsafe_deserialize( + _models.ErrorResponse, + response, + ) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + return pipeline_response + + return ItemPaged(get_next, extract_data) + + +class TrustedAccessRoleBindingsOperations: """ .. warning:: **DO NOT** instantiate this class directly. Instead, you should access the following operations through :class:`~azure.mgmt.containerservice.ContainerServiceClient`'s - :attr:`managed_namespaces` attribute. + :attr:`trusted_access_role_bindings` attribute. """ def __init__(self, *args, **kwargs) -> None: @@ -8826,19 +9394,20 @@ def __init__(self, *args, **kwargs) -> None: @distributed_trace def get( - self, resource_group_name: str, resource_name: str, managed_namespace_name: str, **kwargs: Any - ) -> _models.ManagedNamespace: - """Gets the specified namespace of a managed cluster. + self, resource_group_name: str, resource_name: str, trusted_access_role_binding_name: str, **kwargs: Any + ) -> _models.TrustedAccessRoleBinding: + """Get a trusted access role binding. :param resource_group_name: The name of the resource group. The name is case insensitive. Required. :type resource_group_name: str :param resource_name: The name of the managed cluster resource. Required. :type resource_name: str - :param managed_namespace_name: The name of the managed namespace. Required. - :type managed_namespace_name: str - :return: ManagedNamespace. The ManagedNamespace is compatible with MutableMapping - :rtype: ~azure.mgmt.containerservice.models.ManagedNamespace + :param trusted_access_role_binding_name: The name of trusted access role binding. Required. + :type trusted_access_role_binding_name: str + :return: TrustedAccessRoleBinding. The TrustedAccessRoleBinding is compatible with + MutableMapping + :rtype: ~azure.mgmt.containerservice.models.TrustedAccessRoleBinding :raises ~azure.core.exceptions.HttpResponseError: """ error_map: MutableMapping = { @@ -8852,12 +9421,12 @@ def get( _headers = kwargs.pop("headers", {}) or {} _params = kwargs.pop("params", {}) or {} - cls: ClsType[_models.ManagedNamespace] = kwargs.pop("cls", None) + cls: ClsType[_models.TrustedAccessRoleBinding] = kwargs.pop("cls", None) - _request = build_managed_namespaces_get_request( + _request = build_trusted_access_role_bindings_get_request( resource_group_name=resource_group_name, resource_name=resource_name, - managed_namespace_name=managed_namespace_name, + trusted_access_role_binding_name=trusted_access_role_binding_name, subscription_id=self._config.subscription_id, api_version=self._config.api_version, headers=_headers, @@ -8892,7 +9461,7 @@ def get( if _stream: deserialized = response.iter_bytes() if _decompress else response.iter_raw() else: - deserialized = _deserialize(_models.ManagedNamespace, response.json()) + deserialized = _deserialize(_models.TrustedAccessRoleBinding, response.json()) if cls: return cls(pipeline_response, deserialized, {}) # type: ignore @@ -8903,8 +9472,8 @@ def _create_or_update_initial( self, resource_group_name: str, resource_name: str, - managed_namespace_name: str, - parameters: Union[_models.ManagedNamespace, JSON, IO[bytes]], + trusted_access_role_binding_name: str, + trusted_access_role_binding: Union[_models.TrustedAccessRoleBinding, JSON, IO[bytes]], **kwargs: Any ) -> Iterator[bytes]: error_map: MutableMapping = { @@ -8923,15 +9492,15 @@ def _create_or_update_initial( content_type = content_type or "application/json" _content = None - if isinstance(parameters, (IOBase, bytes)): - _content = parameters + if isinstance(trusted_access_role_binding, (IOBase, bytes)): + _content = trusted_access_role_binding else: - _content = json.dumps(parameters, cls=SdkJSONEncoder, exclude_readonly=True) # type: ignore + _content = json.dumps(trusted_access_role_binding, cls=SdkJSONEncoder, exclude_readonly=True) # type: ignore - _request = build_managed_namespaces_create_or_update_request( + _request = build_trusted_access_role_bindings_create_or_update_request( resource_group_name=resource_group_name, resource_name=resource_name, - managed_namespace_name=managed_namespace_name, + trusted_access_role_binding_name=trusted_access_role_binding_name, subscription_id=self._config.subscription_id, content_type=content_type, api_version=self._config.api_version, @@ -8983,31 +9552,30 @@ def begin_create_or_update( self, resource_group_name: str, resource_name: str, - managed_namespace_name: str, - parameters: _models.ManagedNamespace, + trusted_access_role_binding_name: str, + trusted_access_role_binding: _models.TrustedAccessRoleBinding, *, content_type: str = "application/json", **kwargs: Any - ) -> LROPoller[_models.ManagedNamespace]: - """Creates or updates a namespace managed by ARM for the specified managed cluster. Users can - configure aspects like resource quotas, network ingress/egress policies, and more. See - aka.ms/aks/managed-namespaces for more details. + ) -> LROPoller[_models.TrustedAccessRoleBinding]: + """Create or update a trusted access role binding. :param resource_group_name: The name of the resource group. The name is case insensitive. Required. :type resource_group_name: str :param resource_name: The name of the managed cluster resource. Required. :type resource_name: str - :param managed_namespace_name: The name of the managed namespace. Required. - :type managed_namespace_name: str - :param parameters: The namespace to create or update. Required. - :type parameters: ~azure.mgmt.containerservice.models.ManagedNamespace + :param trusted_access_role_binding_name: The name of trusted access role binding. Required. + :type trusted_access_role_binding_name: str + :param trusted_access_role_binding: A trusted access role binding. Required. + :type trusted_access_role_binding: ~azure.mgmt.containerservice.models.TrustedAccessRoleBinding :keyword content_type: Body Parameter content-type. Content type parameter for JSON body. Default value is "application/json". :paramtype content_type: str - :return: An instance of LROPoller that returns ManagedNamespace. The ManagedNamespace is - compatible with MutableMapping - :rtype: ~azure.core.polling.LROPoller[~azure.mgmt.containerservice.models.ManagedNamespace] + :return: An instance of LROPoller that returns TrustedAccessRoleBinding. The + TrustedAccessRoleBinding is compatible with MutableMapping + :rtype: + ~azure.core.polling.LROPoller[~azure.mgmt.containerservice.models.TrustedAccessRoleBinding] :raises ~azure.core.exceptions.HttpResponseError: """ @@ -9016,31 +9584,30 @@ def begin_create_or_update( self, resource_group_name: str, resource_name: str, - managed_namespace_name: str, - parameters: JSON, + trusted_access_role_binding_name: str, + trusted_access_role_binding: JSON, *, content_type: str = "application/json", **kwargs: Any - ) -> LROPoller[_models.ManagedNamespace]: - """Creates or updates a namespace managed by ARM for the specified managed cluster. Users can - configure aspects like resource quotas, network ingress/egress policies, and more. See - aka.ms/aks/managed-namespaces for more details. - + ) -> LROPoller[_models.TrustedAccessRoleBinding]: + """Create or update a trusted access role binding. + :param resource_group_name: The name of the resource group. The name is case insensitive. Required. :type resource_group_name: str :param resource_name: The name of the managed cluster resource. Required. :type resource_name: str - :param managed_namespace_name: The name of the managed namespace. Required. - :type managed_namespace_name: str - :param parameters: The namespace to create or update. Required. - :type parameters: JSON + :param trusted_access_role_binding_name: The name of trusted access role binding. Required. + :type trusted_access_role_binding_name: str + :param trusted_access_role_binding: A trusted access role binding. Required. + :type trusted_access_role_binding: JSON :keyword content_type: Body Parameter content-type. Content type parameter for JSON body. Default value is "application/json". :paramtype content_type: str - :return: An instance of LROPoller that returns ManagedNamespace. The ManagedNamespace is - compatible with MutableMapping - :rtype: ~azure.core.polling.LROPoller[~azure.mgmt.containerservice.models.ManagedNamespace] + :return: An instance of LROPoller that returns TrustedAccessRoleBinding. The + TrustedAccessRoleBinding is compatible with MutableMapping + :rtype: + ~azure.core.polling.LROPoller[~azure.mgmt.containerservice.models.TrustedAccessRoleBinding] :raises ~azure.core.exceptions.HttpResponseError: """ @@ -9049,31 +9616,30 @@ def begin_create_or_update( self, resource_group_name: str, resource_name: str, - managed_namespace_name: str, - parameters: IO[bytes], + trusted_access_role_binding_name: str, + trusted_access_role_binding: IO[bytes], *, content_type: str = "application/json", **kwargs: Any - ) -> LROPoller[_models.ManagedNamespace]: - """Creates or updates a namespace managed by ARM for the specified managed cluster. Users can - configure aspects like resource quotas, network ingress/egress policies, and more. See - aka.ms/aks/managed-namespaces for more details. + ) -> LROPoller[_models.TrustedAccessRoleBinding]: + """Create or update a trusted access role binding. :param resource_group_name: The name of the resource group. The name is case insensitive. Required. :type resource_group_name: str :param resource_name: The name of the managed cluster resource. Required. :type resource_name: str - :param managed_namespace_name: The name of the managed namespace. Required. - :type managed_namespace_name: str - :param parameters: The namespace to create or update. Required. - :type parameters: IO[bytes] + :param trusted_access_role_binding_name: The name of trusted access role binding. Required. + :type trusted_access_role_binding_name: str + :param trusted_access_role_binding: A trusted access role binding. Required. + :type trusted_access_role_binding: IO[bytes] :keyword content_type: Body Parameter content-type. Content type parameter for binary body. Default value is "application/json". :paramtype content_type: str - :return: An instance of LROPoller that returns ManagedNamespace. The ManagedNamespace is - compatible with MutableMapping - :rtype: ~azure.core.polling.LROPoller[~azure.mgmt.containerservice.models.ManagedNamespace] + :return: An instance of LROPoller that returns TrustedAccessRoleBinding. The + TrustedAccessRoleBinding is compatible with MutableMapping + :rtype: + ~azure.core.polling.LROPoller[~azure.mgmt.containerservice.models.TrustedAccessRoleBinding] :raises ~azure.core.exceptions.HttpResponseError: """ @@ -9082,34 +9648,34 @@ def begin_create_or_update( self, resource_group_name: str, resource_name: str, - managed_namespace_name: str, - parameters: Union[_models.ManagedNamespace, JSON, IO[bytes]], + trusted_access_role_binding_name: str, + trusted_access_role_binding: Union[_models.TrustedAccessRoleBinding, JSON, IO[bytes]], **kwargs: Any - ) -> LROPoller[_models.ManagedNamespace]: - """Creates or updates a namespace managed by ARM for the specified managed cluster. Users can - configure aspects like resource quotas, network ingress/egress policies, and more. See - aka.ms/aks/managed-namespaces for more details. + ) -> LROPoller[_models.TrustedAccessRoleBinding]: + """Create or update a trusted access role binding. :param resource_group_name: The name of the resource group. The name is case insensitive. Required. :type resource_group_name: str :param resource_name: The name of the managed cluster resource. Required. :type resource_name: str - :param managed_namespace_name: The name of the managed namespace. Required. - :type managed_namespace_name: str - :param parameters: The namespace to create or update. Is one of the following types: - ManagedNamespace, JSON, IO[bytes] Required. - :type parameters: ~azure.mgmt.containerservice.models.ManagedNamespace or JSON or IO[bytes] - :return: An instance of LROPoller that returns ManagedNamespace. The ManagedNamespace is - compatible with MutableMapping - :rtype: ~azure.core.polling.LROPoller[~azure.mgmt.containerservice.models.ManagedNamespace] + :param trusted_access_role_binding_name: The name of trusted access role binding. Required. + :type trusted_access_role_binding_name: str + :param trusted_access_role_binding: A trusted access role binding. Is one of the following + types: TrustedAccessRoleBinding, JSON, IO[bytes] Required. + :type trusted_access_role_binding: ~azure.mgmt.containerservice.models.TrustedAccessRoleBinding + or JSON or IO[bytes] + :return: An instance of LROPoller that returns TrustedAccessRoleBinding. The + TrustedAccessRoleBinding is compatible with MutableMapping + :rtype: + ~azure.core.polling.LROPoller[~azure.mgmt.containerservice.models.TrustedAccessRoleBinding] :raises ~azure.core.exceptions.HttpResponseError: """ _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) _params = kwargs.pop("params", {}) or {} content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) - cls: ClsType[_models.ManagedNamespace] = kwargs.pop("cls", None) + cls: ClsType[_models.TrustedAccessRoleBinding] = kwargs.pop("cls", None) polling: Union[bool, PollingMethod] = kwargs.pop("polling", True) lro_delay = kwargs.pop("polling_interval", self._config.polling_interval) cont_token: Optional[str] = kwargs.pop("continuation_token", None) @@ -9117,8 +9683,8 @@ def begin_create_or_update( raw_result = self._create_or_update_initial( resource_group_name=resource_group_name, resource_name=resource_name, - managed_namespace_name=managed_namespace_name, - parameters=parameters, + trusted_access_role_binding_name=trusted_access_role_binding_name, + trusted_access_role_binding=trusted_access_role_binding, content_type=content_type, cls=lambda x, y, z: x, headers=_headers, @@ -9130,7 +9696,7 @@ def begin_create_or_update( def get_long_running_output(pipeline_response): response = pipeline_response.http_response - deserialized = _deserialize(_models.ManagedNamespace, response.json()) + deserialized = _deserialize(_models.TrustedAccessRoleBinding, response.json()) if cls: return cls(pipeline_response, deserialized, {}) # type: ignore return deserialized @@ -9148,134 +9714,19 @@ def get_long_running_output(pipeline_response): else: polling_method = polling if cont_token: - return LROPoller[_models.ManagedNamespace].from_continuation_token( + return LROPoller[_models.TrustedAccessRoleBinding].from_continuation_token( polling_method=polling_method, continuation_token=cont_token, client=self._client, deserialization_callback=get_long_running_output, ) - return LROPoller[_models.ManagedNamespace]( + return LROPoller[_models.TrustedAccessRoleBinding]( self._client, raw_result, get_long_running_output, polling_method # type: ignore ) - @overload - def update( - self, - resource_group_name: str, - resource_name: str, - managed_namespace_name: str, - parameters: _models.TagsObject, - *, - content_type: str = "application/json", - **kwargs: Any - ) -> _models.ManagedNamespace: - """Updates tags on a managed namespace. - - :param resource_group_name: The name of the resource group. The name is case insensitive. - Required. - :type resource_group_name: str - :param resource_name: The name of the managed cluster resource. Required. - :type resource_name: str - :param managed_namespace_name: The name of the managed namespace. Required. - :type managed_namespace_name: str - :param parameters: Parameters supplied to the patch namespace operation, we only support patch - tags for now. Required. - :type parameters: ~azure.mgmt.containerservice.models.TagsObject - :keyword content_type: Body Parameter content-type. Content type parameter for JSON body. - Default value is "application/json". - :paramtype content_type: str - :return: ManagedNamespace. The ManagedNamespace is compatible with MutableMapping - :rtype: ~azure.mgmt.containerservice.models.ManagedNamespace - :raises ~azure.core.exceptions.HttpResponseError: - """ - - @overload - def update( - self, - resource_group_name: str, - resource_name: str, - managed_namespace_name: str, - parameters: JSON, - *, - content_type: str = "application/json", - **kwargs: Any - ) -> _models.ManagedNamespace: - """Updates tags on a managed namespace. - - :param resource_group_name: The name of the resource group. The name is case insensitive. - Required. - :type resource_group_name: str - :param resource_name: The name of the managed cluster resource. Required. - :type resource_name: str - :param managed_namespace_name: The name of the managed namespace. Required. - :type managed_namespace_name: str - :param parameters: Parameters supplied to the patch namespace operation, we only support patch - tags for now. Required. - :type parameters: JSON - :keyword content_type: Body Parameter content-type. Content type parameter for JSON body. - Default value is "application/json". - :paramtype content_type: str - :return: ManagedNamespace. The ManagedNamespace is compatible with MutableMapping - :rtype: ~azure.mgmt.containerservice.models.ManagedNamespace - :raises ~azure.core.exceptions.HttpResponseError: - """ - - @overload - def update( - self, - resource_group_name: str, - resource_name: str, - managed_namespace_name: str, - parameters: IO[bytes], - *, - content_type: str = "application/json", - **kwargs: Any - ) -> _models.ManagedNamespace: - """Updates tags on a managed namespace. - - :param resource_group_name: The name of the resource group. The name is case insensitive. - Required. - :type resource_group_name: str - :param resource_name: The name of the managed cluster resource. Required. - :type resource_name: str - :param managed_namespace_name: The name of the managed namespace. Required. - :type managed_namespace_name: str - :param parameters: Parameters supplied to the patch namespace operation, we only support patch - tags for now. Required. - :type parameters: IO[bytes] - :keyword content_type: Body Parameter content-type. Content type parameter for binary body. - Default value is "application/json". - :paramtype content_type: str - :return: ManagedNamespace. The ManagedNamespace is compatible with MutableMapping - :rtype: ~azure.mgmt.containerservice.models.ManagedNamespace - :raises ~azure.core.exceptions.HttpResponseError: - """ - - @distributed_trace - def update( - self, - resource_group_name: str, - resource_name: str, - managed_namespace_name: str, - parameters: Union[_models.TagsObject, JSON, IO[bytes]], - **kwargs: Any - ) -> _models.ManagedNamespace: - """Updates tags on a managed namespace. - - :param resource_group_name: The name of the resource group. The name is case insensitive. - Required. - :type resource_group_name: str - :param resource_name: The name of the managed cluster resource. Required. - :type resource_name: str - :param managed_namespace_name: The name of the managed namespace. Required. - :type managed_namespace_name: str - :param parameters: Parameters supplied to the patch namespace operation, we only support patch - tags for now. Is one of the following types: TagsObject, JSON, IO[bytes] Required. - :type parameters: ~azure.mgmt.containerservice.models.TagsObject or JSON or IO[bytes] - :return: ManagedNamespace. The ManagedNamespace is compatible with MutableMapping - :rtype: ~azure.mgmt.containerservice.models.ManagedNamespace - :raises ~azure.core.exceptions.HttpResponseError: - """ + def _delete_initial( + self, resource_group_name: str, resource_name: str, trusted_access_role_binding_name: str, **kwargs: Any + ) -> Iterator[bytes]: error_map: MutableMapping = { 401: ClientAuthenticationError, 404: ResourceNotFoundError, @@ -9284,27 +9735,17 @@ def update( } error_map.update(kwargs.pop("error_map", {}) or {}) - _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) + _headers = kwargs.pop("headers", {}) or {} _params = kwargs.pop("params", {}) or {} - content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) - cls: ClsType[_models.ManagedNamespace] = kwargs.pop("cls", None) - - content_type = content_type or "application/json" - _content = None - if isinstance(parameters, (IOBase, bytes)): - _content = parameters - else: - _content = json.dumps(parameters, cls=SdkJSONEncoder, exclude_readonly=True) # type: ignore + cls: ClsType[Iterator[bytes]] = kwargs.pop("cls", None) - _request = build_managed_namespaces_update_request( + _request = build_trusted_access_role_bindings_delete_request( resource_group_name=resource_group_name, resource_name=resource_name, - managed_namespace_name=managed_namespace_name, + trusted_access_role_binding_name=trusted_access_role_binding_name, subscription_id=self._config.subscription_id, - content_type=content_type, api_version=self._config.api_version, - content=_content, headers=_headers, params=_params, ) @@ -9314,19 +9755,18 @@ def update( _request.url = self._client.format_url(_request.url, **path_format_arguments) _decompress = kwargs.pop("decompress", True) - _stream = kwargs.pop("stream", False) + _stream = True pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access _request, stream=_stream, **kwargs ) response = pipeline_response.http_response - if response.status_code not in [200]: - if _stream: - try: - response.read() # Load the body in memory and close the socket - except (StreamConsumedError, StreamClosedError): - pass + if response.status_code not in [202, 204]: + try: + response.read() # Load the body in memory and close the socket + except (StreamConsumedError, StreamClosedError): + pass map_error(status_code=response.status_code, response=response, error_map=error_map) error = _failsafe_deserialize( _models.ErrorResponse, @@ -9334,94 +9774,34 @@ def update( ) raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - if _stream: - deserialized = response.iter_bytes() if _decompress else response.iter_raw() - else: - deserialized = _deserialize(_models.ManagedNamespace, response.json()) + response_headers = {} + if response.status_code == 202: + response_headers["Azure-AsyncOperation"] = self._deserialize( + "str", response.headers.get("Azure-AsyncOperation") + ) + response_headers["Location"] = self._deserialize("str", response.headers.get("Location")) + response_headers["Retry-After"] = self._deserialize("int", response.headers.get("Retry-After")) + + deserialized = response.iter_bytes() if _decompress else response.iter_raw() if cls: - return cls(pipeline_response, deserialized, {}) # type: ignore - - return deserialized # type: ignore - - def _delete_initial( - self, resource_group_name: str, resource_name: str, managed_namespace_name: str, **kwargs: Any - ) -> Iterator[bytes]: - error_map: MutableMapping = { - 401: ClientAuthenticationError, - 404: ResourceNotFoundError, - 409: ResourceExistsError, - 304: ResourceNotModifiedError, - } - error_map.update(kwargs.pop("error_map", {}) or {}) - - _headers = kwargs.pop("headers", {}) or {} - _params = kwargs.pop("params", {}) or {} - - cls: ClsType[Iterator[bytes]] = kwargs.pop("cls", None) - - _request = build_managed_namespaces_delete_request( - resource_group_name=resource_group_name, - resource_name=resource_name, - managed_namespace_name=managed_namespace_name, - subscription_id=self._config.subscription_id, - api_version=self._config.api_version, - headers=_headers, - params=_params, - ) - path_format_arguments = { - "endpoint": self._serialize.url("self._config.base_url", self._config.base_url, "str", skip_quote=True), - } - _request.url = self._client.format_url(_request.url, **path_format_arguments) - - _decompress = kwargs.pop("decompress", True) - _stream = True - pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access - _request, stream=_stream, **kwargs - ) - - response = pipeline_response.http_response - - if response.status_code not in [202, 204]: - try: - response.read() # Load the body in memory and close the socket - except (StreamConsumedError, StreamClosedError): - pass - map_error(status_code=response.status_code, response=response, error_map=error_map) - error = _failsafe_deserialize( - _models.ErrorResponse, - response, - ) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - - response_headers = {} - if response.status_code == 202: - response_headers["Azure-AsyncOperation"] = self._deserialize( - "str", response.headers.get("Azure-AsyncOperation") - ) - response_headers["Location"] = self._deserialize("str", response.headers.get("Location")) - response_headers["Retry-After"] = self._deserialize("int", response.headers.get("Retry-After")) - - deserialized = response.iter_bytes() if _decompress else response.iter_raw() - - if cls: - return cls(pipeline_response, deserialized, response_headers) # type: ignore + return cls(pipeline_response, deserialized, response_headers) # type: ignore return deserialized # type: ignore @distributed_trace def begin_delete( - self, resource_group_name: str, resource_name: str, managed_namespace_name: str, **kwargs: Any + self, resource_group_name: str, resource_name: str, trusted_access_role_binding_name: str, **kwargs: Any ) -> LROPoller[None]: - """Deletes a namespace. + """Delete a trusted access role binding. :param resource_group_name: The name of the resource group. The name is case insensitive. Required. :type resource_group_name: str :param resource_name: The name of the managed cluster resource. Required. :type resource_name: str - :param managed_namespace_name: The name of the managed namespace. Required. - :type managed_namespace_name: str + :param trusted_access_role_binding_name: The name of trusted access role binding. Required. + :type trusted_access_role_binding_name: str :return: An instance of LROPoller that returns None :rtype: ~azure.core.polling.LROPoller[None] :raises ~azure.core.exceptions.HttpResponseError: @@ -9437,7 +9817,7 @@ def begin_delete( raw_result = self._delete_initial( resource_group_name=resource_group_name, resource_name=resource_name, - managed_namespace_name=managed_namespace_name, + trusted_access_role_binding_name=trusted_access_role_binding_name, cls=lambda x, y, z: x, headers=_headers, params=_params, @@ -9472,24 +9852,25 @@ def get_long_running_output(pipeline_response): # pylint: disable=inconsistent- return LROPoller[None](self._client, raw_result, get_long_running_output, polling_method) # type: ignore @distributed_trace - def list_by_managed_cluster( + def list( self, resource_group_name: str, resource_name: str, **kwargs: Any - ) -> ItemPaged["_models.ManagedNamespace"]: - """Gets a list of managed namespaces in the specified managed cluster. + ) -> ItemPaged["_models.TrustedAccessRoleBinding"]: + """List trusted access role bindings. :param resource_group_name: The name of the resource group. The name is case insensitive. Required. :type resource_group_name: str :param resource_name: The name of the managed cluster resource. Required. :type resource_name: str - :return: An iterator like instance of ManagedNamespace - :rtype: ~azure.core.paging.ItemPaged[~azure.mgmt.containerservice.models.ManagedNamespace] + :return: An iterator like instance of TrustedAccessRoleBinding + :rtype: + ~azure.core.paging.ItemPaged[~azure.mgmt.containerservice.models.TrustedAccessRoleBinding] :raises ~azure.core.exceptions.HttpResponseError: """ _headers = kwargs.pop("headers", {}) or {} _params = kwargs.pop("params", {}) or {} - cls: ClsType[List[_models.ManagedNamespace]] = kwargs.pop("cls", None) + cls: ClsType[List[_models.TrustedAccessRoleBinding]] = kwargs.pop("cls", None) error_map: MutableMapping = { 401: ClientAuthenticationError, @@ -9502,7 +9883,7 @@ def list_by_managed_cluster( def prepare_request(next_link=None): if not next_link: - _request = build_managed_namespaces_list_by_managed_cluster_request( + _request = build_trusted_access_role_bindings_list_request( resource_group_name=resource_group_name, resource_name=resource_name, subscription_id=self._config.subscription_id, @@ -9545,7 +9926,7 @@ def prepare_request(next_link=None): def extract_data(pipeline_response): deserialized = pipeline_response.http_response.json() list_of_elem = _deserialize( - List[_models.ManagedNamespace], + List[_models.TrustedAccessRoleBinding], deserialized.get("value", []), ) if cls: @@ -9573,90 +9954,15 @@ def get_next(next_link=None): return ItemPaged(get_next, extract_data) - @distributed_trace - def list_credential( - self, resource_group_name: str, resource_name: str, managed_namespace_name: str, **kwargs: Any - ) -> _models.CredentialResults: - """Lists the credentials of a namespace. - - :param resource_group_name: The name of the resource group. The name is case insensitive. - Required. - :type resource_group_name: str - :param resource_name: The name of the managed cluster resource. Required. - :type resource_name: str - :param managed_namespace_name: The name of the managed namespace. Required. - :type managed_namespace_name: str - :return: CredentialResults. The CredentialResults is compatible with MutableMapping - :rtype: ~azure.mgmt.containerservice.models.CredentialResults - :raises ~azure.core.exceptions.HttpResponseError: - """ - error_map: MutableMapping = { - 401: ClientAuthenticationError, - 404: ResourceNotFoundError, - 409: ResourceExistsError, - 304: ResourceNotModifiedError, - } - error_map.update(kwargs.pop("error_map", {}) or {}) - - _headers = kwargs.pop("headers", {}) or {} - _params = kwargs.pop("params", {}) or {} - - cls: ClsType[_models.CredentialResults] = kwargs.pop("cls", None) - - _request = build_managed_namespaces_list_credential_request( - resource_group_name=resource_group_name, - resource_name=resource_name, - managed_namespace_name=managed_namespace_name, - subscription_id=self._config.subscription_id, - api_version=self._config.api_version, - headers=_headers, - params=_params, - ) - path_format_arguments = { - "endpoint": self._serialize.url("self._config.base_url", self._config.base_url, "str", skip_quote=True), - } - _request.url = self._client.format_url(_request.url, **path_format_arguments) - - _decompress = kwargs.pop("decompress", True) - _stream = kwargs.pop("stream", False) - pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access - _request, stream=_stream, **kwargs - ) - - response = pipeline_response.http_response - - if response.status_code not in [200]: - if _stream: - try: - response.read() # Load the body in memory and close the socket - except (StreamConsumedError, StreamClosedError): - pass - map_error(status_code=response.status_code, response=response, error_map=error_map) - error = _failsafe_deserialize( - _models.ErrorResponse, - response, - ) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - - if _stream: - deserialized = response.iter_bytes() if _decompress else response.iter_raw() - else: - deserialized = _deserialize(_models.CredentialResults, response.json()) - - if cls: - return cls(pipeline_response, deserialized, {}) # type: ignore - - return deserialized # type: ignore - -class MachinesOperations: +class IdentityBindingsOperations: """ .. warning:: **DO NOT** instantiate this class directly. Instead, you should access the following operations through :class:`~azure.mgmt.containerservice.ContainerServiceClient`'s - :attr:`machines` attribute. + :attr:`identity_bindings` attribute. """ def __init__(self, *args, **kwargs) -> None: @@ -9667,22 +9973,34 @@ def __init__(self, *args, **kwargs) -> None: self._deserialize: Deserializer = input_args.pop(0) if input_args else kwargs.pop("deserializer") @distributed_trace + @api_version_validation( + method_added_on="2026-04-01", + params_added_on={ + "2026-04-01": [ + "api_version", + "subscription_id", + "resource_group_name", + "resource_name", + "identity_binding_name", + "accept", + ] + }, + api_versions_list=["2026-04-01"], + ) def get( - self, resource_group_name: str, resource_name: str, agent_pool_name: str, machine_name: str, **kwargs: Any - ) -> _models.Machine: - """Get a specific machine in the specified agent pool. + self, resource_group_name: str, resource_name: str, identity_binding_name: str, **kwargs: Any + ) -> _models.IdentityBinding: + """Gets the specified Identity Binding. :param resource_group_name: The name of the resource group. The name is case insensitive. Required. :type resource_group_name: str :param resource_name: The name of the managed cluster resource. Required. :type resource_name: str - :param agent_pool_name: The name of the agent pool. Required. - :type agent_pool_name: str - :param machine_name: Host name of the machine. Required. - :type machine_name: str - :return: Machine. The Machine is compatible with MutableMapping - :rtype: ~azure.mgmt.containerservice.models.Machine + :param identity_binding_name: The name of the identity binding. Required. + :type identity_binding_name: str + :return: IdentityBinding. The IdentityBinding is compatible with MutableMapping + :rtype: ~azure.mgmt.containerservice.models.IdentityBinding :raises ~azure.core.exceptions.HttpResponseError: """ error_map: MutableMapping = { @@ -9696,13 +10014,12 @@ def get( _headers = kwargs.pop("headers", {}) or {} _params = kwargs.pop("params", {}) or {} - cls: ClsType[_models.Machine] = kwargs.pop("cls", None) + cls: ClsType[_models.IdentityBinding] = kwargs.pop("cls", None) - _request = build_machines_get_request( + _request = build_identity_bindings_get_request( resource_group_name=resource_group_name, resource_name=resource_name, - agent_pool_name=agent_pool_name, - machine_name=machine_name, + identity_binding_name=identity_binding_name, subscription_id=self._config.subscription_id, api_version=self._config.api_version, headers=_headers, @@ -9737,7 +10054,7 @@ def get( if _stream: deserialized = response.iter_bytes() if _decompress else response.iter_raw() else: - deserialized = _deserialize(_models.Machine, response.json()) + deserialized = _deserialize(_models.IdentityBinding, response.json()) if cls: return cls(pipeline_response, deserialized, {}) # type: ignore @@ -9745,33 +10062,26 @@ def get( return deserialized # type: ignore @api_version_validation( - method_added_on="2026-03-02-preview", + method_added_on="2026-04-01", params_added_on={ - "2026-03-02-preview": [ + "2026-04-01": [ "api_version", "subscription_id", "resource_group_name", "resource_name", - "agent_pool_name", - "machine_name", + "identity_binding_name", "content_type", "accept", - "etag", - "match_condition", ] }, - api_versions_list=["2026-03-02-preview"], + api_versions_list=["2026-04-01"], ) def _create_or_update_initial( self, resource_group_name: str, resource_name: str, - agent_pool_name: str, - machine_name: str, - parameters: Union[_models.Machine, JSON, IO[bytes]], - *, - etag: Optional[str] = None, - match_condition: Optional[MatchConditions] = None, + identity_binding_name: str, + parameters: Union[_models.IdentityBinding, JSON, IO[bytes]], **kwargs: Any ) -> Iterator[bytes]: error_map: MutableMapping = { @@ -9780,12 +10090,6 @@ def _create_or_update_initial( 409: ResourceExistsError, 304: ResourceNotModifiedError, } - if match_condition == MatchConditions.IfNotModified: - error_map[412] = ResourceModifiedError - elif match_condition == MatchConditions.IfPresent: - error_map[412] = ResourceNotFoundError - elif match_condition == MatchConditions.IfMissing: - error_map[412] = ResourceExistsError error_map.update(kwargs.pop("error_map", {}) or {}) _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) @@ -9801,14 +10105,11 @@ def _create_or_update_initial( else: _content = json.dumps(parameters, cls=SdkJSONEncoder, exclude_readonly=True) # type: ignore - _request = build_machines_create_or_update_request( + _request = build_identity_bindings_create_or_update_request( resource_group_name=resource_group_name, resource_name=resource_name, - agent_pool_name=agent_pool_name, - machine_name=machine_name, + identity_binding_name=identity_binding_name, subscription_id=self._config.subscription_id, - etag=etag, - match_condition=match_condition, content_type=content_type, api_version=self._config.api_version, content=_content, @@ -9845,6 +10146,7 @@ def _create_or_update_initial( response_headers["Azure-AsyncOperation"] = self._deserialize( "str", response.headers.get("Azure-AsyncOperation") ) + response_headers["Location"] = self._deserialize("str", response.headers.get("Location")) response_headers["Retry-After"] = self._deserialize("int", response.headers.get("Retry-After")) deserialized = response.iter_bytes() if _decompress else response.iter_raw() @@ -9859,39 +10161,29 @@ def begin_create_or_update( self, resource_group_name: str, resource_name: str, - agent_pool_name: str, - machine_name: str, - parameters: _models.Machine, + identity_binding_name: str, + parameters: _models.IdentityBinding, *, content_type: str = "application/json", - etag: Optional[str] = None, - match_condition: Optional[MatchConditions] = None, **kwargs: Any - ) -> LROPoller[_models.Machine]: - """Creates or updates a machine in the specified agent pool. + ) -> LROPoller[_models.IdentityBinding]: + """Creates or updates an identity binding in the specified managed cluster. :param resource_group_name: The name of the resource group. The name is case insensitive. Required. :type resource_group_name: str :param resource_name: The name of the managed cluster resource. Required. :type resource_name: str - :param agent_pool_name: The name of the agent pool. Required. - :type agent_pool_name: str - :param machine_name: Host name of the machine. Required. - :type machine_name: str - :param parameters: The machine to create or update. Required. - :type parameters: ~azure.mgmt.containerservice.models.Machine + :param identity_binding_name: The name of the identity binding. Required. + :type identity_binding_name: str + :param parameters: The identity binding to create or update. Required. + :type parameters: ~azure.mgmt.containerservice.models.IdentityBinding :keyword content_type: Body Parameter content-type. Content type parameter for JSON body. Default value is "application/json". :paramtype content_type: str - :keyword etag: check if resource is changed. Set None to skip checking etag. Default value is - None. - :paramtype etag: str - :keyword match_condition: The match condition to use upon the etag. Default value is None. - :paramtype match_condition: ~azure.core.MatchConditions - :return: An instance of LROPoller that returns Machine. The Machine is compatible with - MutableMapping - :rtype: ~azure.core.polling.LROPoller[~azure.mgmt.containerservice.models.Machine] + :return: An instance of LROPoller that returns IdentityBinding. The IdentityBinding is + compatible with MutableMapping + :rtype: ~azure.core.polling.LROPoller[~azure.mgmt.containerservice.models.IdentityBinding] :raises ~azure.core.exceptions.HttpResponseError: """ @@ -9900,39 +10192,29 @@ def begin_create_or_update( self, resource_group_name: str, resource_name: str, - agent_pool_name: str, - machine_name: str, + identity_binding_name: str, parameters: JSON, *, content_type: str = "application/json", - etag: Optional[str] = None, - match_condition: Optional[MatchConditions] = None, **kwargs: Any - ) -> LROPoller[_models.Machine]: - """Creates or updates a machine in the specified agent pool. + ) -> LROPoller[_models.IdentityBinding]: + """Creates or updates an identity binding in the specified managed cluster. :param resource_group_name: The name of the resource group. The name is case insensitive. Required. :type resource_group_name: str :param resource_name: The name of the managed cluster resource. Required. :type resource_name: str - :param agent_pool_name: The name of the agent pool. Required. - :type agent_pool_name: str - :param machine_name: Host name of the machine. Required. - :type machine_name: str - :param parameters: The machine to create or update. Required. - :type parameters: JSON + :param identity_binding_name: The name of the identity binding. Required. + :type identity_binding_name: str + :param parameters: The identity binding to create or update. Required. + :type parameters: JSON :keyword content_type: Body Parameter content-type. Content type parameter for JSON body. Default value is "application/json". :paramtype content_type: str - :keyword etag: check if resource is changed. Set None to skip checking etag. Default value is - None. - :paramtype etag: str - :keyword match_condition: The match condition to use upon the etag. Default value is None. - :paramtype match_condition: ~azure.core.MatchConditions - :return: An instance of LROPoller that returns Machine. The Machine is compatible with - MutableMapping - :rtype: ~azure.core.polling.LROPoller[~azure.mgmt.containerservice.models.Machine] + :return: An instance of LROPoller that returns IdentityBinding. The IdentityBinding is + compatible with MutableMapping + :rtype: ~azure.core.polling.LROPoller[~azure.mgmt.containerservice.models.IdentityBinding] :raises ~azure.core.exceptions.HttpResponseError: """ @@ -9941,102 +10223,78 @@ def begin_create_or_update( self, resource_group_name: str, resource_name: str, - agent_pool_name: str, - machine_name: str, + identity_binding_name: str, parameters: IO[bytes], *, content_type: str = "application/json", - etag: Optional[str] = None, - match_condition: Optional[MatchConditions] = None, **kwargs: Any - ) -> LROPoller[_models.Machine]: - """Creates or updates a machine in the specified agent pool. + ) -> LROPoller[_models.IdentityBinding]: + """Creates or updates an identity binding in the specified managed cluster. :param resource_group_name: The name of the resource group. The name is case insensitive. Required. :type resource_group_name: str :param resource_name: The name of the managed cluster resource. Required. :type resource_name: str - :param agent_pool_name: The name of the agent pool. Required. - :type agent_pool_name: str - :param machine_name: Host name of the machine. Required. - :type machine_name: str - :param parameters: The machine to create or update. Required. + :param identity_binding_name: The name of the identity binding. Required. + :type identity_binding_name: str + :param parameters: The identity binding to create or update. Required. :type parameters: IO[bytes] :keyword content_type: Body Parameter content-type. Content type parameter for binary body. Default value is "application/json". :paramtype content_type: str - :keyword etag: check if resource is changed. Set None to skip checking etag. Default value is - None. - :paramtype etag: str - :keyword match_condition: The match condition to use upon the etag. Default value is None. - :paramtype match_condition: ~azure.core.MatchConditions - :return: An instance of LROPoller that returns Machine. The Machine is compatible with - MutableMapping - :rtype: ~azure.core.polling.LROPoller[~azure.mgmt.containerservice.models.Machine] + :return: An instance of LROPoller that returns IdentityBinding. The IdentityBinding is + compatible with MutableMapping + :rtype: ~azure.core.polling.LROPoller[~azure.mgmt.containerservice.models.IdentityBinding] :raises ~azure.core.exceptions.HttpResponseError: """ @distributed_trace @api_version_validation( - method_added_on="2026-03-02-preview", + method_added_on="2026-04-01", params_added_on={ - "2026-03-02-preview": [ + "2026-04-01": [ "api_version", "subscription_id", "resource_group_name", "resource_name", - "agent_pool_name", - "machine_name", + "identity_binding_name", "content_type", "accept", - "etag", - "match_condition", ] }, - api_versions_list=["2026-03-02-preview"], + api_versions_list=["2026-04-01"], ) def begin_create_or_update( self, resource_group_name: str, resource_name: str, - agent_pool_name: str, - machine_name: str, - parameters: Union[_models.Machine, JSON, IO[bytes]], - *, - etag: Optional[str] = None, - match_condition: Optional[MatchConditions] = None, + identity_binding_name: str, + parameters: Union[_models.IdentityBinding, JSON, IO[bytes]], **kwargs: Any - ) -> LROPoller[_models.Machine]: - """Creates or updates a machine in the specified agent pool. + ) -> LROPoller[_models.IdentityBinding]: + """Creates or updates an identity binding in the specified managed cluster. :param resource_group_name: The name of the resource group. The name is case insensitive. Required. :type resource_group_name: str :param resource_name: The name of the managed cluster resource. Required. :type resource_name: str - :param agent_pool_name: The name of the agent pool. Required. - :type agent_pool_name: str - :param machine_name: Host name of the machine. Required. - :type machine_name: str - :param parameters: The machine to create or update. Is one of the following types: Machine, - JSON, IO[bytes] Required. - :type parameters: ~azure.mgmt.containerservice.models.Machine or JSON or IO[bytes] - :keyword etag: check if resource is changed. Set None to skip checking etag. Default value is - None. - :paramtype etag: str - :keyword match_condition: The match condition to use upon the etag. Default value is None. - :paramtype match_condition: ~azure.core.MatchConditions - :return: An instance of LROPoller that returns Machine. The Machine is compatible with - MutableMapping - :rtype: ~azure.core.polling.LROPoller[~azure.mgmt.containerservice.models.Machine] + :param identity_binding_name: The name of the identity binding. Required. + :type identity_binding_name: str + :param parameters: The identity binding to create or update. Is one of the following types: + IdentityBinding, JSON, IO[bytes] Required. + :type parameters: ~azure.mgmt.containerservice.models.IdentityBinding or JSON or IO[bytes] + :return: An instance of LROPoller that returns IdentityBinding. The IdentityBinding is + compatible with MutableMapping + :rtype: ~azure.core.polling.LROPoller[~azure.mgmt.containerservice.models.IdentityBinding] :raises ~azure.core.exceptions.HttpResponseError: """ _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) _params = kwargs.pop("params", {}) or {} content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) - cls: ClsType[_models.Machine] = kwargs.pop("cls", None) + cls: ClsType[_models.IdentityBinding] = kwargs.pop("cls", None) polling: Union[bool, PollingMethod] = kwargs.pop("polling", True) lro_delay = kwargs.pop("polling_interval", self._config.polling_interval) cont_token: Optional[str] = kwargs.pop("continuation_token", None) @@ -10044,11 +10302,8 @@ def begin_create_or_update( raw_result = self._create_or_update_initial( resource_group_name=resource_group_name, resource_name=resource_name, - agent_pool_name=agent_pool_name, - machine_name=machine_name, + identity_binding_name=identity_binding_name, parameters=parameters, - etag=etag, - match_condition=match_condition, content_type=content_type, cls=lambda x, y, z: x, headers=_headers, @@ -10060,5304 +10315,50 @@ def begin_create_or_update( def get_long_running_output(pipeline_response): response = pipeline_response.http_response - deserialized = _deserialize(_models.Machine, response.json()) + deserialized = _deserialize(_models.IdentityBinding, response.json()) if cls: return cls(pipeline_response, deserialized, {}) # type: ignore - return deserialized - - path_format_arguments = { - "endpoint": self._serialize.url("self._config.base_url", self._config.base_url, "str", skip_quote=True), - } - - if polling is True: - polling_method: PollingMethod = cast( - PollingMethod, ARMPolling(lro_delay, path_format_arguments=path_format_arguments, **kwargs) - ) - elif polling is False: - polling_method = cast(PollingMethod, NoPolling()) - else: - polling_method = polling - if cont_token: - return LROPoller[_models.Machine].from_continuation_token( - polling_method=polling_method, - continuation_token=cont_token, - client=self._client, - deserialization_callback=get_long_running_output, - ) - return LROPoller[_models.Machine]( - self._client, raw_result, get_long_running_output, polling_method # type: ignore - ) - - @distributed_trace - def list( - self, resource_group_name: str, resource_name: str, agent_pool_name: str, **kwargs: Any - ) -> ItemPaged["_models.Machine"]: - """Gets a list of machines in the specified agent pool. - - :param resource_group_name: The name of the resource group. The name is case insensitive. - Required. - :type resource_group_name: str - :param resource_name: The name of the managed cluster resource. Required. - :type resource_name: str - :param agent_pool_name: The name of the agent pool. Required. - :type agent_pool_name: str - :return: An iterator like instance of Machine - :rtype: ~azure.core.paging.ItemPaged[~azure.mgmt.containerservice.models.Machine] - :raises ~azure.core.exceptions.HttpResponseError: - """ - _headers = kwargs.pop("headers", {}) or {} - _params = kwargs.pop("params", {}) or {} - - cls: ClsType[List[_models.Machine]] = kwargs.pop("cls", None) - - error_map: MutableMapping = { - 401: ClientAuthenticationError, - 404: ResourceNotFoundError, - 409: ResourceExistsError, - 304: ResourceNotModifiedError, - } - error_map.update(kwargs.pop("error_map", {}) or {}) - - def prepare_request(next_link=None): - if not next_link: - - _request = build_machines_list_request( - resource_group_name=resource_group_name, - resource_name=resource_name, - agent_pool_name=agent_pool_name, - subscription_id=self._config.subscription_id, - api_version=self._config.api_version, - headers=_headers, - params=_params, - ) - path_format_arguments = { - "endpoint": self._serialize.url( - "self._config.base_url", self._config.base_url, "str", skip_quote=True - ), - } - _request.url = self._client.format_url(_request.url, **path_format_arguments) - - else: - # make call to next link with the client's api-version - _parsed_next_link = urllib.parse.urlparse(next_link) - _next_request_params = case_insensitive_dict( - { - key: [urllib.parse.quote(v) for v in value] - for key, value in urllib.parse.parse_qs(_parsed_next_link.query).items() - } - ) - _next_request_params["api-version"] = self._config.api_version - _request = HttpRequest( - "GET", - urllib.parse.urljoin(next_link, _parsed_next_link.path), - headers=_headers, - params=_next_request_params, - ) - path_format_arguments = { - "endpoint": self._serialize.url( - "self._config.base_url", self._config.base_url, "str", skip_quote=True - ), - } - _request.url = self._client.format_url(_request.url, **path_format_arguments) - - return _request - - def extract_data(pipeline_response): - deserialized = pipeline_response.http_response.json() - list_of_elem = _deserialize( - List[_models.Machine], - deserialized.get("value", []), - ) - if cls: - list_of_elem = cls(list_of_elem) # type: ignore - return deserialized.get("nextLink") or None, iter(list_of_elem) - - def get_next(next_link=None): - _request = prepare_request(next_link) - - _stream = False - pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access - _request, stream=_stream, **kwargs - ) - response = pipeline_response.http_response - - if response.status_code not in [200]: - map_error(status_code=response.status_code, response=response, error_map=error_map) - error = _failsafe_deserialize( - _models.ErrorResponse, - response, - ) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - - return pipeline_response - - return ItemPaged(get_next, extract_data) - - -class PrivateEndpointConnectionsOperations: - """ - .. warning:: - **DO NOT** instantiate this class directly. - - Instead, you should access the following operations through - :class:`~azure.mgmt.containerservice.ContainerServiceClient`'s - :attr:`private_endpoint_connections` attribute. - """ - - def __init__(self, *args, **kwargs) -> None: - input_args = list(args) - self._client: PipelineClient = input_args.pop(0) if input_args else kwargs.pop("client") - self._config: ContainerServiceClientConfiguration = input_args.pop(0) if input_args else kwargs.pop("config") - self._serialize: Serializer = input_args.pop(0) if input_args else kwargs.pop("serializer") - self._deserialize: Deserializer = input_args.pop(0) if input_args else kwargs.pop("deserializer") - - @distributed_trace - def get( - self, resource_group_name: str, resource_name: str, private_endpoint_connection_name: str, **kwargs: Any - ) -> _models.PrivateEndpointConnection: - """Gets the specified private endpoint connection. - - To learn more about private clusters, see: - `https://docs.microsoft.com/azure/aks/private-clusters - `_. - - :param resource_group_name: The name of the resource group. The name is case insensitive. - Required. - :type resource_group_name: str - :param resource_name: The name of the managed cluster resource. Required. - :type resource_name: str - :param private_endpoint_connection_name: The name of the private endpoint connection. Required. - :type private_endpoint_connection_name: str - :return: PrivateEndpointConnection. The PrivateEndpointConnection is compatible with - MutableMapping - :rtype: ~azure.mgmt.containerservice.models.PrivateEndpointConnection - :raises ~azure.core.exceptions.HttpResponseError: - """ - error_map: MutableMapping = { - 401: ClientAuthenticationError, - 404: ResourceNotFoundError, - 409: ResourceExistsError, - 304: ResourceNotModifiedError, - } - error_map.update(kwargs.pop("error_map", {}) or {}) - - _headers = kwargs.pop("headers", {}) or {} - _params = kwargs.pop("params", {}) or {} - - cls: ClsType[_models.PrivateEndpointConnection] = kwargs.pop("cls", None) - - _request = build_private_endpoint_connections_get_request( - resource_group_name=resource_group_name, - resource_name=resource_name, - private_endpoint_connection_name=private_endpoint_connection_name, - subscription_id=self._config.subscription_id, - api_version=self._config.api_version, - headers=_headers, - params=_params, - ) - path_format_arguments = { - "endpoint": self._serialize.url("self._config.base_url", self._config.base_url, "str", skip_quote=True), - } - _request.url = self._client.format_url(_request.url, **path_format_arguments) - - _decompress = kwargs.pop("decompress", True) - _stream = kwargs.pop("stream", False) - pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access - _request, stream=_stream, **kwargs - ) - - response = pipeline_response.http_response - - if response.status_code not in [200]: - if _stream: - try: - response.read() # Load the body in memory and close the socket - except (StreamConsumedError, StreamClosedError): - pass - map_error(status_code=response.status_code, response=response, error_map=error_map) - error = _failsafe_deserialize( - _models.ErrorResponse, - response, - ) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - - if _stream: - deserialized = response.iter_bytes() if _decompress else response.iter_raw() - else: - deserialized = _deserialize(_models.PrivateEndpointConnection, response.json()) - - if cls: - return cls(pipeline_response, deserialized, {}) # type: ignore - - return deserialized # type: ignore - - @overload - def update( - self, - resource_group_name: str, - resource_name: str, - private_endpoint_connection_name: str, - parameters: _models.PrivateEndpointConnection, - *, - content_type: str = "application/json", - **kwargs: Any - ) -> _models.PrivateEndpointConnection: - """Updates a private endpoint connection. - - :param resource_group_name: The name of the resource group. The name is case insensitive. - Required. - :type resource_group_name: str - :param resource_name: The name of the managed cluster resource. Required. - :type resource_name: str - :param private_endpoint_connection_name: The name of the private endpoint connection. Required. - :type private_endpoint_connection_name: str - :param parameters: The updated private endpoint connection. Required. - :type parameters: ~azure.mgmt.containerservice.models.PrivateEndpointConnection - :keyword content_type: Body Parameter content-type. Content type parameter for JSON body. - Default value is "application/json". - :paramtype content_type: str - :return: PrivateEndpointConnection. The PrivateEndpointConnection is compatible with - MutableMapping - :rtype: ~azure.mgmt.containerservice.models.PrivateEndpointConnection - :raises ~azure.core.exceptions.HttpResponseError: - """ - - @overload - def update( - self, - resource_group_name: str, - resource_name: str, - private_endpoint_connection_name: str, - parameters: JSON, - *, - content_type: str = "application/json", - **kwargs: Any - ) -> _models.PrivateEndpointConnection: - """Updates a private endpoint connection. - - :param resource_group_name: The name of the resource group. The name is case insensitive. - Required. - :type resource_group_name: str - :param resource_name: The name of the managed cluster resource. Required. - :type resource_name: str - :param private_endpoint_connection_name: The name of the private endpoint connection. Required. - :type private_endpoint_connection_name: str - :param parameters: The updated private endpoint connection. Required. - :type parameters: JSON - :keyword content_type: Body Parameter content-type. Content type parameter for JSON body. - Default value is "application/json". - :paramtype content_type: str - :return: PrivateEndpointConnection. The PrivateEndpointConnection is compatible with - MutableMapping - :rtype: ~azure.mgmt.containerservice.models.PrivateEndpointConnection - :raises ~azure.core.exceptions.HttpResponseError: - """ - - @overload - def update( - self, - resource_group_name: str, - resource_name: str, - private_endpoint_connection_name: str, - parameters: IO[bytes], - *, - content_type: str = "application/json", - **kwargs: Any - ) -> _models.PrivateEndpointConnection: - """Updates a private endpoint connection. - - :param resource_group_name: The name of the resource group. The name is case insensitive. - Required. - :type resource_group_name: str - :param resource_name: The name of the managed cluster resource. Required. - :type resource_name: str - :param private_endpoint_connection_name: The name of the private endpoint connection. Required. - :type private_endpoint_connection_name: str - :param parameters: The updated private endpoint connection. Required. - :type parameters: IO[bytes] - :keyword content_type: Body Parameter content-type. Content type parameter for binary body. - Default value is "application/json". - :paramtype content_type: str - :return: PrivateEndpointConnection. The PrivateEndpointConnection is compatible with - MutableMapping - :rtype: ~azure.mgmt.containerservice.models.PrivateEndpointConnection - :raises ~azure.core.exceptions.HttpResponseError: - """ - - @distributed_trace - def update( - self, - resource_group_name: str, - resource_name: str, - private_endpoint_connection_name: str, - parameters: Union[_models.PrivateEndpointConnection, JSON, IO[bytes]], - **kwargs: Any - ) -> _models.PrivateEndpointConnection: - """Updates a private endpoint connection. - - :param resource_group_name: The name of the resource group. The name is case insensitive. - Required. - :type resource_group_name: str - :param resource_name: The name of the managed cluster resource. Required. - :type resource_name: str - :param private_endpoint_connection_name: The name of the private endpoint connection. Required. - :type private_endpoint_connection_name: str - :param parameters: The updated private endpoint connection. Is one of the following types: - PrivateEndpointConnection, JSON, IO[bytes] Required. - :type parameters: ~azure.mgmt.containerservice.models.PrivateEndpointConnection or JSON or - IO[bytes] - :return: PrivateEndpointConnection. The PrivateEndpointConnection is compatible with - MutableMapping - :rtype: ~azure.mgmt.containerservice.models.PrivateEndpointConnection - :raises ~azure.core.exceptions.HttpResponseError: - """ - error_map: MutableMapping = { - 401: ClientAuthenticationError, - 404: ResourceNotFoundError, - 409: ResourceExistsError, - 304: ResourceNotModifiedError, - } - error_map.update(kwargs.pop("error_map", {}) or {}) - - _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) - _params = kwargs.pop("params", {}) or {} - - content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) - cls: ClsType[_models.PrivateEndpointConnection] = kwargs.pop("cls", None) - - content_type = content_type or "application/json" - _content = None - if isinstance(parameters, (IOBase, bytes)): - _content = parameters - else: - _content = json.dumps(parameters, cls=SdkJSONEncoder, exclude_readonly=True) # type: ignore - - _request = build_private_endpoint_connections_update_request( - resource_group_name=resource_group_name, - resource_name=resource_name, - private_endpoint_connection_name=private_endpoint_connection_name, - subscription_id=self._config.subscription_id, - content_type=content_type, - api_version=self._config.api_version, - content=_content, - headers=_headers, - params=_params, - ) - path_format_arguments = { - "endpoint": self._serialize.url("self._config.base_url", self._config.base_url, "str", skip_quote=True), - } - _request.url = self._client.format_url(_request.url, **path_format_arguments) - - _decompress = kwargs.pop("decompress", True) - _stream = kwargs.pop("stream", False) - pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access - _request, stream=_stream, **kwargs - ) - - response = pipeline_response.http_response - - if response.status_code not in [200, 201]: - if _stream: - try: - response.read() # Load the body in memory and close the socket - except (StreamConsumedError, StreamClosedError): - pass - map_error(status_code=response.status_code, response=response, error_map=error_map) - error = _failsafe_deserialize( - _models.ErrorResponse, - response, - ) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - - if _stream: - deserialized = response.iter_bytes() if _decompress else response.iter_raw() - else: - deserialized = _deserialize(_models.PrivateEndpointConnection, response.json()) - - if cls: - return cls(pipeline_response, deserialized, {}) # type: ignore - - return deserialized # type: ignore - - def _delete_initial( - self, resource_group_name: str, resource_name: str, private_endpoint_connection_name: str, **kwargs: Any - ) -> Iterator[bytes]: - error_map: MutableMapping = { - 401: ClientAuthenticationError, - 404: ResourceNotFoundError, - 409: ResourceExistsError, - 304: ResourceNotModifiedError, - } - error_map.update(kwargs.pop("error_map", {}) or {}) - - _headers = kwargs.pop("headers", {}) or {} - _params = kwargs.pop("params", {}) or {} - - cls: ClsType[Iterator[bytes]] = kwargs.pop("cls", None) - - _request = build_private_endpoint_connections_delete_request( - resource_group_name=resource_group_name, - resource_name=resource_name, - private_endpoint_connection_name=private_endpoint_connection_name, - subscription_id=self._config.subscription_id, - api_version=self._config.api_version, - headers=_headers, - params=_params, - ) - path_format_arguments = { - "endpoint": self._serialize.url("self._config.base_url", self._config.base_url, "str", skip_quote=True), - } - _request.url = self._client.format_url(_request.url, **path_format_arguments) - - _decompress = kwargs.pop("decompress", True) - _stream = True - pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access - _request, stream=_stream, **kwargs - ) - - response = pipeline_response.http_response - - if response.status_code not in [200, 204]: - try: - response.read() # Load the body in memory and close the socket - except (StreamConsumedError, StreamClosedError): - pass - map_error(status_code=response.status_code, response=response, error_map=error_map) - error = _failsafe_deserialize( - _models.ErrorResponse, - response, - ) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - - response_headers = {} - if response.status_code == 200: - response_headers["Azure-AsyncOperation"] = self._deserialize( - "str", response.headers.get("Azure-AsyncOperation") - ) - response_headers["Retry-After"] = self._deserialize("int", response.headers.get("Retry-After")) - - deserialized = response.iter_bytes() if _decompress else response.iter_raw() - - if cls: - return cls(pipeline_response, deserialized, response_headers) # type: ignore - - return deserialized # type: ignore - - @distributed_trace - def begin_delete( - self, resource_group_name: str, resource_name: str, private_endpoint_connection_name: str, **kwargs: Any - ) -> LROPoller[None]: - """Deletes a private endpoint connection. - - :param resource_group_name: The name of the resource group. The name is case insensitive. - Required. - :type resource_group_name: str - :param resource_name: The name of the managed cluster resource. Required. - :type resource_name: str - :param private_endpoint_connection_name: The name of the private endpoint connection. Required. - :type private_endpoint_connection_name: str - :return: An instance of LROPoller that returns None - :rtype: ~azure.core.polling.LROPoller[None] - :raises ~azure.core.exceptions.HttpResponseError: - """ - _headers = kwargs.pop("headers", {}) or {} - _params = kwargs.pop("params", {}) or {} - - cls: ClsType[None] = kwargs.pop("cls", None) - polling: Union[bool, PollingMethod] = kwargs.pop("polling", True) - lro_delay = kwargs.pop("polling_interval", self._config.polling_interval) - cont_token: Optional[str] = kwargs.pop("continuation_token", None) - if cont_token is None: - raw_result = self._delete_initial( - resource_group_name=resource_group_name, - resource_name=resource_name, - private_endpoint_connection_name=private_endpoint_connection_name, - cls=lambda x, y, z: x, - headers=_headers, - params=_params, - **kwargs - ) - raw_result.http_response.read() # type: ignore - kwargs.pop("error_map", None) - - def get_long_running_output(pipeline_response): # pylint: disable=inconsistent-return-statements - if cls: - return cls(pipeline_response, None, {}) # type: ignore - - path_format_arguments = { - "endpoint": self._serialize.url("self._config.base_url", self._config.base_url, "str", skip_quote=True), - } - - if polling is True: - polling_method: PollingMethod = cast( - PollingMethod, ARMPolling(lro_delay, path_format_arguments=path_format_arguments, **kwargs) - ) - elif polling is False: - polling_method = cast(PollingMethod, NoPolling()) - else: - polling_method = polling - if cont_token: - return LROPoller[None].from_continuation_token( - polling_method=polling_method, - continuation_token=cont_token, - client=self._client, - deserialization_callback=get_long_running_output, - ) - return LROPoller[None](self._client, raw_result, get_long_running_output, polling_method) # type: ignore - - @distributed_trace - def list( - self, resource_group_name: str, resource_name: str, **kwargs: Any - ) -> _models.PrivateEndpointConnectionListResult: - """Gets a list of private endpoint connections in the specified managed cluster. - - To learn more about private clusters, see: - `https://docs.microsoft.com/azure/aks/private-clusters - `_. - - :param resource_group_name: The name of the resource group. The name is case insensitive. - Required. - :type resource_group_name: str - :param resource_name: The name of the managed cluster resource. Required. - :type resource_name: str - :return: PrivateEndpointConnectionListResult. The PrivateEndpointConnectionListResult is - compatible with MutableMapping - :rtype: ~azure.mgmt.containerservice.models.PrivateEndpointConnectionListResult - :raises ~azure.core.exceptions.HttpResponseError: - """ - error_map: MutableMapping = { - 401: ClientAuthenticationError, - 404: ResourceNotFoundError, - 409: ResourceExistsError, - 304: ResourceNotModifiedError, - } - error_map.update(kwargs.pop("error_map", {}) or {}) - - _headers = kwargs.pop("headers", {}) or {} - _params = kwargs.pop("params", {}) or {} - - cls: ClsType[_models.PrivateEndpointConnectionListResult] = kwargs.pop("cls", None) - - _request = build_private_endpoint_connections_list_request( - resource_group_name=resource_group_name, - resource_name=resource_name, - subscription_id=self._config.subscription_id, - api_version=self._config.api_version, - headers=_headers, - params=_params, - ) - path_format_arguments = { - "endpoint": self._serialize.url("self._config.base_url", self._config.base_url, "str", skip_quote=True), - } - _request.url = self._client.format_url(_request.url, **path_format_arguments) - - _decompress = kwargs.pop("decompress", True) - _stream = kwargs.pop("stream", False) - pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access - _request, stream=_stream, **kwargs - ) - - response = pipeline_response.http_response - - if response.status_code not in [200]: - if _stream: - try: - response.read() # Load the body in memory and close the socket - except (StreamConsumedError, StreamClosedError): - pass - map_error(status_code=response.status_code, response=response, error_map=error_map) - error = _failsafe_deserialize( - _models.ErrorResponse, - response, - ) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - - if _stream: - deserialized = response.iter_bytes() if _decompress else response.iter_raw() - else: - deserialized = _deserialize(_models.PrivateEndpointConnectionListResult, response.json()) - - if cls: - return cls(pipeline_response, deserialized, {}) # type: ignore - - return deserialized # type: ignore - - -class SnapshotsOperations: - """ - .. warning:: - **DO NOT** instantiate this class directly. - - Instead, you should access the following operations through - :class:`~azure.mgmt.containerservice.ContainerServiceClient`'s - :attr:`snapshots` attribute. - """ - - def __init__(self, *args, **kwargs) -> None: - input_args = list(args) - self._client: PipelineClient = input_args.pop(0) if input_args else kwargs.pop("client") - self._config: ContainerServiceClientConfiguration = input_args.pop(0) if input_args else kwargs.pop("config") - self._serialize: Serializer = input_args.pop(0) if input_args else kwargs.pop("serializer") - self._deserialize: Deserializer = input_args.pop(0) if input_args else kwargs.pop("deserializer") - - @distributed_trace - def get(self, resource_group_name: str, resource_name: str, **kwargs: Any) -> _models.Snapshot: - """Gets a snapshot. - - :param resource_group_name: The name of the resource group. The name is case insensitive. - Required. - :type resource_group_name: str - :param resource_name: The name of the managed cluster resource. Required. - :type resource_name: str - :return: Snapshot. The Snapshot is compatible with MutableMapping - :rtype: ~azure.mgmt.containerservice.models.Snapshot - :raises ~azure.core.exceptions.HttpResponseError: - """ - error_map: MutableMapping = { - 401: ClientAuthenticationError, - 404: ResourceNotFoundError, - 409: ResourceExistsError, - 304: ResourceNotModifiedError, - } - error_map.update(kwargs.pop("error_map", {}) or {}) - - _headers = kwargs.pop("headers", {}) or {} - _params = kwargs.pop("params", {}) or {} - - cls: ClsType[_models.Snapshot] = kwargs.pop("cls", None) - - _request = build_snapshots_get_request( - resource_group_name=resource_group_name, - resource_name=resource_name, - subscription_id=self._config.subscription_id, - api_version=self._config.api_version, - headers=_headers, - params=_params, - ) - path_format_arguments = { - "endpoint": self._serialize.url("self._config.base_url", self._config.base_url, "str", skip_quote=True), - } - _request.url = self._client.format_url(_request.url, **path_format_arguments) - - _decompress = kwargs.pop("decompress", True) - _stream = kwargs.pop("stream", False) - pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access - _request, stream=_stream, **kwargs - ) - - response = pipeline_response.http_response - - if response.status_code not in [200]: - if _stream: - try: - response.read() # Load the body in memory and close the socket - except (StreamConsumedError, StreamClosedError): - pass - map_error(status_code=response.status_code, response=response, error_map=error_map) - error = _failsafe_deserialize( - _models.ErrorResponse, - response, - ) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - - if _stream: - deserialized = response.iter_bytes() if _decompress else response.iter_raw() - else: - deserialized = _deserialize(_models.Snapshot, response.json()) - - if cls: - return cls(pipeline_response, deserialized, {}) # type: ignore - - return deserialized # type: ignore - - @overload - def create_or_update( - self, - resource_group_name: str, - resource_name: str, - parameters: _models.Snapshot, - *, - content_type: str = "application/json", - **kwargs: Any - ) -> _models.Snapshot: - """Creates or updates a snapshot. - - :param resource_group_name: The name of the resource group. The name is case insensitive. - Required. - :type resource_group_name: str - :param resource_name: The name of the managed cluster resource. Required. - :type resource_name: str - :param parameters: The snapshot to create or update. Required. - :type parameters: ~azure.mgmt.containerservice.models.Snapshot - :keyword content_type: Body Parameter content-type. Content type parameter for JSON body. - Default value is "application/json". - :paramtype content_type: str - :return: Snapshot. The Snapshot is compatible with MutableMapping - :rtype: ~azure.mgmt.containerservice.models.Snapshot - :raises ~azure.core.exceptions.HttpResponseError: - """ - - @overload - def create_or_update( - self, - resource_group_name: str, - resource_name: str, - parameters: JSON, - *, - content_type: str = "application/json", - **kwargs: Any - ) -> _models.Snapshot: - """Creates or updates a snapshot. - - :param resource_group_name: The name of the resource group. The name is case insensitive. - Required. - :type resource_group_name: str - :param resource_name: The name of the managed cluster resource. Required. - :type resource_name: str - :param parameters: The snapshot to create or update. Required. - :type parameters: JSON - :keyword content_type: Body Parameter content-type. Content type parameter for JSON body. - Default value is "application/json". - :paramtype content_type: str - :return: Snapshot. The Snapshot is compatible with MutableMapping - :rtype: ~azure.mgmt.containerservice.models.Snapshot - :raises ~azure.core.exceptions.HttpResponseError: - """ - - @overload - def create_or_update( - self, - resource_group_name: str, - resource_name: str, - parameters: IO[bytes], - *, - content_type: str = "application/json", - **kwargs: Any - ) -> _models.Snapshot: - """Creates or updates a snapshot. - - :param resource_group_name: The name of the resource group. The name is case insensitive. - Required. - :type resource_group_name: str - :param resource_name: The name of the managed cluster resource. Required. - :type resource_name: str - :param parameters: The snapshot to create or update. Required. - :type parameters: IO[bytes] - :keyword content_type: Body Parameter content-type. Content type parameter for binary body. - Default value is "application/json". - :paramtype content_type: str - :return: Snapshot. The Snapshot is compatible with MutableMapping - :rtype: ~azure.mgmt.containerservice.models.Snapshot - :raises ~azure.core.exceptions.HttpResponseError: - """ - - @distributed_trace - def create_or_update( - self, - resource_group_name: str, - resource_name: str, - parameters: Union[_models.Snapshot, JSON, IO[bytes]], - **kwargs: Any - ) -> _models.Snapshot: - """Creates or updates a snapshot. - - :param resource_group_name: The name of the resource group. The name is case insensitive. - Required. - :type resource_group_name: str - :param resource_name: The name of the managed cluster resource. Required. - :type resource_name: str - :param parameters: The snapshot to create or update. Is one of the following types: Snapshot, - JSON, IO[bytes] Required. - :type parameters: ~azure.mgmt.containerservice.models.Snapshot or JSON or IO[bytes] - :return: Snapshot. The Snapshot is compatible with MutableMapping - :rtype: ~azure.mgmt.containerservice.models.Snapshot - :raises ~azure.core.exceptions.HttpResponseError: - """ - error_map: MutableMapping = { - 401: ClientAuthenticationError, - 404: ResourceNotFoundError, - 409: ResourceExistsError, - 304: ResourceNotModifiedError, - } - error_map.update(kwargs.pop("error_map", {}) or {}) - - _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) - _params = kwargs.pop("params", {}) or {} - - content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) - cls: ClsType[_models.Snapshot] = kwargs.pop("cls", None) - - content_type = content_type or "application/json" - _content = None - if isinstance(parameters, (IOBase, bytes)): - _content = parameters - else: - _content = json.dumps(parameters, cls=SdkJSONEncoder, exclude_readonly=True) # type: ignore - - _request = build_snapshots_create_or_update_request( - resource_group_name=resource_group_name, - resource_name=resource_name, - subscription_id=self._config.subscription_id, - content_type=content_type, - api_version=self._config.api_version, - content=_content, - headers=_headers, - params=_params, - ) - path_format_arguments = { - "endpoint": self._serialize.url("self._config.base_url", self._config.base_url, "str", skip_quote=True), - } - _request.url = self._client.format_url(_request.url, **path_format_arguments) - - _decompress = kwargs.pop("decompress", True) - _stream = kwargs.pop("stream", False) - pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access - _request, stream=_stream, **kwargs - ) - - response = pipeline_response.http_response - - if response.status_code not in [200, 201]: - if _stream: - try: - response.read() # Load the body in memory and close the socket - except (StreamConsumedError, StreamClosedError): - pass - map_error(status_code=response.status_code, response=response, error_map=error_map) - error = _failsafe_deserialize( - _models.ErrorResponse, - response, - ) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - - if _stream: - deserialized = response.iter_bytes() if _decompress else response.iter_raw() - else: - deserialized = _deserialize(_models.Snapshot, response.json()) - - if cls: - return cls(pipeline_response, deserialized, {}) # type: ignore - - return deserialized # type: ignore - - @overload - def update_tags( - self, - resource_group_name: str, - resource_name: str, - parameters: _models.TagsObject, - *, - content_type: str = "application/json", - **kwargs: Any - ) -> _models.Snapshot: - """Updates tags on a snapshot. - - :param resource_group_name: The name of the resource group. The name is case insensitive. - Required. - :type resource_group_name: str - :param resource_name: The name of the managed cluster resource. Required. - :type resource_name: str - :param parameters: Parameters supplied to the Update snapshot Tags operation. Required. - :type parameters: ~azure.mgmt.containerservice.models.TagsObject - :keyword content_type: Body Parameter content-type. Content type parameter for JSON body. - Default value is "application/json". - :paramtype content_type: str - :return: Snapshot. The Snapshot is compatible with MutableMapping - :rtype: ~azure.mgmt.containerservice.models.Snapshot - :raises ~azure.core.exceptions.HttpResponseError: - """ - - @overload - def update_tags( - self, - resource_group_name: str, - resource_name: str, - parameters: JSON, - *, - content_type: str = "application/json", - **kwargs: Any - ) -> _models.Snapshot: - """Updates tags on a snapshot. - - :param resource_group_name: The name of the resource group. The name is case insensitive. - Required. - :type resource_group_name: str - :param resource_name: The name of the managed cluster resource. Required. - :type resource_name: str - :param parameters: Parameters supplied to the Update snapshot Tags operation. Required. - :type parameters: JSON - :keyword content_type: Body Parameter content-type. Content type parameter for JSON body. - Default value is "application/json". - :paramtype content_type: str - :return: Snapshot. The Snapshot is compatible with MutableMapping - :rtype: ~azure.mgmt.containerservice.models.Snapshot - :raises ~azure.core.exceptions.HttpResponseError: - """ - - @overload - def update_tags( - self, - resource_group_name: str, - resource_name: str, - parameters: IO[bytes], - *, - content_type: str = "application/json", - **kwargs: Any - ) -> _models.Snapshot: - """Updates tags on a snapshot. - - :param resource_group_name: The name of the resource group. The name is case insensitive. - Required. - :type resource_group_name: str - :param resource_name: The name of the managed cluster resource. Required. - :type resource_name: str - :param parameters: Parameters supplied to the Update snapshot Tags operation. Required. - :type parameters: IO[bytes] - :keyword content_type: Body Parameter content-type. Content type parameter for binary body. - Default value is "application/json". - :paramtype content_type: str - :return: Snapshot. The Snapshot is compatible with MutableMapping - :rtype: ~azure.mgmt.containerservice.models.Snapshot - :raises ~azure.core.exceptions.HttpResponseError: - """ - - @distributed_trace - def update_tags( - self, - resource_group_name: str, - resource_name: str, - parameters: Union[_models.TagsObject, JSON, IO[bytes]], - **kwargs: Any - ) -> _models.Snapshot: - """Updates tags on a snapshot. - - :param resource_group_name: The name of the resource group. The name is case insensitive. - Required. - :type resource_group_name: str - :param resource_name: The name of the managed cluster resource. Required. - :type resource_name: str - :param parameters: Parameters supplied to the Update snapshot Tags operation. Is one of the - following types: TagsObject, JSON, IO[bytes] Required. - :type parameters: ~azure.mgmt.containerservice.models.TagsObject or JSON or IO[bytes] - :return: Snapshot. The Snapshot is compatible with MutableMapping - :rtype: ~azure.mgmt.containerservice.models.Snapshot - :raises ~azure.core.exceptions.HttpResponseError: - """ - error_map: MutableMapping = { - 401: ClientAuthenticationError, - 404: ResourceNotFoundError, - 409: ResourceExistsError, - 304: ResourceNotModifiedError, - } - error_map.update(kwargs.pop("error_map", {}) or {}) - - _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) - _params = kwargs.pop("params", {}) or {} - - content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) - cls: ClsType[_models.Snapshot] = kwargs.pop("cls", None) - - content_type = content_type or "application/json" - _content = None - if isinstance(parameters, (IOBase, bytes)): - _content = parameters - else: - _content = json.dumps(parameters, cls=SdkJSONEncoder, exclude_readonly=True) # type: ignore - - _request = build_snapshots_update_tags_request( - resource_group_name=resource_group_name, - resource_name=resource_name, - subscription_id=self._config.subscription_id, - content_type=content_type, - api_version=self._config.api_version, - content=_content, - headers=_headers, - params=_params, - ) - path_format_arguments = { - "endpoint": self._serialize.url("self._config.base_url", self._config.base_url, "str", skip_quote=True), - } - _request.url = self._client.format_url(_request.url, **path_format_arguments) - - _decompress = kwargs.pop("decompress", True) - _stream = kwargs.pop("stream", False) - pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access - _request, stream=_stream, **kwargs - ) - - response = pipeline_response.http_response - - if response.status_code not in [200]: - if _stream: - try: - response.read() # Load the body in memory and close the socket - except (StreamConsumedError, StreamClosedError): - pass - map_error(status_code=response.status_code, response=response, error_map=error_map) - error = _failsafe_deserialize( - _models.ErrorResponse, - response, - ) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - - if _stream: - deserialized = response.iter_bytes() if _decompress else response.iter_raw() - else: - deserialized = _deserialize(_models.Snapshot, response.json()) - - if cls: - return cls(pipeline_response, deserialized, {}) # type: ignore - - return deserialized # type: ignore - - @distributed_trace - def delete( # pylint: disable=inconsistent-return-statements - self, resource_group_name: str, resource_name: str, **kwargs: Any - ) -> None: - """Deletes a snapshot. - - :param resource_group_name: The name of the resource group. The name is case insensitive. - Required. - :type resource_group_name: str - :param resource_name: The name of the managed cluster resource. Required. - :type resource_name: str - :return: None - :rtype: None - :raises ~azure.core.exceptions.HttpResponseError: - """ - error_map: MutableMapping = { - 401: ClientAuthenticationError, - 404: ResourceNotFoundError, - 409: ResourceExistsError, - 304: ResourceNotModifiedError, - } - error_map.update(kwargs.pop("error_map", {}) or {}) - - _headers = kwargs.pop("headers", {}) or {} - _params = kwargs.pop("params", {}) or {} - - cls: ClsType[None] = kwargs.pop("cls", None) - - _request = build_snapshots_delete_request( - resource_group_name=resource_group_name, - resource_name=resource_name, - subscription_id=self._config.subscription_id, - api_version=self._config.api_version, - headers=_headers, - params=_params, - ) - path_format_arguments = { - "endpoint": self._serialize.url("self._config.base_url", self._config.base_url, "str", skip_quote=True), - } - _request.url = self._client.format_url(_request.url, **path_format_arguments) - - _stream = False - pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access - _request, stream=_stream, **kwargs - ) - - response = pipeline_response.http_response - - if response.status_code not in [200, 204]: - map_error(status_code=response.status_code, response=response, error_map=error_map) - error = _failsafe_deserialize( - _models.ErrorResponse, - response, - ) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - - if cls: - return cls(pipeline_response, None, {}) # type: ignore - - @distributed_trace - def list_by_resource_group(self, resource_group_name: str, **kwargs: Any) -> ItemPaged["_models.Snapshot"]: - """Lists snapshots in the specified subscription and resource group. - - :param resource_group_name: The name of the resource group. The name is case insensitive. - Required. - :type resource_group_name: str - :return: An iterator like instance of Snapshot - :rtype: ~azure.core.paging.ItemPaged[~azure.mgmt.containerservice.models.Snapshot] - :raises ~azure.core.exceptions.HttpResponseError: - """ - _headers = kwargs.pop("headers", {}) or {} - _params = kwargs.pop("params", {}) or {} - - cls: ClsType[List[_models.Snapshot]] = kwargs.pop("cls", None) - - error_map: MutableMapping = { - 401: ClientAuthenticationError, - 404: ResourceNotFoundError, - 409: ResourceExistsError, - 304: ResourceNotModifiedError, - } - error_map.update(kwargs.pop("error_map", {}) or {}) - - def prepare_request(next_link=None): - if not next_link: - - _request = build_snapshots_list_by_resource_group_request( - resource_group_name=resource_group_name, - subscription_id=self._config.subscription_id, - api_version=self._config.api_version, - headers=_headers, - params=_params, - ) - path_format_arguments = { - "endpoint": self._serialize.url( - "self._config.base_url", self._config.base_url, "str", skip_quote=True - ), - } - _request.url = self._client.format_url(_request.url, **path_format_arguments) - - else: - # make call to next link with the client's api-version - _parsed_next_link = urllib.parse.urlparse(next_link) - _next_request_params = case_insensitive_dict( - { - key: [urllib.parse.quote(v) for v in value] - for key, value in urllib.parse.parse_qs(_parsed_next_link.query).items() - } - ) - _next_request_params["api-version"] = self._config.api_version - _request = HttpRequest( - "GET", - urllib.parse.urljoin(next_link, _parsed_next_link.path), - headers=_headers, - params=_next_request_params, - ) - path_format_arguments = { - "endpoint": self._serialize.url( - "self._config.base_url", self._config.base_url, "str", skip_quote=True - ), - } - _request.url = self._client.format_url(_request.url, **path_format_arguments) - - return _request - - def extract_data(pipeline_response): - deserialized = pipeline_response.http_response.json() - list_of_elem = _deserialize( - List[_models.Snapshot], - deserialized.get("value", []), - ) - if cls: - list_of_elem = cls(list_of_elem) # type: ignore - return deserialized.get("nextLink") or None, iter(list_of_elem) - - def get_next(next_link=None): - _request = prepare_request(next_link) - - _stream = False - pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access - _request, stream=_stream, **kwargs - ) - response = pipeline_response.http_response - - if response.status_code not in [200]: - map_error(status_code=response.status_code, response=response, error_map=error_map) - error = _failsafe_deserialize( - _models.ErrorResponse, - response, - ) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - - return pipeline_response - - return ItemPaged(get_next, extract_data) - - @distributed_trace - def list(self, **kwargs: Any) -> ItemPaged["_models.Snapshot"]: - """Gets a list of snapshots in the specified subscription. - - :return: An iterator like instance of Snapshot - :rtype: ~azure.core.paging.ItemPaged[~azure.mgmt.containerservice.models.Snapshot] - :raises ~azure.core.exceptions.HttpResponseError: - """ - _headers = kwargs.pop("headers", {}) or {} - _params = kwargs.pop("params", {}) or {} - - cls: ClsType[List[_models.Snapshot]] = kwargs.pop("cls", None) - - error_map: MutableMapping = { - 401: ClientAuthenticationError, - 404: ResourceNotFoundError, - 409: ResourceExistsError, - 304: ResourceNotModifiedError, - } - error_map.update(kwargs.pop("error_map", {}) or {}) - - def prepare_request(next_link=None): - if not next_link: - - _request = build_snapshots_list_request( - subscription_id=self._config.subscription_id, - api_version=self._config.api_version, - headers=_headers, - params=_params, - ) - path_format_arguments = { - "endpoint": self._serialize.url( - "self._config.base_url", self._config.base_url, "str", skip_quote=True - ), - } - _request.url = self._client.format_url(_request.url, **path_format_arguments) - - else: - # make call to next link with the client's api-version - _parsed_next_link = urllib.parse.urlparse(next_link) - _next_request_params = case_insensitive_dict( - { - key: [urllib.parse.quote(v) for v in value] - for key, value in urllib.parse.parse_qs(_parsed_next_link.query).items() - } - ) - _next_request_params["api-version"] = self._config.api_version - _request = HttpRequest( - "GET", - urllib.parse.urljoin(next_link, _parsed_next_link.path), - headers=_headers, - params=_next_request_params, - ) - path_format_arguments = { - "endpoint": self._serialize.url( - "self._config.base_url", self._config.base_url, "str", skip_quote=True - ), - } - _request.url = self._client.format_url(_request.url, **path_format_arguments) - - return _request - - def extract_data(pipeline_response): - deserialized = pipeline_response.http_response.json() - list_of_elem = _deserialize( - List[_models.Snapshot], - deserialized.get("value", []), - ) - if cls: - list_of_elem = cls(list_of_elem) # type: ignore - return deserialized.get("nextLink") or None, iter(list_of_elem) - - def get_next(next_link=None): - _request = prepare_request(next_link) - - _stream = False - pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access - _request, stream=_stream, **kwargs - ) - response = pipeline_response.http_response - - if response.status_code not in [200]: - map_error(status_code=response.status_code, response=response, error_map=error_map) - error = _failsafe_deserialize( - _models.ErrorResponse, - response, - ) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - - return pipeline_response - - return ItemPaged(get_next, extract_data) - - -class ManagedClusterSnapshotsOperations: - """ - .. warning:: - **DO NOT** instantiate this class directly. - - Instead, you should access the following operations through - :class:`~azure.mgmt.containerservice.ContainerServiceClient`'s - :attr:`managed_cluster_snapshots` attribute. - """ - - def __init__(self, *args, **kwargs) -> None: - input_args = list(args) - self._client: PipelineClient = input_args.pop(0) if input_args else kwargs.pop("client") - self._config: ContainerServiceClientConfiguration = input_args.pop(0) if input_args else kwargs.pop("config") - self._serialize: Serializer = input_args.pop(0) if input_args else kwargs.pop("serializer") - self._deserialize: Deserializer = input_args.pop(0) if input_args else kwargs.pop("deserializer") - - @distributed_trace - @api_version_validation( - method_added_on="2026-03-02-preview", - params_added_on={ - "2026-03-02-preview": ["api_version", "subscription_id", "resource_group_name", "resource_name", "accept"] - }, - api_versions_list=["2026-03-02-preview"], - ) - def get(self, resource_group_name: str, resource_name: str, **kwargs: Any) -> _models.ManagedClusterSnapshot: - """Gets a managed cluster snapshot. - - :param resource_group_name: The name of the resource group. The name is case insensitive. - Required. - :type resource_group_name: str - :param resource_name: The name of the managed cluster resource. Required. - :type resource_name: str - :return: ManagedClusterSnapshot. The ManagedClusterSnapshot is compatible with MutableMapping - :rtype: ~azure.mgmt.containerservice.models.ManagedClusterSnapshot - :raises ~azure.core.exceptions.HttpResponseError: - """ - error_map: MutableMapping = { - 401: ClientAuthenticationError, - 404: ResourceNotFoundError, - 409: ResourceExistsError, - 304: ResourceNotModifiedError, - } - error_map.update(kwargs.pop("error_map", {}) or {}) - - _headers = kwargs.pop("headers", {}) or {} - _params = kwargs.pop("params", {}) or {} - - cls: ClsType[_models.ManagedClusterSnapshot] = kwargs.pop("cls", None) - - _request = build_managed_cluster_snapshots_get_request( - resource_group_name=resource_group_name, - resource_name=resource_name, - subscription_id=self._config.subscription_id, - api_version=self._config.api_version, - headers=_headers, - params=_params, - ) - path_format_arguments = { - "endpoint": self._serialize.url("self._config.base_url", self._config.base_url, "str", skip_quote=True), - } - _request.url = self._client.format_url(_request.url, **path_format_arguments) - - _decompress = kwargs.pop("decompress", True) - _stream = kwargs.pop("stream", False) - pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access - _request, stream=_stream, **kwargs - ) - - response = pipeline_response.http_response - - if response.status_code not in [200]: - if _stream: - try: - response.read() # Load the body in memory and close the socket - except (StreamConsumedError, StreamClosedError): - pass - map_error(status_code=response.status_code, response=response, error_map=error_map) - error = _failsafe_deserialize( - _models.ErrorResponse, - response, - ) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - - if _stream: - deserialized = response.iter_bytes() if _decompress else response.iter_raw() - else: - deserialized = _deserialize(_models.ManagedClusterSnapshot, response.json()) - - if cls: - return cls(pipeline_response, deserialized, {}) # type: ignore - - return deserialized # type: ignore - - @overload - def create_or_update( - self, - resource_group_name: str, - resource_name: str, - parameters: _models.ManagedClusterSnapshot, - *, - content_type: str = "application/json", - **kwargs: Any - ) -> _models.ManagedClusterSnapshot: - """Creates or updates a managed cluster snapshot. - - :param resource_group_name: The name of the resource group. The name is case insensitive. - Required. - :type resource_group_name: str - :param resource_name: The name of the managed cluster resource. Required. - :type resource_name: str - :param parameters: The managed cluster snapshot to create or update. Required. - :type parameters: ~azure.mgmt.containerservice.models.ManagedClusterSnapshot - :keyword content_type: Body Parameter content-type. Content type parameter for JSON body. - Default value is "application/json". - :paramtype content_type: str - :return: ManagedClusterSnapshot. The ManagedClusterSnapshot is compatible with MutableMapping - :rtype: ~azure.mgmt.containerservice.models.ManagedClusterSnapshot - :raises ~azure.core.exceptions.HttpResponseError: - """ - - @overload - def create_or_update( - self, - resource_group_name: str, - resource_name: str, - parameters: JSON, - *, - content_type: str = "application/json", - **kwargs: Any - ) -> _models.ManagedClusterSnapshot: - """Creates or updates a managed cluster snapshot. - - :param resource_group_name: The name of the resource group. The name is case insensitive. - Required. - :type resource_group_name: str - :param resource_name: The name of the managed cluster resource. Required. - :type resource_name: str - :param parameters: The managed cluster snapshot to create or update. Required. - :type parameters: JSON - :keyword content_type: Body Parameter content-type. Content type parameter for JSON body. - Default value is "application/json". - :paramtype content_type: str - :return: ManagedClusterSnapshot. The ManagedClusterSnapshot is compatible with MutableMapping - :rtype: ~azure.mgmt.containerservice.models.ManagedClusterSnapshot - :raises ~azure.core.exceptions.HttpResponseError: - """ - - @overload - def create_or_update( - self, - resource_group_name: str, - resource_name: str, - parameters: IO[bytes], - *, - content_type: str = "application/json", - **kwargs: Any - ) -> _models.ManagedClusterSnapshot: - """Creates or updates a managed cluster snapshot. - - :param resource_group_name: The name of the resource group. The name is case insensitive. - Required. - :type resource_group_name: str - :param resource_name: The name of the managed cluster resource. Required. - :type resource_name: str - :param parameters: The managed cluster snapshot to create or update. Required. - :type parameters: IO[bytes] - :keyword content_type: Body Parameter content-type. Content type parameter for binary body. - Default value is "application/json". - :paramtype content_type: str - :return: ManagedClusterSnapshot. The ManagedClusterSnapshot is compatible with MutableMapping - :rtype: ~azure.mgmt.containerservice.models.ManagedClusterSnapshot - :raises ~azure.core.exceptions.HttpResponseError: - """ - - @distributed_trace - @api_version_validation( - method_added_on="2026-03-02-preview", - params_added_on={ - "2026-03-02-preview": [ - "api_version", - "subscription_id", - "resource_group_name", - "resource_name", - "content_type", - "accept", - ] - }, - api_versions_list=["2026-03-02-preview"], - ) - def create_or_update( - self, - resource_group_name: str, - resource_name: str, - parameters: Union[_models.ManagedClusterSnapshot, JSON, IO[bytes]], - **kwargs: Any - ) -> _models.ManagedClusterSnapshot: - """Creates or updates a managed cluster snapshot. - - :param resource_group_name: The name of the resource group. The name is case insensitive. - Required. - :type resource_group_name: str - :param resource_name: The name of the managed cluster resource. Required. - :type resource_name: str - :param parameters: The managed cluster snapshot to create or update. Is one of the following - types: ManagedClusterSnapshot, JSON, IO[bytes] Required. - :type parameters: ~azure.mgmt.containerservice.models.ManagedClusterSnapshot or JSON or - IO[bytes] - :return: ManagedClusterSnapshot. The ManagedClusterSnapshot is compatible with MutableMapping - :rtype: ~azure.mgmt.containerservice.models.ManagedClusterSnapshot - :raises ~azure.core.exceptions.HttpResponseError: - """ - error_map: MutableMapping = { - 401: ClientAuthenticationError, - 404: ResourceNotFoundError, - 409: ResourceExistsError, - 304: ResourceNotModifiedError, - } - error_map.update(kwargs.pop("error_map", {}) or {}) - - _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) - _params = kwargs.pop("params", {}) or {} - - content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) - cls: ClsType[_models.ManagedClusterSnapshot] = kwargs.pop("cls", None) - - content_type = content_type or "application/json" - _content = None - if isinstance(parameters, (IOBase, bytes)): - _content = parameters - else: - _content = json.dumps(parameters, cls=SdkJSONEncoder, exclude_readonly=True) # type: ignore - - _request = build_managed_cluster_snapshots_create_or_update_request( - resource_group_name=resource_group_name, - resource_name=resource_name, - subscription_id=self._config.subscription_id, - content_type=content_type, - api_version=self._config.api_version, - content=_content, - headers=_headers, - params=_params, - ) - path_format_arguments = { - "endpoint": self._serialize.url("self._config.base_url", self._config.base_url, "str", skip_quote=True), - } - _request.url = self._client.format_url(_request.url, **path_format_arguments) - - _decompress = kwargs.pop("decompress", True) - _stream = kwargs.pop("stream", False) - pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access - _request, stream=_stream, **kwargs - ) - - response = pipeline_response.http_response - - if response.status_code not in [200, 201]: - if _stream: - try: - response.read() # Load the body in memory and close the socket - except (StreamConsumedError, StreamClosedError): - pass - map_error(status_code=response.status_code, response=response, error_map=error_map) - error = _failsafe_deserialize( - _models.ErrorResponse, - response, - ) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - - if _stream: - deserialized = response.iter_bytes() if _decompress else response.iter_raw() - else: - deserialized = _deserialize(_models.ManagedClusterSnapshot, response.json()) - - if cls: - return cls(pipeline_response, deserialized, {}) # type: ignore - - return deserialized # type: ignore - - @overload - def update_tags( - self, - resource_group_name: str, - resource_name: str, - parameters: _models.TagsObject, - *, - content_type: str = "application/json", - **kwargs: Any - ) -> _models.ManagedClusterSnapshot: - """Updates tags on a managed cluster snapshot. - - :param resource_group_name: The name of the resource group. The name is case insensitive. - Required. - :type resource_group_name: str - :param resource_name: The name of the managed cluster resource. Required. - :type resource_name: str - :param parameters: Parameters supplied to the Update managed cluster snapshot Tags operation. - Required. - :type parameters: ~azure.mgmt.containerservice.models.TagsObject - :keyword content_type: Body Parameter content-type. Content type parameter for JSON body. - Default value is "application/json". - :paramtype content_type: str - :return: ManagedClusterSnapshot. The ManagedClusterSnapshot is compatible with MutableMapping - :rtype: ~azure.mgmt.containerservice.models.ManagedClusterSnapshot - :raises ~azure.core.exceptions.HttpResponseError: - """ - - @overload - def update_tags( - self, - resource_group_name: str, - resource_name: str, - parameters: JSON, - *, - content_type: str = "application/json", - **kwargs: Any - ) -> _models.ManagedClusterSnapshot: - """Updates tags on a managed cluster snapshot. - - :param resource_group_name: The name of the resource group. The name is case insensitive. - Required. - :type resource_group_name: str - :param resource_name: The name of the managed cluster resource. Required. - :type resource_name: str - :param parameters: Parameters supplied to the Update managed cluster snapshot Tags operation. - Required. - :type parameters: JSON - :keyword content_type: Body Parameter content-type. Content type parameter for JSON body. - Default value is "application/json". - :paramtype content_type: str - :return: ManagedClusterSnapshot. The ManagedClusterSnapshot is compatible with MutableMapping - :rtype: ~azure.mgmt.containerservice.models.ManagedClusterSnapshot - :raises ~azure.core.exceptions.HttpResponseError: - """ - - @overload - def update_tags( - self, - resource_group_name: str, - resource_name: str, - parameters: IO[bytes], - *, - content_type: str = "application/json", - **kwargs: Any - ) -> _models.ManagedClusterSnapshot: - """Updates tags on a managed cluster snapshot. - - :param resource_group_name: The name of the resource group. The name is case insensitive. - Required. - :type resource_group_name: str - :param resource_name: The name of the managed cluster resource. Required. - :type resource_name: str - :param parameters: Parameters supplied to the Update managed cluster snapshot Tags operation. - Required. - :type parameters: IO[bytes] - :keyword content_type: Body Parameter content-type. Content type parameter for binary body. - Default value is "application/json". - :paramtype content_type: str - :return: ManagedClusterSnapshot. The ManagedClusterSnapshot is compatible with MutableMapping - :rtype: ~azure.mgmt.containerservice.models.ManagedClusterSnapshot - :raises ~azure.core.exceptions.HttpResponseError: - """ - - @distributed_trace - @api_version_validation( - method_added_on="2026-03-02-preview", - params_added_on={ - "2026-03-02-preview": [ - "api_version", - "subscription_id", - "resource_group_name", - "resource_name", - "content_type", - "accept", - ] - }, - api_versions_list=["2026-03-02-preview"], - ) - def update_tags( - self, - resource_group_name: str, - resource_name: str, - parameters: Union[_models.TagsObject, JSON, IO[bytes]], - **kwargs: Any - ) -> _models.ManagedClusterSnapshot: - """Updates tags on a managed cluster snapshot. - - :param resource_group_name: The name of the resource group. The name is case insensitive. - Required. - :type resource_group_name: str - :param resource_name: The name of the managed cluster resource. Required. - :type resource_name: str - :param parameters: Parameters supplied to the Update managed cluster snapshot Tags operation. - Is one of the following types: TagsObject, JSON, IO[bytes] Required. - :type parameters: ~azure.mgmt.containerservice.models.TagsObject or JSON or IO[bytes] - :return: ManagedClusterSnapshot. The ManagedClusterSnapshot is compatible with MutableMapping - :rtype: ~azure.mgmt.containerservice.models.ManagedClusterSnapshot - :raises ~azure.core.exceptions.HttpResponseError: - """ - error_map: MutableMapping = { - 401: ClientAuthenticationError, - 404: ResourceNotFoundError, - 409: ResourceExistsError, - 304: ResourceNotModifiedError, - } - error_map.update(kwargs.pop("error_map", {}) or {}) - - _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) - _params = kwargs.pop("params", {}) or {} - - content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) - cls: ClsType[_models.ManagedClusterSnapshot] = kwargs.pop("cls", None) - - content_type = content_type or "application/json" - _content = None - if isinstance(parameters, (IOBase, bytes)): - _content = parameters - else: - _content = json.dumps(parameters, cls=SdkJSONEncoder, exclude_readonly=True) # type: ignore - - _request = build_managed_cluster_snapshots_update_tags_request( - resource_group_name=resource_group_name, - resource_name=resource_name, - subscription_id=self._config.subscription_id, - content_type=content_type, - api_version=self._config.api_version, - content=_content, - headers=_headers, - params=_params, - ) - path_format_arguments = { - "endpoint": self._serialize.url("self._config.base_url", self._config.base_url, "str", skip_quote=True), - } - _request.url = self._client.format_url(_request.url, **path_format_arguments) - - _decompress = kwargs.pop("decompress", True) - _stream = kwargs.pop("stream", False) - pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access - _request, stream=_stream, **kwargs - ) - - response = pipeline_response.http_response - - if response.status_code not in [200]: - if _stream: - try: - response.read() # Load the body in memory and close the socket - except (StreamConsumedError, StreamClosedError): - pass - map_error(status_code=response.status_code, response=response, error_map=error_map) - error = _failsafe_deserialize( - _models.ErrorResponse, - response, - ) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - - if _stream: - deserialized = response.iter_bytes() if _decompress else response.iter_raw() - else: - deserialized = _deserialize(_models.ManagedClusterSnapshot, response.json()) - - if cls: - return cls(pipeline_response, deserialized, {}) # type: ignore - - return deserialized # type: ignore - - @distributed_trace - @api_version_validation( - method_added_on="2026-03-02-preview", - params_added_on={ - "2026-03-02-preview": ["api_version", "subscription_id", "resource_group_name", "resource_name"] - }, - api_versions_list=["2026-03-02-preview"], - ) - def delete( # pylint: disable=inconsistent-return-statements - self, resource_group_name: str, resource_name: str, **kwargs: Any - ) -> None: - """Deletes a managed cluster snapshot. - - :param resource_group_name: The name of the resource group. The name is case insensitive. - Required. - :type resource_group_name: str - :param resource_name: The name of the managed cluster resource. Required. - :type resource_name: str - :return: None - :rtype: None - :raises ~azure.core.exceptions.HttpResponseError: - """ - error_map: MutableMapping = { - 401: ClientAuthenticationError, - 404: ResourceNotFoundError, - 409: ResourceExistsError, - 304: ResourceNotModifiedError, - } - error_map.update(kwargs.pop("error_map", {}) or {}) - - _headers = kwargs.pop("headers", {}) or {} - _params = kwargs.pop("params", {}) or {} - - cls: ClsType[None] = kwargs.pop("cls", None) - - _request = build_managed_cluster_snapshots_delete_request( - resource_group_name=resource_group_name, - resource_name=resource_name, - subscription_id=self._config.subscription_id, - api_version=self._config.api_version, - headers=_headers, - params=_params, - ) - path_format_arguments = { - "endpoint": self._serialize.url("self._config.base_url", self._config.base_url, "str", skip_quote=True), - } - _request.url = self._client.format_url(_request.url, **path_format_arguments) - - _stream = False - pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access - _request, stream=_stream, **kwargs - ) - - response = pipeline_response.http_response - - if response.status_code not in [200, 204]: - map_error(status_code=response.status_code, response=response, error_map=error_map) - error = _failsafe_deserialize( - _models.ErrorResponse, - response, - ) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - - if cls: - return cls(pipeline_response, None, {}) # type: ignore - - @distributed_trace - @api_version_validation( - method_added_on="2026-03-02-preview", - params_added_on={"2026-03-02-preview": ["api_version", "subscription_id", "resource_group_name", "accept"]}, - api_versions_list=["2026-03-02-preview"], - ) - def list_by_resource_group( - self, resource_group_name: str, **kwargs: Any - ) -> ItemPaged["_models.ManagedClusterSnapshot"]: - """Lists managed cluster snapshots in the specified subscription and resource group. - - :param resource_group_name: The name of the resource group. The name is case insensitive. - Required. - :type resource_group_name: str - :return: An iterator like instance of ManagedClusterSnapshot - :rtype: - ~azure.core.paging.ItemPaged[~azure.mgmt.containerservice.models.ManagedClusterSnapshot] - :raises ~azure.core.exceptions.HttpResponseError: - """ - _headers = kwargs.pop("headers", {}) or {} - _params = kwargs.pop("params", {}) or {} - - cls: ClsType[List[_models.ManagedClusterSnapshot]] = kwargs.pop("cls", None) - - error_map: MutableMapping = { - 401: ClientAuthenticationError, - 404: ResourceNotFoundError, - 409: ResourceExistsError, - 304: ResourceNotModifiedError, - } - error_map.update(kwargs.pop("error_map", {}) or {}) - - def prepare_request(next_link=None): - if not next_link: - - _request = build_managed_cluster_snapshots_list_by_resource_group_request( - resource_group_name=resource_group_name, - subscription_id=self._config.subscription_id, - api_version=self._config.api_version, - headers=_headers, - params=_params, - ) - path_format_arguments = { - "endpoint": self._serialize.url( - "self._config.base_url", self._config.base_url, "str", skip_quote=True - ), - } - _request.url = self._client.format_url(_request.url, **path_format_arguments) - - else: - # make call to next link with the client's api-version - _parsed_next_link = urllib.parse.urlparse(next_link) - _next_request_params = case_insensitive_dict( - { - key: [urllib.parse.quote(v) for v in value] - for key, value in urllib.parse.parse_qs(_parsed_next_link.query).items() - } - ) - _next_request_params["api-version"] = self._config.api_version - _request = HttpRequest( - "GET", - urllib.parse.urljoin(next_link, _parsed_next_link.path), - headers=_headers, - params=_next_request_params, - ) - path_format_arguments = { - "endpoint": self._serialize.url( - "self._config.base_url", self._config.base_url, "str", skip_quote=True - ), - } - _request.url = self._client.format_url(_request.url, **path_format_arguments) - - return _request - - def extract_data(pipeline_response): - deserialized = pipeline_response.http_response.json() - list_of_elem = _deserialize( - List[_models.ManagedClusterSnapshot], - deserialized.get("value", []), - ) - if cls: - list_of_elem = cls(list_of_elem) # type: ignore - return deserialized.get("nextLink") or None, iter(list_of_elem) - - def get_next(next_link=None): - _request = prepare_request(next_link) - - _stream = False - pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access - _request, stream=_stream, **kwargs - ) - response = pipeline_response.http_response - - if response.status_code not in [200]: - map_error(status_code=response.status_code, response=response, error_map=error_map) - error = _failsafe_deserialize( - _models.ErrorResponse, - response, - ) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - - return pipeline_response - - return ItemPaged(get_next, extract_data) - - @distributed_trace - @api_version_validation( - method_added_on="2026-03-02-preview", - params_added_on={"2026-03-02-preview": ["api_version", "subscription_id", "accept"]}, - api_versions_list=["2026-03-02-preview"], - ) - def list(self, **kwargs: Any) -> ItemPaged["_models.ManagedClusterSnapshot"]: - """Gets a list of managed cluster snapshots in the specified subscription. - - :return: An iterator like instance of ManagedClusterSnapshot - :rtype: - ~azure.core.paging.ItemPaged[~azure.mgmt.containerservice.models.ManagedClusterSnapshot] - :raises ~azure.core.exceptions.HttpResponseError: - """ - _headers = kwargs.pop("headers", {}) or {} - _params = kwargs.pop("params", {}) or {} - - cls: ClsType[List[_models.ManagedClusterSnapshot]] = kwargs.pop("cls", None) - - error_map: MutableMapping = { - 401: ClientAuthenticationError, - 404: ResourceNotFoundError, - 409: ResourceExistsError, - 304: ResourceNotModifiedError, - } - error_map.update(kwargs.pop("error_map", {}) or {}) - - def prepare_request(next_link=None): - if not next_link: - - _request = build_managed_cluster_snapshots_list_request( - subscription_id=self._config.subscription_id, - api_version=self._config.api_version, - headers=_headers, - params=_params, - ) - path_format_arguments = { - "endpoint": self._serialize.url( - "self._config.base_url", self._config.base_url, "str", skip_quote=True - ), - } - _request.url = self._client.format_url(_request.url, **path_format_arguments) - - else: - # make call to next link with the client's api-version - _parsed_next_link = urllib.parse.urlparse(next_link) - _next_request_params = case_insensitive_dict( - { - key: [urllib.parse.quote(v) for v in value] - for key, value in urllib.parse.parse_qs(_parsed_next_link.query).items() - } - ) - _next_request_params["api-version"] = self._config.api_version - _request = HttpRequest( - "GET", - urllib.parse.urljoin(next_link, _parsed_next_link.path), - headers=_headers, - params=_next_request_params, - ) - path_format_arguments = { - "endpoint": self._serialize.url( - "self._config.base_url", self._config.base_url, "str", skip_quote=True - ), - } - _request.url = self._client.format_url(_request.url, **path_format_arguments) - - return _request - - def extract_data(pipeline_response): - deserialized = pipeline_response.http_response.json() - list_of_elem = _deserialize( - List[_models.ManagedClusterSnapshot], - deserialized.get("value", []), - ) - if cls: - list_of_elem = cls(list_of_elem) # type: ignore - return deserialized.get("nextLink") or None, iter(list_of_elem) - - def get_next(next_link=None): - _request = prepare_request(next_link) - - _stream = False - pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access - _request, stream=_stream, **kwargs - ) - response = pipeline_response.http_response - - if response.status_code not in [200]: - map_error(status_code=response.status_code, response=response, error_map=error_map) - error = _failsafe_deserialize( - _models.ErrorResponse, - response, - ) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - - return pipeline_response - - return ItemPaged(get_next, extract_data) - - -class TrustedAccessRoleBindingsOperations: - """ - .. warning:: - **DO NOT** instantiate this class directly. - - Instead, you should access the following operations through - :class:`~azure.mgmt.containerservice.ContainerServiceClient`'s - :attr:`trusted_access_role_bindings` attribute. - """ - - def __init__(self, *args, **kwargs) -> None: - input_args = list(args) - self._client: PipelineClient = input_args.pop(0) if input_args else kwargs.pop("client") - self._config: ContainerServiceClientConfiguration = input_args.pop(0) if input_args else kwargs.pop("config") - self._serialize: Serializer = input_args.pop(0) if input_args else kwargs.pop("serializer") - self._deserialize: Deserializer = input_args.pop(0) if input_args else kwargs.pop("deserializer") - - @distributed_trace - def get( - self, resource_group_name: str, resource_name: str, trusted_access_role_binding_name: str, **kwargs: Any - ) -> _models.TrustedAccessRoleBinding: - """Get a trusted access role binding. - - :param resource_group_name: The name of the resource group. The name is case insensitive. - Required. - :type resource_group_name: str - :param resource_name: The name of the managed cluster resource. Required. - :type resource_name: str - :param trusted_access_role_binding_name: The name of trusted access role binding. Required. - :type trusted_access_role_binding_name: str - :return: TrustedAccessRoleBinding. The TrustedAccessRoleBinding is compatible with - MutableMapping - :rtype: ~azure.mgmt.containerservice.models.TrustedAccessRoleBinding - :raises ~azure.core.exceptions.HttpResponseError: - """ - error_map: MutableMapping = { - 401: ClientAuthenticationError, - 404: ResourceNotFoundError, - 409: ResourceExistsError, - 304: ResourceNotModifiedError, - } - error_map.update(kwargs.pop("error_map", {}) or {}) - - _headers = kwargs.pop("headers", {}) or {} - _params = kwargs.pop("params", {}) or {} - - cls: ClsType[_models.TrustedAccessRoleBinding] = kwargs.pop("cls", None) - - _request = build_trusted_access_role_bindings_get_request( - resource_group_name=resource_group_name, - resource_name=resource_name, - trusted_access_role_binding_name=trusted_access_role_binding_name, - subscription_id=self._config.subscription_id, - api_version=self._config.api_version, - headers=_headers, - params=_params, - ) - path_format_arguments = { - "endpoint": self._serialize.url("self._config.base_url", self._config.base_url, "str", skip_quote=True), - } - _request.url = self._client.format_url(_request.url, **path_format_arguments) - - _decompress = kwargs.pop("decompress", True) - _stream = kwargs.pop("stream", False) - pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access - _request, stream=_stream, **kwargs - ) - - response = pipeline_response.http_response - - if response.status_code not in [200]: - if _stream: - try: - response.read() # Load the body in memory and close the socket - except (StreamConsumedError, StreamClosedError): - pass - map_error(status_code=response.status_code, response=response, error_map=error_map) - error = _failsafe_deserialize( - _models.ErrorResponse, - response, - ) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - - if _stream: - deserialized = response.iter_bytes() if _decompress else response.iter_raw() - else: - deserialized = _deserialize(_models.TrustedAccessRoleBinding, response.json()) - - if cls: - return cls(pipeline_response, deserialized, {}) # type: ignore - - return deserialized # type: ignore - - def _create_or_update_initial( - self, - resource_group_name: str, - resource_name: str, - trusted_access_role_binding_name: str, - trusted_access_role_binding: Union[_models.TrustedAccessRoleBinding, JSON, IO[bytes]], - **kwargs: Any - ) -> Iterator[bytes]: - error_map: MutableMapping = { - 401: ClientAuthenticationError, - 404: ResourceNotFoundError, - 409: ResourceExistsError, - 304: ResourceNotModifiedError, - } - error_map.update(kwargs.pop("error_map", {}) or {}) - - _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) - _params = kwargs.pop("params", {}) or {} - - content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) - cls: ClsType[Iterator[bytes]] = kwargs.pop("cls", None) - - content_type = content_type or "application/json" - _content = None - if isinstance(trusted_access_role_binding, (IOBase, bytes)): - _content = trusted_access_role_binding - else: - _content = json.dumps(trusted_access_role_binding, cls=SdkJSONEncoder, exclude_readonly=True) # type: ignore - - _request = build_trusted_access_role_bindings_create_or_update_request( - resource_group_name=resource_group_name, - resource_name=resource_name, - trusted_access_role_binding_name=trusted_access_role_binding_name, - subscription_id=self._config.subscription_id, - content_type=content_type, - api_version=self._config.api_version, - content=_content, - headers=_headers, - params=_params, - ) - path_format_arguments = { - "endpoint": self._serialize.url("self._config.base_url", self._config.base_url, "str", skip_quote=True), - } - _request.url = self._client.format_url(_request.url, **path_format_arguments) - - _decompress = kwargs.pop("decompress", True) - _stream = True - pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access - _request, stream=_stream, **kwargs - ) - - response = pipeline_response.http_response - - if response.status_code not in [200, 201]: - try: - response.read() # Load the body in memory and close the socket - except (StreamConsumedError, StreamClosedError): - pass - map_error(status_code=response.status_code, response=response, error_map=error_map) - error = _failsafe_deserialize( - _models.ErrorResponse, - response, - ) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - - response_headers = {} - if response.status_code == 201: - response_headers["Azure-AsyncOperation"] = self._deserialize( - "str", response.headers.get("Azure-AsyncOperation") - ) - response_headers["Retry-After"] = self._deserialize("int", response.headers.get("Retry-After")) - - deserialized = response.iter_bytes() if _decompress else response.iter_raw() - - if cls: - return cls(pipeline_response, deserialized, response_headers) # type: ignore - - return deserialized # type: ignore - - @overload - def begin_create_or_update( - self, - resource_group_name: str, - resource_name: str, - trusted_access_role_binding_name: str, - trusted_access_role_binding: _models.TrustedAccessRoleBinding, - *, - content_type: str = "application/json", - **kwargs: Any - ) -> LROPoller[_models.TrustedAccessRoleBinding]: - """Create or update a trusted access role binding. - - :param resource_group_name: The name of the resource group. The name is case insensitive. - Required. - :type resource_group_name: str - :param resource_name: The name of the managed cluster resource. Required. - :type resource_name: str - :param trusted_access_role_binding_name: The name of trusted access role binding. Required. - :type trusted_access_role_binding_name: str - :param trusted_access_role_binding: A trusted access role binding. Required. - :type trusted_access_role_binding: ~azure.mgmt.containerservice.models.TrustedAccessRoleBinding - :keyword content_type: Body Parameter content-type. Content type parameter for JSON body. - Default value is "application/json". - :paramtype content_type: str - :return: An instance of LROPoller that returns TrustedAccessRoleBinding. The - TrustedAccessRoleBinding is compatible with MutableMapping - :rtype: - ~azure.core.polling.LROPoller[~azure.mgmt.containerservice.models.TrustedAccessRoleBinding] - :raises ~azure.core.exceptions.HttpResponseError: - """ - - @overload - def begin_create_or_update( - self, - resource_group_name: str, - resource_name: str, - trusted_access_role_binding_name: str, - trusted_access_role_binding: JSON, - *, - content_type: str = "application/json", - **kwargs: Any - ) -> LROPoller[_models.TrustedAccessRoleBinding]: - """Create or update a trusted access role binding. - - :param resource_group_name: The name of the resource group. The name is case insensitive. - Required. - :type resource_group_name: str - :param resource_name: The name of the managed cluster resource. Required. - :type resource_name: str - :param trusted_access_role_binding_name: The name of trusted access role binding. Required. - :type trusted_access_role_binding_name: str - :param trusted_access_role_binding: A trusted access role binding. Required. - :type trusted_access_role_binding: JSON - :keyword content_type: Body Parameter content-type. Content type parameter for JSON body. - Default value is "application/json". - :paramtype content_type: str - :return: An instance of LROPoller that returns TrustedAccessRoleBinding. The - TrustedAccessRoleBinding is compatible with MutableMapping - :rtype: - ~azure.core.polling.LROPoller[~azure.mgmt.containerservice.models.TrustedAccessRoleBinding] - :raises ~azure.core.exceptions.HttpResponseError: - """ - - @overload - def begin_create_or_update( - self, - resource_group_name: str, - resource_name: str, - trusted_access_role_binding_name: str, - trusted_access_role_binding: IO[bytes], - *, - content_type: str = "application/json", - **kwargs: Any - ) -> LROPoller[_models.TrustedAccessRoleBinding]: - """Create or update a trusted access role binding. - - :param resource_group_name: The name of the resource group. The name is case insensitive. - Required. - :type resource_group_name: str - :param resource_name: The name of the managed cluster resource. Required. - :type resource_name: str - :param trusted_access_role_binding_name: The name of trusted access role binding. Required. - :type trusted_access_role_binding_name: str - :param trusted_access_role_binding: A trusted access role binding. Required. - :type trusted_access_role_binding: IO[bytes] - :keyword content_type: Body Parameter content-type. Content type parameter for binary body. - Default value is "application/json". - :paramtype content_type: str - :return: An instance of LROPoller that returns TrustedAccessRoleBinding. The - TrustedAccessRoleBinding is compatible with MutableMapping - :rtype: - ~azure.core.polling.LROPoller[~azure.mgmt.containerservice.models.TrustedAccessRoleBinding] - :raises ~azure.core.exceptions.HttpResponseError: - """ - - @distributed_trace - def begin_create_or_update( - self, - resource_group_name: str, - resource_name: str, - trusted_access_role_binding_name: str, - trusted_access_role_binding: Union[_models.TrustedAccessRoleBinding, JSON, IO[bytes]], - **kwargs: Any - ) -> LROPoller[_models.TrustedAccessRoleBinding]: - """Create or update a trusted access role binding. - - :param resource_group_name: The name of the resource group. The name is case insensitive. - Required. - :type resource_group_name: str - :param resource_name: The name of the managed cluster resource. Required. - :type resource_name: str - :param trusted_access_role_binding_name: The name of trusted access role binding. Required. - :type trusted_access_role_binding_name: str - :param trusted_access_role_binding: A trusted access role binding. Is one of the following - types: TrustedAccessRoleBinding, JSON, IO[bytes] Required. - :type trusted_access_role_binding: ~azure.mgmt.containerservice.models.TrustedAccessRoleBinding - or JSON or IO[bytes] - :return: An instance of LROPoller that returns TrustedAccessRoleBinding. The - TrustedAccessRoleBinding is compatible with MutableMapping - :rtype: - ~azure.core.polling.LROPoller[~azure.mgmt.containerservice.models.TrustedAccessRoleBinding] - :raises ~azure.core.exceptions.HttpResponseError: - """ - _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) - _params = kwargs.pop("params", {}) or {} - - content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) - cls: ClsType[_models.TrustedAccessRoleBinding] = kwargs.pop("cls", None) - polling: Union[bool, PollingMethod] = kwargs.pop("polling", True) - lro_delay = kwargs.pop("polling_interval", self._config.polling_interval) - cont_token: Optional[str] = kwargs.pop("continuation_token", None) - if cont_token is None: - raw_result = self._create_or_update_initial( - resource_group_name=resource_group_name, - resource_name=resource_name, - trusted_access_role_binding_name=trusted_access_role_binding_name, - trusted_access_role_binding=trusted_access_role_binding, - content_type=content_type, - cls=lambda x, y, z: x, - headers=_headers, - params=_params, - **kwargs - ) - raw_result.http_response.read() # type: ignore - kwargs.pop("error_map", None) - - def get_long_running_output(pipeline_response): - response = pipeline_response.http_response - deserialized = _deserialize(_models.TrustedAccessRoleBinding, response.json()) - if cls: - return cls(pipeline_response, deserialized, {}) # type: ignore - return deserialized - - path_format_arguments = { - "endpoint": self._serialize.url("self._config.base_url", self._config.base_url, "str", skip_quote=True), - } - - if polling is True: - polling_method: PollingMethod = cast( - PollingMethod, ARMPolling(lro_delay, path_format_arguments=path_format_arguments, **kwargs) - ) - elif polling is False: - polling_method = cast(PollingMethod, NoPolling()) - else: - polling_method = polling - if cont_token: - return LROPoller[_models.TrustedAccessRoleBinding].from_continuation_token( - polling_method=polling_method, - continuation_token=cont_token, - client=self._client, - deserialization_callback=get_long_running_output, - ) - return LROPoller[_models.TrustedAccessRoleBinding]( - self._client, raw_result, get_long_running_output, polling_method # type: ignore - ) - - def _delete_initial( - self, resource_group_name: str, resource_name: str, trusted_access_role_binding_name: str, **kwargs: Any - ) -> Iterator[bytes]: - error_map: MutableMapping = { - 401: ClientAuthenticationError, - 404: ResourceNotFoundError, - 409: ResourceExistsError, - 304: ResourceNotModifiedError, - } - error_map.update(kwargs.pop("error_map", {}) or {}) - - _headers = kwargs.pop("headers", {}) or {} - _params = kwargs.pop("params", {}) or {} - - cls: ClsType[Iterator[bytes]] = kwargs.pop("cls", None) - - _request = build_trusted_access_role_bindings_delete_request( - resource_group_name=resource_group_name, - resource_name=resource_name, - trusted_access_role_binding_name=trusted_access_role_binding_name, - subscription_id=self._config.subscription_id, - api_version=self._config.api_version, - headers=_headers, - params=_params, - ) - path_format_arguments = { - "endpoint": self._serialize.url("self._config.base_url", self._config.base_url, "str", skip_quote=True), - } - _request.url = self._client.format_url(_request.url, **path_format_arguments) - - _decompress = kwargs.pop("decompress", True) - _stream = True - pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access - _request, stream=_stream, **kwargs - ) - - response = pipeline_response.http_response - - if response.status_code not in [202, 204]: - try: - response.read() # Load the body in memory and close the socket - except (StreamConsumedError, StreamClosedError): - pass - map_error(status_code=response.status_code, response=response, error_map=error_map) - error = _failsafe_deserialize( - _models.ErrorResponse, - response, - ) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - - response_headers = {} - if response.status_code == 202: - response_headers["Azure-AsyncOperation"] = self._deserialize( - "str", response.headers.get("Azure-AsyncOperation") - ) - response_headers["Location"] = self._deserialize("str", response.headers.get("Location")) - response_headers["Retry-After"] = self._deserialize("int", response.headers.get("Retry-After")) - - deserialized = response.iter_bytes() if _decompress else response.iter_raw() - - if cls: - return cls(pipeline_response, deserialized, response_headers) # type: ignore - - return deserialized # type: ignore - - @distributed_trace - def begin_delete( - self, resource_group_name: str, resource_name: str, trusted_access_role_binding_name: str, **kwargs: Any - ) -> LROPoller[None]: - """Delete a trusted access role binding. - - :param resource_group_name: The name of the resource group. The name is case insensitive. - Required. - :type resource_group_name: str - :param resource_name: The name of the managed cluster resource. Required. - :type resource_name: str - :param trusted_access_role_binding_name: The name of trusted access role binding. Required. - :type trusted_access_role_binding_name: str - :return: An instance of LROPoller that returns None - :rtype: ~azure.core.polling.LROPoller[None] - :raises ~azure.core.exceptions.HttpResponseError: - """ - _headers = kwargs.pop("headers", {}) or {} - _params = kwargs.pop("params", {}) or {} - - cls: ClsType[None] = kwargs.pop("cls", None) - polling: Union[bool, PollingMethod] = kwargs.pop("polling", True) - lro_delay = kwargs.pop("polling_interval", self._config.polling_interval) - cont_token: Optional[str] = kwargs.pop("continuation_token", None) - if cont_token is None: - raw_result = self._delete_initial( - resource_group_name=resource_group_name, - resource_name=resource_name, - trusted_access_role_binding_name=trusted_access_role_binding_name, - cls=lambda x, y, z: x, - headers=_headers, - params=_params, - **kwargs - ) - raw_result.http_response.read() # type: ignore - kwargs.pop("error_map", None) - - def get_long_running_output(pipeline_response): # pylint: disable=inconsistent-return-statements - if cls: - return cls(pipeline_response, None, {}) # type: ignore - - path_format_arguments = { - "endpoint": self._serialize.url("self._config.base_url", self._config.base_url, "str", skip_quote=True), - } - - if polling is True: - polling_method: PollingMethod = cast( - PollingMethod, ARMPolling(lro_delay, path_format_arguments=path_format_arguments, **kwargs) - ) - elif polling is False: - polling_method = cast(PollingMethod, NoPolling()) - else: - polling_method = polling - if cont_token: - return LROPoller[None].from_continuation_token( - polling_method=polling_method, - continuation_token=cont_token, - client=self._client, - deserialization_callback=get_long_running_output, - ) - return LROPoller[None](self._client, raw_result, get_long_running_output, polling_method) # type: ignore - - @distributed_trace - def list( - self, resource_group_name: str, resource_name: str, **kwargs: Any - ) -> ItemPaged["_models.TrustedAccessRoleBinding"]: - """List trusted access role bindings. - - :param resource_group_name: The name of the resource group. The name is case insensitive. - Required. - :type resource_group_name: str - :param resource_name: The name of the managed cluster resource. Required. - :type resource_name: str - :return: An iterator like instance of TrustedAccessRoleBinding - :rtype: - ~azure.core.paging.ItemPaged[~azure.mgmt.containerservice.models.TrustedAccessRoleBinding] - :raises ~azure.core.exceptions.HttpResponseError: - """ - _headers = kwargs.pop("headers", {}) or {} - _params = kwargs.pop("params", {}) or {} - - cls: ClsType[List[_models.TrustedAccessRoleBinding]] = kwargs.pop("cls", None) - - error_map: MutableMapping = { - 401: ClientAuthenticationError, - 404: ResourceNotFoundError, - 409: ResourceExistsError, - 304: ResourceNotModifiedError, - } - error_map.update(kwargs.pop("error_map", {}) or {}) - - def prepare_request(next_link=None): - if not next_link: - - _request = build_trusted_access_role_bindings_list_request( - resource_group_name=resource_group_name, - resource_name=resource_name, - subscription_id=self._config.subscription_id, - api_version=self._config.api_version, - headers=_headers, - params=_params, - ) - path_format_arguments = { - "endpoint": self._serialize.url( - "self._config.base_url", self._config.base_url, "str", skip_quote=True - ), - } - _request.url = self._client.format_url(_request.url, **path_format_arguments) - - else: - # make call to next link with the client's api-version - _parsed_next_link = urllib.parse.urlparse(next_link) - _next_request_params = case_insensitive_dict( - { - key: [urllib.parse.quote(v) for v in value] - for key, value in urllib.parse.parse_qs(_parsed_next_link.query).items() - } - ) - _next_request_params["api-version"] = self._config.api_version - _request = HttpRequest( - "GET", - urllib.parse.urljoin(next_link, _parsed_next_link.path), - headers=_headers, - params=_next_request_params, - ) - path_format_arguments = { - "endpoint": self._serialize.url( - "self._config.base_url", self._config.base_url, "str", skip_quote=True - ), - } - _request.url = self._client.format_url(_request.url, **path_format_arguments) - - return _request - - def extract_data(pipeline_response): - deserialized = pipeline_response.http_response.json() - list_of_elem = _deserialize( - List[_models.TrustedAccessRoleBinding], - deserialized.get("value", []), - ) - if cls: - list_of_elem = cls(list_of_elem) # type: ignore - return deserialized.get("nextLink") or None, iter(list_of_elem) - - def get_next(next_link=None): - _request = prepare_request(next_link) - - _stream = False - pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access - _request, stream=_stream, **kwargs - ) - response = pipeline_response.http_response - - if response.status_code not in [200]: - map_error(status_code=response.status_code, response=response, error_map=error_map) - error = _failsafe_deserialize( - _models.ErrorResponse, - response, - ) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - - return pipeline_response - - return ItemPaged(get_next, extract_data) - - -class LoadBalancersOperations: - """ - .. warning:: - **DO NOT** instantiate this class directly. - - Instead, you should access the following operations through - :class:`~azure.mgmt.containerservice.ContainerServiceClient`'s - :attr:`load_balancers` attribute. - """ - - def __init__(self, *args, **kwargs) -> None: - input_args = list(args) - self._client: PipelineClient = input_args.pop(0) if input_args else kwargs.pop("client") - self._config: ContainerServiceClientConfiguration = input_args.pop(0) if input_args else kwargs.pop("config") - self._serialize: Serializer = input_args.pop(0) if input_args else kwargs.pop("serializer") - self._deserialize: Deserializer = input_args.pop(0) if input_args else kwargs.pop("deserializer") - - @distributed_trace - @api_version_validation( - method_added_on="2026-03-02-preview", - params_added_on={ - "2026-03-02-preview": [ - "api_version", - "subscription_id", - "resource_group_name", - "resource_name", - "load_balancer_name", - "accept", - ] - }, - api_versions_list=["2026-03-02-preview"], - ) - def get( - self, resource_group_name: str, resource_name: str, load_balancer_name: str, **kwargs: Any - ) -> _models.LoadBalancer: - """Gets the specified load balancer. - - :param resource_group_name: The name of the resource group. The name is case insensitive. - Required. - :type resource_group_name: str - :param resource_name: The name of the managed cluster resource. Required. - :type resource_name: str - :param load_balancer_name: The name of the load balancer. Required. - :type load_balancer_name: str - :return: LoadBalancer. The LoadBalancer is compatible with MutableMapping - :rtype: ~azure.mgmt.containerservice.models.LoadBalancer - :raises ~azure.core.exceptions.HttpResponseError: - """ - error_map: MutableMapping = { - 401: ClientAuthenticationError, - 404: ResourceNotFoundError, - 409: ResourceExistsError, - 304: ResourceNotModifiedError, - } - error_map.update(kwargs.pop("error_map", {}) or {}) - - _headers = kwargs.pop("headers", {}) or {} - _params = kwargs.pop("params", {}) or {} - - cls: ClsType[_models.LoadBalancer] = kwargs.pop("cls", None) - - _request = build_load_balancers_get_request( - resource_group_name=resource_group_name, - resource_name=resource_name, - load_balancer_name=load_balancer_name, - subscription_id=self._config.subscription_id, - api_version=self._config.api_version, - headers=_headers, - params=_params, - ) - path_format_arguments = { - "endpoint": self._serialize.url("self._config.base_url", self._config.base_url, "str", skip_quote=True), - } - _request.url = self._client.format_url(_request.url, **path_format_arguments) - - _decompress = kwargs.pop("decompress", True) - _stream = kwargs.pop("stream", False) - pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access - _request, stream=_stream, **kwargs - ) - - response = pipeline_response.http_response - - if response.status_code not in [200]: - if _stream: - try: - response.read() # Load the body in memory and close the socket - except (StreamConsumedError, StreamClosedError): - pass - map_error(status_code=response.status_code, response=response, error_map=error_map) - error = _failsafe_deserialize( - _models.ErrorResponse, - response, - ) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - - if _stream: - deserialized = response.iter_bytes() if _decompress else response.iter_raw() - else: - deserialized = _deserialize(_models.LoadBalancer, response.json()) - - if cls: - return cls(pipeline_response, deserialized, {}) # type: ignore - - return deserialized # type: ignore - - @overload - def create_or_update( - self, - resource_group_name: str, - resource_name: str, - load_balancer_name: str, - parameters: _models.LoadBalancer, - *, - content_type: str = "application/json", - **kwargs: Any - ) -> _models.LoadBalancer: - """Creates or updates a load balancer in the specified managed cluster. - - :param resource_group_name: The name of the resource group. The name is case insensitive. - Required. - :type resource_group_name: str - :param resource_name: The name of the managed cluster resource. Required. - :type resource_name: str - :param load_balancer_name: The name of the load balancer. Required. - :type load_balancer_name: str - :param parameters: The load balancer to create or update. Required. - :type parameters: ~azure.mgmt.containerservice.models.LoadBalancer - :keyword content_type: Body Parameter content-type. Content type parameter for JSON body. - Default value is "application/json". - :paramtype content_type: str - :return: LoadBalancer. The LoadBalancer is compatible with MutableMapping - :rtype: ~azure.mgmt.containerservice.models.LoadBalancer - :raises ~azure.core.exceptions.HttpResponseError: - """ - - @overload - def create_or_update( - self, - resource_group_name: str, - resource_name: str, - load_balancer_name: str, - parameters: JSON, - *, - content_type: str = "application/json", - **kwargs: Any - ) -> _models.LoadBalancer: - """Creates or updates a load balancer in the specified managed cluster. - - :param resource_group_name: The name of the resource group. The name is case insensitive. - Required. - :type resource_group_name: str - :param resource_name: The name of the managed cluster resource. Required. - :type resource_name: str - :param load_balancer_name: The name of the load balancer. Required. - :type load_balancer_name: str - :param parameters: The load balancer to create or update. Required. - :type parameters: JSON - :keyword content_type: Body Parameter content-type. Content type parameter for JSON body. - Default value is "application/json". - :paramtype content_type: str - :return: LoadBalancer. The LoadBalancer is compatible with MutableMapping - :rtype: ~azure.mgmt.containerservice.models.LoadBalancer - :raises ~azure.core.exceptions.HttpResponseError: - """ - - @overload - def create_or_update( - self, - resource_group_name: str, - resource_name: str, - load_balancer_name: str, - parameters: IO[bytes], - *, - content_type: str = "application/json", - **kwargs: Any - ) -> _models.LoadBalancer: - """Creates or updates a load balancer in the specified managed cluster. - - :param resource_group_name: The name of the resource group. The name is case insensitive. - Required. - :type resource_group_name: str - :param resource_name: The name of the managed cluster resource. Required. - :type resource_name: str - :param load_balancer_name: The name of the load balancer. Required. - :type load_balancer_name: str - :param parameters: The load balancer to create or update. Required. - :type parameters: IO[bytes] - :keyword content_type: Body Parameter content-type. Content type parameter for binary body. - Default value is "application/json". - :paramtype content_type: str - :return: LoadBalancer. The LoadBalancer is compatible with MutableMapping - :rtype: ~azure.mgmt.containerservice.models.LoadBalancer - :raises ~azure.core.exceptions.HttpResponseError: - """ - - @distributed_trace - @api_version_validation( - method_added_on="2026-03-02-preview", - params_added_on={ - "2026-03-02-preview": [ - "api_version", - "subscription_id", - "resource_group_name", - "resource_name", - "load_balancer_name", - "content_type", - "accept", - ] - }, - api_versions_list=["2026-03-02-preview"], - ) - def create_or_update( - self, - resource_group_name: str, - resource_name: str, - load_balancer_name: str, - parameters: Union[_models.LoadBalancer, JSON, IO[bytes]], - **kwargs: Any - ) -> _models.LoadBalancer: - """Creates or updates a load balancer in the specified managed cluster. - - :param resource_group_name: The name of the resource group. The name is case insensitive. - Required. - :type resource_group_name: str - :param resource_name: The name of the managed cluster resource. Required. - :type resource_name: str - :param load_balancer_name: The name of the load balancer. Required. - :type load_balancer_name: str - :param parameters: The load balancer to create or update. Is one of the following types: - LoadBalancer, JSON, IO[bytes] Required. - :type parameters: ~azure.mgmt.containerservice.models.LoadBalancer or JSON or IO[bytes] - :return: LoadBalancer. The LoadBalancer is compatible with MutableMapping - :rtype: ~azure.mgmt.containerservice.models.LoadBalancer - :raises ~azure.core.exceptions.HttpResponseError: - """ - error_map: MutableMapping = { - 401: ClientAuthenticationError, - 404: ResourceNotFoundError, - 409: ResourceExistsError, - 304: ResourceNotModifiedError, - } - error_map.update(kwargs.pop("error_map", {}) or {}) - - _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) - _params = kwargs.pop("params", {}) or {} - - content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) - cls: ClsType[_models.LoadBalancer] = kwargs.pop("cls", None) - - content_type = content_type or "application/json" - _content = None - if isinstance(parameters, (IOBase, bytes)): - _content = parameters - else: - _content = json.dumps(parameters, cls=SdkJSONEncoder, exclude_readonly=True) # type: ignore - - _request = build_load_balancers_create_or_update_request( - resource_group_name=resource_group_name, - resource_name=resource_name, - load_balancer_name=load_balancer_name, - subscription_id=self._config.subscription_id, - content_type=content_type, - api_version=self._config.api_version, - content=_content, - headers=_headers, - params=_params, - ) - path_format_arguments = { - "endpoint": self._serialize.url("self._config.base_url", self._config.base_url, "str", skip_quote=True), - } - _request.url = self._client.format_url(_request.url, **path_format_arguments) - - _decompress = kwargs.pop("decompress", True) - _stream = kwargs.pop("stream", False) - pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access - _request, stream=_stream, **kwargs - ) - - response = pipeline_response.http_response - - if response.status_code not in [200, 201]: - if _stream: - try: - response.read() # Load the body in memory and close the socket - except (StreamConsumedError, StreamClosedError): - pass - map_error(status_code=response.status_code, response=response, error_map=error_map) - error = _failsafe_deserialize( - _models.ErrorResponse, - response, - ) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - - if _stream: - deserialized = response.iter_bytes() if _decompress else response.iter_raw() - else: - deserialized = _deserialize(_models.LoadBalancer, response.json()) - - if cls: - return cls(pipeline_response, deserialized, {}) # type: ignore - - return deserialized # type: ignore - - @api_version_validation( - method_added_on="2026-03-02-preview", - params_added_on={ - "2026-03-02-preview": [ - "api_version", - "subscription_id", - "resource_group_name", - "resource_name", - "load_balancer_name", - ] - }, - api_versions_list=["2026-03-02-preview"], - ) - def _delete_initial( - self, resource_group_name: str, resource_name: str, load_balancer_name: str, **kwargs: Any - ) -> Iterator[bytes]: - error_map: MutableMapping = { - 401: ClientAuthenticationError, - 404: ResourceNotFoundError, - 409: ResourceExistsError, - 304: ResourceNotModifiedError, - } - error_map.update(kwargs.pop("error_map", {}) or {}) - - _headers = kwargs.pop("headers", {}) or {} - _params = kwargs.pop("params", {}) or {} - - cls: ClsType[Iterator[bytes]] = kwargs.pop("cls", None) - - _request = build_load_balancers_delete_request( - resource_group_name=resource_group_name, - resource_name=resource_name, - load_balancer_name=load_balancer_name, - subscription_id=self._config.subscription_id, - api_version=self._config.api_version, - headers=_headers, - params=_params, - ) - path_format_arguments = { - "endpoint": self._serialize.url("self._config.base_url", self._config.base_url, "str", skip_quote=True), - } - _request.url = self._client.format_url(_request.url, **path_format_arguments) - - _decompress = kwargs.pop("decompress", True) - _stream = True - pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access - _request, stream=_stream, **kwargs - ) - - response = pipeline_response.http_response - - if response.status_code not in [202, 204]: - try: - response.read() # Load the body in memory and close the socket - except (StreamConsumedError, StreamClosedError): - pass - map_error(status_code=response.status_code, response=response, error_map=error_map) - error = _failsafe_deserialize( - _models.ErrorResponse, - response, - ) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - - response_headers = {} - if response.status_code == 202: - response_headers["Azure-AsyncOperation"] = self._deserialize( - "str", response.headers.get("Azure-AsyncOperation") - ) - response_headers["Location"] = self._deserialize("str", response.headers.get("Location")) - response_headers["Retry-After"] = self._deserialize("int", response.headers.get("Retry-After")) - - deserialized = response.iter_bytes() if _decompress else response.iter_raw() - - if cls: - return cls(pipeline_response, deserialized, response_headers) # type: ignore - - return deserialized # type: ignore - - @distributed_trace - @api_version_validation( - method_added_on="2026-03-02-preview", - params_added_on={ - "2026-03-02-preview": [ - "api_version", - "subscription_id", - "resource_group_name", - "resource_name", - "load_balancer_name", - ] - }, - api_versions_list=["2026-03-02-preview"], - ) - def begin_delete( - self, resource_group_name: str, resource_name: str, load_balancer_name: str, **kwargs: Any - ) -> LROPoller[None]: - """Deletes a load balancer in the specified managed cluster. - - :param resource_group_name: The name of the resource group. The name is case insensitive. - Required. - :type resource_group_name: str - :param resource_name: The name of the managed cluster resource. Required. - :type resource_name: str - :param load_balancer_name: The name of the load balancer. Required. - :type load_balancer_name: str - :return: An instance of LROPoller that returns None - :rtype: ~azure.core.polling.LROPoller[None] - :raises ~azure.core.exceptions.HttpResponseError: - """ - _headers = kwargs.pop("headers", {}) or {} - _params = kwargs.pop("params", {}) or {} - - cls: ClsType[None] = kwargs.pop("cls", None) - polling: Union[bool, PollingMethod] = kwargs.pop("polling", True) - lro_delay = kwargs.pop("polling_interval", self._config.polling_interval) - cont_token: Optional[str] = kwargs.pop("continuation_token", None) - if cont_token is None: - raw_result = self._delete_initial( - resource_group_name=resource_group_name, - resource_name=resource_name, - load_balancer_name=load_balancer_name, - cls=lambda x, y, z: x, - headers=_headers, - params=_params, - **kwargs - ) - raw_result.http_response.read() # type: ignore - kwargs.pop("error_map", None) - - def get_long_running_output(pipeline_response): # pylint: disable=inconsistent-return-statements - if cls: - return cls(pipeline_response, None, {}) # type: ignore - - path_format_arguments = { - "endpoint": self._serialize.url("self._config.base_url", self._config.base_url, "str", skip_quote=True), - } - - if polling is True: - polling_method: PollingMethod = cast( - PollingMethod, ARMPolling(lro_delay, path_format_arguments=path_format_arguments, **kwargs) - ) - elif polling is False: - polling_method = cast(PollingMethod, NoPolling()) - else: - polling_method = polling - if cont_token: - return LROPoller[None].from_continuation_token( - polling_method=polling_method, - continuation_token=cont_token, - client=self._client, - deserialization_callback=get_long_running_output, - ) - return LROPoller[None](self._client, raw_result, get_long_running_output, polling_method) # type: ignore - - @distributed_trace - @api_version_validation( - method_added_on="2026-03-02-preview", - params_added_on={ - "2026-03-02-preview": ["api_version", "subscription_id", "resource_group_name", "resource_name", "accept"] - }, - api_versions_list=["2026-03-02-preview"], - ) - def list_by_managed_cluster( - self, resource_group_name: str, resource_name: str, **kwargs: Any - ) -> ItemPaged["_models.LoadBalancer"]: - """Gets a list of load balancers in the specified managed cluster. - - :param resource_group_name: The name of the resource group. The name is case insensitive. - Required. - :type resource_group_name: str - :param resource_name: The name of the managed cluster resource. Required. - :type resource_name: str - :return: An iterator like instance of LoadBalancer - :rtype: ~azure.core.paging.ItemPaged[~azure.mgmt.containerservice.models.LoadBalancer] - :raises ~azure.core.exceptions.HttpResponseError: - """ - _headers = kwargs.pop("headers", {}) or {} - _params = kwargs.pop("params", {}) or {} - - cls: ClsType[List[_models.LoadBalancer]] = kwargs.pop("cls", None) - - error_map: MutableMapping = { - 401: ClientAuthenticationError, - 404: ResourceNotFoundError, - 409: ResourceExistsError, - 304: ResourceNotModifiedError, - } - error_map.update(kwargs.pop("error_map", {}) or {}) - - def prepare_request(next_link=None): - if not next_link: - - _request = build_load_balancers_list_by_managed_cluster_request( - resource_group_name=resource_group_name, - resource_name=resource_name, - subscription_id=self._config.subscription_id, - api_version=self._config.api_version, - headers=_headers, - params=_params, - ) - path_format_arguments = { - "endpoint": self._serialize.url( - "self._config.base_url", self._config.base_url, "str", skip_quote=True - ), - } - _request.url = self._client.format_url(_request.url, **path_format_arguments) - - else: - # make call to next link with the client's api-version - _parsed_next_link = urllib.parse.urlparse(next_link) - _next_request_params = case_insensitive_dict( - { - key: [urllib.parse.quote(v) for v in value] - for key, value in urllib.parse.parse_qs(_parsed_next_link.query).items() - } - ) - _next_request_params["api-version"] = self._config.api_version - _request = HttpRequest( - "GET", - urllib.parse.urljoin(next_link, _parsed_next_link.path), - headers=_headers, - params=_next_request_params, - ) - path_format_arguments = { - "endpoint": self._serialize.url( - "self._config.base_url", self._config.base_url, "str", skip_quote=True - ), - } - _request.url = self._client.format_url(_request.url, **path_format_arguments) - - return _request - - def extract_data(pipeline_response): - deserialized = pipeline_response.http_response.json() - list_of_elem = _deserialize( - List[_models.LoadBalancer], - deserialized.get("value", []), - ) - if cls: - list_of_elem = cls(list_of_elem) # type: ignore - return deserialized.get("nextLink") or None, iter(list_of_elem) - - def get_next(next_link=None): - _request = prepare_request(next_link) - - _stream = False - pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access - _request, stream=_stream, **kwargs - ) - response = pipeline_response.http_response - - if response.status_code not in [200]: - map_error(status_code=response.status_code, response=response, error_map=error_map) - error = _failsafe_deserialize( - _models.ErrorResponse, - response, - ) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - - return pipeline_response - - return ItemPaged(get_next, extract_data) - - -class IdentityBindingsOperations: - """ - .. warning:: - **DO NOT** instantiate this class directly. - - Instead, you should access the following operations through - :class:`~azure.mgmt.containerservice.ContainerServiceClient`'s - :attr:`identity_bindings` attribute. - """ - - def __init__(self, *args, **kwargs) -> None: - input_args = list(args) - self._client: PipelineClient = input_args.pop(0) if input_args else kwargs.pop("client") - self._config: ContainerServiceClientConfiguration = input_args.pop(0) if input_args else kwargs.pop("config") - self._serialize: Serializer = input_args.pop(0) if input_args else kwargs.pop("serializer") - self._deserialize: Deserializer = input_args.pop(0) if input_args else kwargs.pop("deserializer") - - @distributed_trace - @api_version_validation( - method_added_on="2026-03-02-preview", - params_added_on={ - "2026-03-02-preview": [ - "api_version", - "subscription_id", - "resource_group_name", - "resource_name", - "identity_binding_name", - "accept", - ] - }, - api_versions_list=["2026-03-02-preview"], - ) - def get( - self, resource_group_name: str, resource_name: str, identity_binding_name: str, **kwargs: Any - ) -> _models.IdentityBinding: - """Gets the specified Identity Binding. - - :param resource_group_name: The name of the resource group. The name is case insensitive. - Required. - :type resource_group_name: str - :param resource_name: The name of the managed cluster resource. Required. - :type resource_name: str - :param identity_binding_name: The name of the identity binding. Required. - :type identity_binding_name: str - :return: IdentityBinding. The IdentityBinding is compatible with MutableMapping - :rtype: ~azure.mgmt.containerservice.models.IdentityBinding - :raises ~azure.core.exceptions.HttpResponseError: - """ - error_map: MutableMapping = { - 401: ClientAuthenticationError, - 404: ResourceNotFoundError, - 409: ResourceExistsError, - 304: ResourceNotModifiedError, - } - error_map.update(kwargs.pop("error_map", {}) or {}) - - _headers = kwargs.pop("headers", {}) or {} - _params = kwargs.pop("params", {}) or {} - - cls: ClsType[_models.IdentityBinding] = kwargs.pop("cls", None) - - _request = build_identity_bindings_get_request( - resource_group_name=resource_group_name, - resource_name=resource_name, - identity_binding_name=identity_binding_name, - subscription_id=self._config.subscription_id, - api_version=self._config.api_version, - headers=_headers, - params=_params, - ) - path_format_arguments = { - "endpoint": self._serialize.url("self._config.base_url", self._config.base_url, "str", skip_quote=True), - } - _request.url = self._client.format_url(_request.url, **path_format_arguments) - - _decompress = kwargs.pop("decompress", True) - _stream = kwargs.pop("stream", False) - pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access - _request, stream=_stream, **kwargs - ) - - response = pipeline_response.http_response - - if response.status_code not in [200]: - if _stream: - try: - response.read() # Load the body in memory and close the socket - except (StreamConsumedError, StreamClosedError): - pass - map_error(status_code=response.status_code, response=response, error_map=error_map) - error = _failsafe_deserialize( - _models.ErrorResponse, - response, - ) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - - if _stream: - deserialized = response.iter_bytes() if _decompress else response.iter_raw() - else: - deserialized = _deserialize(_models.IdentityBinding, response.json()) - - if cls: - return cls(pipeline_response, deserialized, {}) # type: ignore - - return deserialized # type: ignore - - @api_version_validation( - method_added_on="2026-03-02-preview", - params_added_on={ - "2026-03-02-preview": [ - "api_version", - "subscription_id", - "resource_group_name", - "resource_name", - "identity_binding_name", - "content_type", - "accept", - ] - }, - api_versions_list=["2026-03-02-preview"], - ) - def _create_or_update_initial( - self, - resource_group_name: str, - resource_name: str, - identity_binding_name: str, - parameters: Union[_models.IdentityBinding, JSON, IO[bytes]], - **kwargs: Any - ) -> Iterator[bytes]: - error_map: MutableMapping = { - 401: ClientAuthenticationError, - 404: ResourceNotFoundError, - 409: ResourceExistsError, - 304: ResourceNotModifiedError, - } - error_map.update(kwargs.pop("error_map", {}) or {}) - - _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) - _params = kwargs.pop("params", {}) or {} - - content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) - cls: ClsType[Iterator[bytes]] = kwargs.pop("cls", None) - - content_type = content_type or "application/json" - _content = None - if isinstance(parameters, (IOBase, bytes)): - _content = parameters - else: - _content = json.dumps(parameters, cls=SdkJSONEncoder, exclude_readonly=True) # type: ignore - - _request = build_identity_bindings_create_or_update_request( - resource_group_name=resource_group_name, - resource_name=resource_name, - identity_binding_name=identity_binding_name, - subscription_id=self._config.subscription_id, - content_type=content_type, - api_version=self._config.api_version, - content=_content, - headers=_headers, - params=_params, - ) - path_format_arguments = { - "endpoint": self._serialize.url("self._config.base_url", self._config.base_url, "str", skip_quote=True), - } - _request.url = self._client.format_url(_request.url, **path_format_arguments) - - _decompress = kwargs.pop("decompress", True) - _stream = True - pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access - _request, stream=_stream, **kwargs - ) - - response = pipeline_response.http_response - - if response.status_code not in [200, 201]: - try: - response.read() # Load the body in memory and close the socket - except (StreamConsumedError, StreamClosedError): - pass - map_error(status_code=response.status_code, response=response, error_map=error_map) - error = _failsafe_deserialize( - _models.ErrorResponse, - response, - ) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - - response_headers = {} - if response.status_code == 201: - response_headers["Azure-AsyncOperation"] = self._deserialize( - "str", response.headers.get("Azure-AsyncOperation") - ) - response_headers["Location"] = self._deserialize("str", response.headers.get("Location")) - response_headers["Retry-After"] = self._deserialize("int", response.headers.get("Retry-After")) - - deserialized = response.iter_bytes() if _decompress else response.iter_raw() - - if cls: - return cls(pipeline_response, deserialized, response_headers) # type: ignore - - return deserialized # type: ignore - - @overload - def begin_create_or_update( - self, - resource_group_name: str, - resource_name: str, - identity_binding_name: str, - parameters: _models.IdentityBinding, - *, - content_type: str = "application/json", - **kwargs: Any - ) -> LROPoller[_models.IdentityBinding]: - """Creates or updates an identity binding in the specified managed cluster. - - :param resource_group_name: The name of the resource group. The name is case insensitive. - Required. - :type resource_group_name: str - :param resource_name: The name of the managed cluster resource. Required. - :type resource_name: str - :param identity_binding_name: The name of the identity binding. Required. - :type identity_binding_name: str - :param parameters: The identity binding to create or update. Required. - :type parameters: ~azure.mgmt.containerservice.models.IdentityBinding - :keyword content_type: Body Parameter content-type. Content type parameter for JSON body. - Default value is "application/json". - :paramtype content_type: str - :return: An instance of LROPoller that returns IdentityBinding. The IdentityBinding is - compatible with MutableMapping - :rtype: ~azure.core.polling.LROPoller[~azure.mgmt.containerservice.models.IdentityBinding] - :raises ~azure.core.exceptions.HttpResponseError: - """ - - @overload - def begin_create_or_update( - self, - resource_group_name: str, - resource_name: str, - identity_binding_name: str, - parameters: JSON, - *, - content_type: str = "application/json", - **kwargs: Any - ) -> LROPoller[_models.IdentityBinding]: - """Creates or updates an identity binding in the specified managed cluster. - - :param resource_group_name: The name of the resource group. The name is case insensitive. - Required. - :type resource_group_name: str - :param resource_name: The name of the managed cluster resource. Required. - :type resource_name: str - :param identity_binding_name: The name of the identity binding. Required. - :type identity_binding_name: str - :param parameters: The identity binding to create or update. Required. - :type parameters: JSON - :keyword content_type: Body Parameter content-type. Content type parameter for JSON body. - Default value is "application/json". - :paramtype content_type: str - :return: An instance of LROPoller that returns IdentityBinding. The IdentityBinding is - compatible with MutableMapping - :rtype: ~azure.core.polling.LROPoller[~azure.mgmt.containerservice.models.IdentityBinding] - :raises ~azure.core.exceptions.HttpResponseError: - """ - - @overload - def begin_create_or_update( - self, - resource_group_name: str, - resource_name: str, - identity_binding_name: str, - parameters: IO[bytes], - *, - content_type: str = "application/json", - **kwargs: Any - ) -> LROPoller[_models.IdentityBinding]: - """Creates or updates an identity binding in the specified managed cluster. - - :param resource_group_name: The name of the resource group. The name is case insensitive. - Required. - :type resource_group_name: str - :param resource_name: The name of the managed cluster resource. Required. - :type resource_name: str - :param identity_binding_name: The name of the identity binding. Required. - :type identity_binding_name: str - :param parameters: The identity binding to create or update. Required. - :type parameters: IO[bytes] - :keyword content_type: Body Parameter content-type. Content type parameter for binary body. - Default value is "application/json". - :paramtype content_type: str - :return: An instance of LROPoller that returns IdentityBinding. The IdentityBinding is - compatible with MutableMapping - :rtype: ~azure.core.polling.LROPoller[~azure.mgmt.containerservice.models.IdentityBinding] - :raises ~azure.core.exceptions.HttpResponseError: - """ - - @distributed_trace - @api_version_validation( - method_added_on="2026-03-02-preview", - params_added_on={ - "2026-03-02-preview": [ - "api_version", - "subscription_id", - "resource_group_name", - "resource_name", - "identity_binding_name", - "content_type", - "accept", - ] - }, - api_versions_list=["2026-03-02-preview"], - ) - def begin_create_or_update( - self, - resource_group_name: str, - resource_name: str, - identity_binding_name: str, - parameters: Union[_models.IdentityBinding, JSON, IO[bytes]], - **kwargs: Any - ) -> LROPoller[_models.IdentityBinding]: - """Creates or updates an identity binding in the specified managed cluster. - - :param resource_group_name: The name of the resource group. The name is case insensitive. - Required. - :type resource_group_name: str - :param resource_name: The name of the managed cluster resource. Required. - :type resource_name: str - :param identity_binding_name: The name of the identity binding. Required. - :type identity_binding_name: str - :param parameters: The identity binding to create or update. Is one of the following types: - IdentityBinding, JSON, IO[bytes] Required. - :type parameters: ~azure.mgmt.containerservice.models.IdentityBinding or JSON or IO[bytes] - :return: An instance of LROPoller that returns IdentityBinding. The IdentityBinding is - compatible with MutableMapping - :rtype: ~azure.core.polling.LROPoller[~azure.mgmt.containerservice.models.IdentityBinding] - :raises ~azure.core.exceptions.HttpResponseError: - """ - _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) - _params = kwargs.pop("params", {}) or {} - - content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) - cls: ClsType[_models.IdentityBinding] = kwargs.pop("cls", None) - polling: Union[bool, PollingMethod] = kwargs.pop("polling", True) - lro_delay = kwargs.pop("polling_interval", self._config.polling_interval) - cont_token: Optional[str] = kwargs.pop("continuation_token", None) - if cont_token is None: - raw_result = self._create_or_update_initial( - resource_group_name=resource_group_name, - resource_name=resource_name, - identity_binding_name=identity_binding_name, - parameters=parameters, - content_type=content_type, - cls=lambda x, y, z: x, - headers=_headers, - params=_params, - **kwargs - ) - raw_result.http_response.read() # type: ignore - kwargs.pop("error_map", None) - - def get_long_running_output(pipeline_response): - response = pipeline_response.http_response - deserialized = _deserialize(_models.IdentityBinding, response.json()) - if cls: - return cls(pipeline_response, deserialized, {}) # type: ignore - return deserialized - - path_format_arguments = { - "endpoint": self._serialize.url("self._config.base_url", self._config.base_url, "str", skip_quote=True), - } - - if polling is True: - polling_method: PollingMethod = cast( - PollingMethod, ARMPolling(lro_delay, path_format_arguments=path_format_arguments, **kwargs) - ) - elif polling is False: - polling_method = cast(PollingMethod, NoPolling()) - else: - polling_method = polling - if cont_token: - return LROPoller[_models.IdentityBinding].from_continuation_token( - polling_method=polling_method, - continuation_token=cont_token, - client=self._client, - deserialization_callback=get_long_running_output, - ) - return LROPoller[_models.IdentityBinding]( - self._client, raw_result, get_long_running_output, polling_method # type: ignore - ) - - @api_version_validation( - method_added_on="2026-03-02-preview", - params_added_on={ - "2026-03-02-preview": [ - "api_version", - "subscription_id", - "resource_group_name", - "resource_name", - "identity_binding_name", - ] - }, - api_versions_list=["2026-03-02-preview"], - ) - def _delete_initial( - self, resource_group_name: str, resource_name: str, identity_binding_name: str, **kwargs: Any - ) -> Iterator[bytes]: - error_map: MutableMapping = { - 401: ClientAuthenticationError, - 404: ResourceNotFoundError, - 409: ResourceExistsError, - 304: ResourceNotModifiedError, - } - error_map.update(kwargs.pop("error_map", {}) or {}) - - _headers = kwargs.pop("headers", {}) or {} - _params = kwargs.pop("params", {}) or {} - - cls: ClsType[Iterator[bytes]] = kwargs.pop("cls", None) - - _request = build_identity_bindings_delete_request( - resource_group_name=resource_group_name, - resource_name=resource_name, - identity_binding_name=identity_binding_name, - subscription_id=self._config.subscription_id, - api_version=self._config.api_version, - headers=_headers, - params=_params, - ) - path_format_arguments = { - "endpoint": self._serialize.url("self._config.base_url", self._config.base_url, "str", skip_quote=True), - } - _request.url = self._client.format_url(_request.url, **path_format_arguments) - - _decompress = kwargs.pop("decompress", True) - _stream = True - pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access - _request, stream=_stream, **kwargs - ) - - response = pipeline_response.http_response - - if response.status_code not in [202, 204]: - try: - response.read() # Load the body in memory and close the socket - except (StreamConsumedError, StreamClosedError): - pass - map_error(status_code=response.status_code, response=response, error_map=error_map) - error = _failsafe_deserialize( - _models.ErrorResponse, - response, - ) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - - response_headers = {} - if response.status_code == 202: - response_headers["Azure-AsyncOperation"] = self._deserialize( - "str", response.headers.get("Azure-AsyncOperation") - ) - response_headers["Location"] = self._deserialize("str", response.headers.get("Location")) - response_headers["Retry-After"] = self._deserialize("int", response.headers.get("Retry-After")) - - deserialized = response.iter_bytes() if _decompress else response.iter_raw() - - if cls: - return cls(pipeline_response, deserialized, response_headers) # type: ignore - - return deserialized # type: ignore - - @distributed_trace - @api_version_validation( - method_added_on="2026-03-02-preview", - params_added_on={ - "2026-03-02-preview": [ - "api_version", - "subscription_id", - "resource_group_name", - "resource_name", - "identity_binding_name", - ] - }, - api_versions_list=["2026-03-02-preview"], - ) - def begin_delete( - self, resource_group_name: str, resource_name: str, identity_binding_name: str, **kwargs: Any - ) -> LROPoller[None]: - """Deletes an identity binding in the specified managed cluster. - - :param resource_group_name: The name of the resource group. The name is case insensitive. - Required. - :type resource_group_name: str - :param resource_name: The name of the managed cluster resource. Required. - :type resource_name: str - :param identity_binding_name: The name of the identity binding. Required. - :type identity_binding_name: str - :return: An instance of LROPoller that returns None - :rtype: ~azure.core.polling.LROPoller[None] - :raises ~azure.core.exceptions.HttpResponseError: - """ - _headers = kwargs.pop("headers", {}) or {} - _params = kwargs.pop("params", {}) or {} - - cls: ClsType[None] = kwargs.pop("cls", None) - polling: Union[bool, PollingMethod] = kwargs.pop("polling", True) - lro_delay = kwargs.pop("polling_interval", self._config.polling_interval) - cont_token: Optional[str] = kwargs.pop("continuation_token", None) - if cont_token is None: - raw_result = self._delete_initial( - resource_group_name=resource_group_name, - resource_name=resource_name, - identity_binding_name=identity_binding_name, - cls=lambda x, y, z: x, - headers=_headers, - params=_params, - **kwargs - ) - raw_result.http_response.read() # type: ignore - kwargs.pop("error_map", None) - - def get_long_running_output(pipeline_response): # pylint: disable=inconsistent-return-statements - if cls: - return cls(pipeline_response, None, {}) # type: ignore - - path_format_arguments = { - "endpoint": self._serialize.url("self._config.base_url", self._config.base_url, "str", skip_quote=True), - } - - if polling is True: - polling_method: PollingMethod = cast( - PollingMethod, ARMPolling(lro_delay, path_format_arguments=path_format_arguments, **kwargs) - ) - elif polling is False: - polling_method = cast(PollingMethod, NoPolling()) - else: - polling_method = polling - if cont_token: - return LROPoller[None].from_continuation_token( - polling_method=polling_method, - continuation_token=cont_token, - client=self._client, - deserialization_callback=get_long_running_output, - ) - return LROPoller[None](self._client, raw_result, get_long_running_output, polling_method) # type: ignore - - @distributed_trace - @api_version_validation( - method_added_on="2026-03-02-preview", - params_added_on={ - "2026-03-02-preview": ["api_version", "subscription_id", "resource_group_name", "resource_name", "accept"] - }, - api_versions_list=["2026-03-02-preview"], - ) - def list_by_managed_cluster( - self, resource_group_name: str, resource_name: str, **kwargs: Any - ) -> ItemPaged["_models.IdentityBinding"]: - """Gets a list of identity bindings in the specified managed cluster. - - :param resource_group_name: The name of the resource group. The name is case insensitive. - Required. - :type resource_group_name: str - :param resource_name: The name of the managed cluster resource. Required. - :type resource_name: str - :return: An iterator like instance of IdentityBinding - :rtype: ~azure.core.paging.ItemPaged[~azure.mgmt.containerservice.models.IdentityBinding] - :raises ~azure.core.exceptions.HttpResponseError: - """ - _headers = kwargs.pop("headers", {}) or {} - _params = kwargs.pop("params", {}) or {} - - cls: ClsType[List[_models.IdentityBinding]] = kwargs.pop("cls", None) - - error_map: MutableMapping = { - 401: ClientAuthenticationError, - 404: ResourceNotFoundError, - 409: ResourceExistsError, - 304: ResourceNotModifiedError, - } - error_map.update(kwargs.pop("error_map", {}) or {}) - - def prepare_request(next_link=None): - if not next_link: - - _request = build_identity_bindings_list_by_managed_cluster_request( - resource_group_name=resource_group_name, - resource_name=resource_name, - subscription_id=self._config.subscription_id, - api_version=self._config.api_version, - headers=_headers, - params=_params, - ) - path_format_arguments = { - "endpoint": self._serialize.url( - "self._config.base_url", self._config.base_url, "str", skip_quote=True - ), - } - _request.url = self._client.format_url(_request.url, **path_format_arguments) - - else: - # make call to next link with the client's api-version - _parsed_next_link = urllib.parse.urlparse(next_link) - _next_request_params = case_insensitive_dict( - { - key: [urllib.parse.quote(v) for v in value] - for key, value in urllib.parse.parse_qs(_parsed_next_link.query).items() - } - ) - _next_request_params["api-version"] = self._config.api_version - _request = HttpRequest( - "GET", - urllib.parse.urljoin(next_link, _parsed_next_link.path), - headers=_headers, - params=_next_request_params, - ) - path_format_arguments = { - "endpoint": self._serialize.url( - "self._config.base_url", self._config.base_url, "str", skip_quote=True - ), - } - _request.url = self._client.format_url(_request.url, **path_format_arguments) - - return _request - - def extract_data(pipeline_response): - deserialized = pipeline_response.http_response.json() - list_of_elem = _deserialize( - List[_models.IdentityBinding], - deserialized.get("value", []), - ) - if cls: - list_of_elem = cls(list_of_elem) # type: ignore - return deserialized.get("nextLink") or None, iter(list_of_elem) - - def get_next(next_link=None): - _request = prepare_request(next_link) - - _stream = False - pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access - _request, stream=_stream, **kwargs - ) - response = pipeline_response.http_response - - if response.status_code not in [200]: - map_error(status_code=response.status_code, response=response, error_map=error_map) - error = _failsafe_deserialize( - _models.ErrorResponse, - response, - ) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - - return pipeline_response - - return ItemPaged(get_next, extract_data) - - -class JWTAuthenticatorsOperations: - """ - .. warning:: - **DO NOT** instantiate this class directly. - - Instead, you should access the following operations through - :class:`~azure.mgmt.containerservice.ContainerServiceClient`'s - :attr:`jwt_authenticators` attribute. - """ - - def __init__(self, *args, **kwargs) -> None: - input_args = list(args) - self._client: PipelineClient = input_args.pop(0) if input_args else kwargs.pop("client") - self._config: ContainerServiceClientConfiguration = input_args.pop(0) if input_args else kwargs.pop("config") - self._serialize: Serializer = input_args.pop(0) if input_args else kwargs.pop("serializer") - self._deserialize: Deserializer = input_args.pop(0) if input_args else kwargs.pop("deserializer") - - @distributed_trace - @api_version_validation( - method_added_on="2026-03-02-preview", - params_added_on={ - "2026-03-02-preview": [ - "api_version", - "subscription_id", - "resource_group_name", - "resource_name", - "jwt_authenticator_name", - "accept", - ] - }, - api_versions_list=["2026-03-02-preview"], - ) - def get( - self, resource_group_name: str, resource_name: str, jwt_authenticator_name: str, **kwargs: Any - ) -> _models.JWTAuthenticator: - """Gets the specified JWT authenticator of a managed cluster. - - :param resource_group_name: The name of the resource group. The name is case insensitive. - Required. - :type resource_group_name: str - :param resource_name: The name of the managed cluster resource. Required. - :type resource_name: str - :param jwt_authenticator_name: The name of the JWT authenticator. Required. - :type jwt_authenticator_name: str - :return: JWTAuthenticator. The JWTAuthenticator is compatible with MutableMapping - :rtype: ~azure.mgmt.containerservice.models.JWTAuthenticator - :raises ~azure.core.exceptions.HttpResponseError: - """ - error_map: MutableMapping = { - 401: ClientAuthenticationError, - 404: ResourceNotFoundError, - 409: ResourceExistsError, - 304: ResourceNotModifiedError, - } - error_map.update(kwargs.pop("error_map", {}) or {}) - - _headers = kwargs.pop("headers", {}) or {} - _params = kwargs.pop("params", {}) or {} - - cls: ClsType[_models.JWTAuthenticator] = kwargs.pop("cls", None) - - _request = build_jwt_authenticators_get_request( - resource_group_name=resource_group_name, - resource_name=resource_name, - jwt_authenticator_name=jwt_authenticator_name, - subscription_id=self._config.subscription_id, - api_version=self._config.api_version, - headers=_headers, - params=_params, - ) - path_format_arguments = { - "endpoint": self._serialize.url("self._config.base_url", self._config.base_url, "str", skip_quote=True), - } - _request.url = self._client.format_url(_request.url, **path_format_arguments) - - _decompress = kwargs.pop("decompress", True) - _stream = kwargs.pop("stream", False) - pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access - _request, stream=_stream, **kwargs - ) - - response = pipeline_response.http_response - - if response.status_code not in [200]: - if _stream: - try: - response.read() # Load the body in memory and close the socket - except (StreamConsumedError, StreamClosedError): - pass - map_error(status_code=response.status_code, response=response, error_map=error_map) - error = _failsafe_deserialize( - _models.ErrorResponse, - response, - ) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - - if _stream: - deserialized = response.iter_bytes() if _decompress else response.iter_raw() - else: - deserialized = _deserialize(_models.JWTAuthenticator, response.json()) - - if cls: - return cls(pipeline_response, deserialized, {}) # type: ignore - - return deserialized # type: ignore - - @api_version_validation( - method_added_on="2026-03-02-preview", - params_added_on={ - "2026-03-02-preview": [ - "api_version", - "subscription_id", - "resource_group_name", - "resource_name", - "jwt_authenticator_name", - "content_type", - "accept", - ] - }, - api_versions_list=["2026-03-02-preview"], - ) - def _create_or_update_initial( - self, - resource_group_name: str, - resource_name: str, - jwt_authenticator_name: str, - parameters: Union[_models.JWTAuthenticator, JSON, IO[bytes]], - **kwargs: Any - ) -> Iterator[bytes]: - error_map: MutableMapping = { - 401: ClientAuthenticationError, - 404: ResourceNotFoundError, - 409: ResourceExistsError, - 304: ResourceNotModifiedError, - } - error_map.update(kwargs.pop("error_map", {}) or {}) - - _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) - _params = kwargs.pop("params", {}) or {} - - content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) - cls: ClsType[Iterator[bytes]] = kwargs.pop("cls", None) - - content_type = content_type or "application/json" - _content = None - if isinstance(parameters, (IOBase, bytes)): - _content = parameters - else: - _content = json.dumps(parameters, cls=SdkJSONEncoder, exclude_readonly=True) # type: ignore - - _request = build_jwt_authenticators_create_or_update_request( - resource_group_name=resource_group_name, - resource_name=resource_name, - jwt_authenticator_name=jwt_authenticator_name, - subscription_id=self._config.subscription_id, - content_type=content_type, - api_version=self._config.api_version, - content=_content, - headers=_headers, - params=_params, - ) - path_format_arguments = { - "endpoint": self._serialize.url("self._config.base_url", self._config.base_url, "str", skip_quote=True), - } - _request.url = self._client.format_url(_request.url, **path_format_arguments) - - _decompress = kwargs.pop("decompress", True) - _stream = True - pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access - _request, stream=_stream, **kwargs - ) - - response = pipeline_response.http_response - - if response.status_code not in [200, 201]: - try: - response.read() # Load the body in memory and close the socket - except (StreamConsumedError, StreamClosedError): - pass - map_error(status_code=response.status_code, response=response, error_map=error_map) - error = _failsafe_deserialize( - _models.ErrorResponse, - response, - ) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - - response_headers = {} - if response.status_code == 201: - response_headers["Location"] = self._deserialize("str", response.headers.get("Location")) - response_headers["Retry-After"] = self._deserialize("int", response.headers.get("Retry-After")) - - deserialized = response.iter_bytes() if _decompress else response.iter_raw() - - if cls: - return cls(pipeline_response, deserialized, response_headers) # type: ignore - - return deserialized # type: ignore - - @overload - def begin_create_or_update( - self, - resource_group_name: str, - resource_name: str, - jwt_authenticator_name: str, - parameters: _models.JWTAuthenticator, - *, - content_type: str = "application/json", - **kwargs: Any - ) -> LROPoller[_models.JWTAuthenticator]: - """Creates or updates JWT authenticator in the managed cluster and updates the managed cluster to - apply the settings. - - :param resource_group_name: The name of the resource group. The name is case insensitive. - Required. - :type resource_group_name: str - :param resource_name: The name of the managed cluster resource. Required. - :type resource_name: str - :param jwt_authenticator_name: The name of the JWT authenticator. Required. - :type jwt_authenticator_name: str - :param parameters: The JWT authenticator to create or update. Required. - :type parameters: ~azure.mgmt.containerservice.models.JWTAuthenticator - :keyword content_type: Body Parameter content-type. Content type parameter for JSON body. - Default value is "application/json". - :paramtype content_type: str - :return: An instance of LROPoller that returns JWTAuthenticator. The JWTAuthenticator is - compatible with MutableMapping - :rtype: ~azure.core.polling.LROPoller[~azure.mgmt.containerservice.models.JWTAuthenticator] - :raises ~azure.core.exceptions.HttpResponseError: - """ - - @overload - def begin_create_or_update( - self, - resource_group_name: str, - resource_name: str, - jwt_authenticator_name: str, - parameters: JSON, - *, - content_type: str = "application/json", - **kwargs: Any - ) -> LROPoller[_models.JWTAuthenticator]: - """Creates or updates JWT authenticator in the managed cluster and updates the managed cluster to - apply the settings. - - :param resource_group_name: The name of the resource group. The name is case insensitive. - Required. - :type resource_group_name: str - :param resource_name: The name of the managed cluster resource. Required. - :type resource_name: str - :param jwt_authenticator_name: The name of the JWT authenticator. Required. - :type jwt_authenticator_name: str - :param parameters: The JWT authenticator to create or update. Required. - :type parameters: JSON - :keyword content_type: Body Parameter content-type. Content type parameter for JSON body. - Default value is "application/json". - :paramtype content_type: str - :return: An instance of LROPoller that returns JWTAuthenticator. The JWTAuthenticator is - compatible with MutableMapping - :rtype: ~azure.core.polling.LROPoller[~azure.mgmt.containerservice.models.JWTAuthenticator] - :raises ~azure.core.exceptions.HttpResponseError: - """ - - @overload - def begin_create_or_update( - self, - resource_group_name: str, - resource_name: str, - jwt_authenticator_name: str, - parameters: IO[bytes], - *, - content_type: str = "application/json", - **kwargs: Any - ) -> LROPoller[_models.JWTAuthenticator]: - """Creates or updates JWT authenticator in the managed cluster and updates the managed cluster to - apply the settings. - - :param resource_group_name: The name of the resource group. The name is case insensitive. - Required. - :type resource_group_name: str - :param resource_name: The name of the managed cluster resource. Required. - :type resource_name: str - :param jwt_authenticator_name: The name of the JWT authenticator. Required. - :type jwt_authenticator_name: str - :param parameters: The JWT authenticator to create or update. Required. - :type parameters: IO[bytes] - :keyword content_type: Body Parameter content-type. Content type parameter for binary body. - Default value is "application/json". - :paramtype content_type: str - :return: An instance of LROPoller that returns JWTAuthenticator. The JWTAuthenticator is - compatible with MutableMapping - :rtype: ~azure.core.polling.LROPoller[~azure.mgmt.containerservice.models.JWTAuthenticator] - :raises ~azure.core.exceptions.HttpResponseError: - """ - - @distributed_trace - @api_version_validation( - method_added_on="2026-03-02-preview", - params_added_on={ - "2026-03-02-preview": [ - "api_version", - "subscription_id", - "resource_group_name", - "resource_name", - "jwt_authenticator_name", - "content_type", - "accept", - ] - }, - api_versions_list=["2026-03-02-preview"], - ) - def begin_create_or_update( - self, - resource_group_name: str, - resource_name: str, - jwt_authenticator_name: str, - parameters: Union[_models.JWTAuthenticator, JSON, IO[bytes]], - **kwargs: Any - ) -> LROPoller[_models.JWTAuthenticator]: - """Creates or updates JWT authenticator in the managed cluster and updates the managed cluster to - apply the settings. - - :param resource_group_name: The name of the resource group. The name is case insensitive. - Required. - :type resource_group_name: str - :param resource_name: The name of the managed cluster resource. Required. - :type resource_name: str - :param jwt_authenticator_name: The name of the JWT authenticator. Required. - :type jwt_authenticator_name: str - :param parameters: The JWT authenticator to create or update. Is one of the following types: - JWTAuthenticator, JSON, IO[bytes] Required. - :type parameters: ~azure.mgmt.containerservice.models.JWTAuthenticator or JSON or IO[bytes] - :return: An instance of LROPoller that returns JWTAuthenticator. The JWTAuthenticator is - compatible with MutableMapping - :rtype: ~azure.core.polling.LROPoller[~azure.mgmt.containerservice.models.JWTAuthenticator] - :raises ~azure.core.exceptions.HttpResponseError: - """ - _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) - _params = kwargs.pop("params", {}) or {} - - content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) - cls: ClsType[_models.JWTAuthenticator] = kwargs.pop("cls", None) - polling: Union[bool, PollingMethod] = kwargs.pop("polling", True) - lro_delay = kwargs.pop("polling_interval", self._config.polling_interval) - cont_token: Optional[str] = kwargs.pop("continuation_token", None) - if cont_token is None: - raw_result = self._create_or_update_initial( - resource_group_name=resource_group_name, - resource_name=resource_name, - jwt_authenticator_name=jwt_authenticator_name, - parameters=parameters, - content_type=content_type, - cls=lambda x, y, z: x, - headers=_headers, - params=_params, - **kwargs - ) - raw_result.http_response.read() # type: ignore - kwargs.pop("error_map", None) - - def get_long_running_output(pipeline_response): - response = pipeline_response.http_response - deserialized = _deserialize(_models.JWTAuthenticator, response.json()) - if cls: - return cls(pipeline_response, deserialized, {}) # type: ignore - return deserialized - - path_format_arguments = { - "endpoint": self._serialize.url("self._config.base_url", self._config.base_url, "str", skip_quote=True), - } - - if polling is True: - polling_method: PollingMethod = cast( - PollingMethod, ARMPolling(lro_delay, path_format_arguments=path_format_arguments, **kwargs) - ) - elif polling is False: - polling_method = cast(PollingMethod, NoPolling()) - else: - polling_method = polling - if cont_token: - return LROPoller[_models.JWTAuthenticator].from_continuation_token( - polling_method=polling_method, - continuation_token=cont_token, - client=self._client, - deserialization_callback=get_long_running_output, - ) - return LROPoller[_models.JWTAuthenticator]( - self._client, raw_result, get_long_running_output, polling_method # type: ignore - ) - - @api_version_validation( - method_added_on="2026-03-02-preview", - params_added_on={ - "2026-03-02-preview": [ - "api_version", - "subscription_id", - "resource_group_name", - "resource_name", - "jwt_authenticator_name", - ] - }, - api_versions_list=["2026-03-02-preview"], - ) - def _delete_initial( - self, resource_group_name: str, resource_name: str, jwt_authenticator_name: str, **kwargs: Any - ) -> Iterator[bytes]: - error_map: MutableMapping = { - 401: ClientAuthenticationError, - 404: ResourceNotFoundError, - 409: ResourceExistsError, - 304: ResourceNotModifiedError, - } - error_map.update(kwargs.pop("error_map", {}) or {}) - - _headers = kwargs.pop("headers", {}) or {} - _params = kwargs.pop("params", {}) or {} - - cls: ClsType[Iterator[bytes]] = kwargs.pop("cls", None) - - _request = build_jwt_authenticators_delete_request( - resource_group_name=resource_group_name, - resource_name=resource_name, - jwt_authenticator_name=jwt_authenticator_name, - subscription_id=self._config.subscription_id, - api_version=self._config.api_version, - headers=_headers, - params=_params, - ) - path_format_arguments = { - "endpoint": self._serialize.url("self._config.base_url", self._config.base_url, "str", skip_quote=True), - } - _request.url = self._client.format_url(_request.url, **path_format_arguments) - - _decompress = kwargs.pop("decompress", True) - _stream = True - pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access - _request, stream=_stream, **kwargs - ) - - response = pipeline_response.http_response - - if response.status_code not in [202, 204]: - try: - response.read() # Load the body in memory and close the socket - except (StreamConsumedError, StreamClosedError): - pass - map_error(status_code=response.status_code, response=response, error_map=error_map) - error = _failsafe_deserialize( - _models.ErrorResponse, - response, - ) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - - response_headers = {} - if response.status_code == 202: - response_headers["Azure-AsyncOperation"] = self._deserialize( - "str", response.headers.get("Azure-AsyncOperation") - ) - response_headers["Location"] = self._deserialize("str", response.headers.get("Location")) - response_headers["Retry-After"] = self._deserialize("int", response.headers.get("Retry-After")) - - deserialized = response.iter_bytes() if _decompress else response.iter_raw() - - if cls: - return cls(pipeline_response, deserialized, response_headers) # type: ignore - - return deserialized # type: ignore - - @distributed_trace - @api_version_validation( - method_added_on="2026-03-02-preview", - params_added_on={ - "2026-03-02-preview": [ - "api_version", - "subscription_id", - "resource_group_name", - "resource_name", - "jwt_authenticator_name", - ] - }, - api_versions_list=["2026-03-02-preview"], - ) - def begin_delete( - self, resource_group_name: str, resource_name: str, jwt_authenticator_name: str, **kwargs: Any - ) -> LROPoller[None]: - """Deletes a JWT authenticator and updates the managed cluster to apply the settings. - - :param resource_group_name: The name of the resource group. The name is case insensitive. - Required. - :type resource_group_name: str - :param resource_name: The name of the managed cluster resource. Required. - :type resource_name: str - :param jwt_authenticator_name: The name of the JWT authenticator. Required. - :type jwt_authenticator_name: str - :return: An instance of LROPoller that returns None - :rtype: ~azure.core.polling.LROPoller[None] - :raises ~azure.core.exceptions.HttpResponseError: - """ - _headers = kwargs.pop("headers", {}) or {} - _params = kwargs.pop("params", {}) or {} - - cls: ClsType[None] = kwargs.pop("cls", None) - polling: Union[bool, PollingMethod] = kwargs.pop("polling", True) - lro_delay = kwargs.pop("polling_interval", self._config.polling_interval) - cont_token: Optional[str] = kwargs.pop("continuation_token", None) - if cont_token is None: - raw_result = self._delete_initial( - resource_group_name=resource_group_name, - resource_name=resource_name, - jwt_authenticator_name=jwt_authenticator_name, - cls=lambda x, y, z: x, - headers=_headers, - params=_params, - **kwargs - ) - raw_result.http_response.read() # type: ignore - kwargs.pop("error_map", None) - - def get_long_running_output(pipeline_response): # pylint: disable=inconsistent-return-statements - if cls: - return cls(pipeline_response, None, {}) # type: ignore - - path_format_arguments = { - "endpoint": self._serialize.url("self._config.base_url", self._config.base_url, "str", skip_quote=True), - } - - if polling is True: - polling_method: PollingMethod = cast( - PollingMethod, ARMPolling(lro_delay, path_format_arguments=path_format_arguments, **kwargs) - ) - elif polling is False: - polling_method = cast(PollingMethod, NoPolling()) - else: - polling_method = polling - if cont_token: - return LROPoller[None].from_continuation_token( - polling_method=polling_method, - continuation_token=cont_token, - client=self._client, - deserialization_callback=get_long_running_output, - ) - return LROPoller[None](self._client, raw_result, get_long_running_output, polling_method) # type: ignore - - @distributed_trace - @api_version_validation( - method_added_on="2026-03-02-preview", - params_added_on={ - "2026-03-02-preview": ["api_version", "subscription_id", "resource_group_name", "resource_name", "accept"] - }, - api_versions_list=["2026-03-02-preview"], - ) - def list_by_managed_cluster( - self, resource_group_name: str, resource_name: str, **kwargs: Any - ) -> ItemPaged["_models.JWTAuthenticator"]: - """Gets a list of JWT authenticators in the specified managed cluster. - - :param resource_group_name: The name of the resource group. The name is case insensitive. - Required. - :type resource_group_name: str - :param resource_name: The name of the managed cluster resource. Required. - :type resource_name: str - :return: An iterator like instance of JWTAuthenticator - :rtype: ~azure.core.paging.ItemPaged[~azure.mgmt.containerservice.models.JWTAuthenticator] - :raises ~azure.core.exceptions.HttpResponseError: - """ - _headers = kwargs.pop("headers", {}) or {} - _params = kwargs.pop("params", {}) or {} - - cls: ClsType[List[_models.JWTAuthenticator]] = kwargs.pop("cls", None) - - error_map: MutableMapping = { - 401: ClientAuthenticationError, - 404: ResourceNotFoundError, - 409: ResourceExistsError, - 304: ResourceNotModifiedError, - } - error_map.update(kwargs.pop("error_map", {}) or {}) - - def prepare_request(next_link=None): - if not next_link: - - _request = build_jwt_authenticators_list_by_managed_cluster_request( - resource_group_name=resource_group_name, - resource_name=resource_name, - subscription_id=self._config.subscription_id, - api_version=self._config.api_version, - headers=_headers, - params=_params, - ) - path_format_arguments = { - "endpoint": self._serialize.url( - "self._config.base_url", self._config.base_url, "str", skip_quote=True - ), - } - _request.url = self._client.format_url(_request.url, **path_format_arguments) - - else: - # make call to next link with the client's api-version - _parsed_next_link = urllib.parse.urlparse(next_link) - _next_request_params = case_insensitive_dict( - { - key: [urllib.parse.quote(v) for v in value] - for key, value in urllib.parse.parse_qs(_parsed_next_link.query).items() - } - ) - _next_request_params["api-version"] = self._config.api_version - _request = HttpRequest( - "GET", - urllib.parse.urljoin(next_link, _parsed_next_link.path), - headers=_headers, - params=_next_request_params, - ) - path_format_arguments = { - "endpoint": self._serialize.url( - "self._config.base_url", self._config.base_url, "str", skip_quote=True - ), - } - _request.url = self._client.format_url(_request.url, **path_format_arguments) - - return _request - - def extract_data(pipeline_response): - deserialized = pipeline_response.http_response.json() - list_of_elem = _deserialize( - List[_models.JWTAuthenticator], - deserialized.get("value", []), - ) - if cls: - list_of_elem = cls(list_of_elem) # type: ignore - return deserialized.get("nextLink") or None, iter(list_of_elem) - - def get_next(next_link=None): - _request = prepare_request(next_link) - - _stream = False - pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access - _request, stream=_stream, **kwargs - ) - response = pipeline_response.http_response - - if response.status_code not in [200]: - map_error(status_code=response.status_code, response=response, error_map=error_map) - error = _failsafe_deserialize( - _models.ErrorResponse, - response, - ) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - - return pipeline_response - - return ItemPaged(get_next, extract_data) - - -class MeshMembershipsOperations: - """ - .. warning:: - **DO NOT** instantiate this class directly. - - Instead, you should access the following operations through - :class:`~azure.mgmt.containerservice.ContainerServiceClient`'s - :attr:`mesh_memberships` attribute. - """ - - def __init__(self, *args, **kwargs) -> None: - input_args = list(args) - self._client: PipelineClient = input_args.pop(0) if input_args else kwargs.pop("client") - self._config: ContainerServiceClientConfiguration = input_args.pop(0) if input_args else kwargs.pop("config") - self._serialize: Serializer = input_args.pop(0) if input_args else kwargs.pop("serializer") - self._deserialize: Deserializer = input_args.pop(0) if input_args else kwargs.pop("deserializer") - - @distributed_trace - @api_version_validation( - method_added_on="2026-03-02-preview", - params_added_on={ - "2026-03-02-preview": [ - "api_version", - "subscription_id", - "resource_group_name", - "resource_name", - "mesh_membership_name", - "accept", - ] - }, - api_versions_list=["2026-03-02-preview"], - ) - def get( - self, resource_group_name: str, resource_name: str, mesh_membership_name: str, **kwargs: Any - ) -> _models.MeshMembership: - """Gets the mesh membership of a managed cluster. - - :param resource_group_name: The name of the resource group. The name is case insensitive. - Required. - :type resource_group_name: str - :param resource_name: The name of the managed cluster resource. Required. - :type resource_name: str - :param mesh_membership_name: The name of the mesh membership. Required. - :type mesh_membership_name: str - :return: MeshMembership. The MeshMembership is compatible with MutableMapping - :rtype: ~azure.mgmt.containerservice.models.MeshMembership - :raises ~azure.core.exceptions.HttpResponseError: - """ - error_map: MutableMapping = { - 401: ClientAuthenticationError, - 404: ResourceNotFoundError, - 409: ResourceExistsError, - 304: ResourceNotModifiedError, - } - error_map.update(kwargs.pop("error_map", {}) or {}) - - _headers = kwargs.pop("headers", {}) or {} - _params = kwargs.pop("params", {}) or {} - - cls: ClsType[_models.MeshMembership] = kwargs.pop("cls", None) - - _request = build_mesh_memberships_get_request( - resource_group_name=resource_group_name, - resource_name=resource_name, - mesh_membership_name=mesh_membership_name, - subscription_id=self._config.subscription_id, - api_version=self._config.api_version, - headers=_headers, - params=_params, - ) - path_format_arguments = { - "endpoint": self._serialize.url("self._config.base_url", self._config.base_url, "str", skip_quote=True), - } - _request.url = self._client.format_url(_request.url, **path_format_arguments) - - _decompress = kwargs.pop("decompress", True) - _stream = kwargs.pop("stream", False) - pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access - _request, stream=_stream, **kwargs - ) - - response = pipeline_response.http_response - - if response.status_code not in [200]: - if _stream: - try: - response.read() # Load the body in memory and close the socket - except (StreamConsumedError, StreamClosedError): - pass - map_error(status_code=response.status_code, response=response, error_map=error_map) - error = _failsafe_deserialize( - _models.ErrorResponse, - response, - ) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - - if _stream: - deserialized = response.iter_bytes() if _decompress else response.iter_raw() - else: - deserialized = _deserialize(_models.MeshMembership, response.json()) - - if cls: - return cls(pipeline_response, deserialized, {}) # type: ignore - - return deserialized # type: ignore - - @api_version_validation( - method_added_on="2026-03-02-preview", - params_added_on={ - "2026-03-02-preview": [ - "api_version", - "subscription_id", - "resource_group_name", - "resource_name", - "mesh_membership_name", - "content_type", - "accept", - ] - }, - api_versions_list=["2026-03-02-preview"], - ) - def _create_or_update_initial( - self, - resource_group_name: str, - resource_name: str, - mesh_membership_name: str, - parameters: Union[_models.MeshMembership, JSON, IO[bytes]], - **kwargs: Any - ) -> Iterator[bytes]: - error_map: MutableMapping = { - 401: ClientAuthenticationError, - 404: ResourceNotFoundError, - 409: ResourceExistsError, - 304: ResourceNotModifiedError, - } - error_map.update(kwargs.pop("error_map", {}) or {}) - - _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) - _params = kwargs.pop("params", {}) or {} - - content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) - cls: ClsType[Iterator[bytes]] = kwargs.pop("cls", None) - - content_type = content_type or "application/json" - _content = None - if isinstance(parameters, (IOBase, bytes)): - _content = parameters - else: - _content = json.dumps(parameters, cls=SdkJSONEncoder, exclude_readonly=True) # type: ignore - - _request = build_mesh_memberships_create_or_update_request( - resource_group_name=resource_group_name, - resource_name=resource_name, - mesh_membership_name=mesh_membership_name, - subscription_id=self._config.subscription_id, - content_type=content_type, - api_version=self._config.api_version, - content=_content, - headers=_headers, - params=_params, - ) - path_format_arguments = { - "endpoint": self._serialize.url("self._config.base_url", self._config.base_url, "str", skip_quote=True), - } - _request.url = self._client.format_url(_request.url, **path_format_arguments) - - _decompress = kwargs.pop("decompress", True) - _stream = True - pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access - _request, stream=_stream, **kwargs - ) - - response = pipeline_response.http_response - - if response.status_code not in [200, 201]: - try: - response.read() # Load the body in memory and close the socket - except (StreamConsumedError, StreamClosedError): - pass - map_error(status_code=response.status_code, response=response, error_map=error_map) - error = _failsafe_deserialize( - _models.ErrorResponse, - response, - ) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - - response_headers = {} - if response.status_code == 201: - response_headers["Azure-AsyncOperation"] = self._deserialize( - "str", response.headers.get("Azure-AsyncOperation") - ) - response_headers["Retry-After"] = self._deserialize("int", response.headers.get("Retry-After")) - - deserialized = response.iter_bytes() if _decompress else response.iter_raw() - - if cls: - return cls(pipeline_response, deserialized, response_headers) # type: ignore - - return deserialized # type: ignore - - @overload - def begin_create_or_update( - self, - resource_group_name: str, - resource_name: str, - mesh_membership_name: str, - parameters: _models.MeshMembership, - *, - content_type: str = "application/json", - **kwargs: Any - ) -> LROPoller[_models.MeshMembership]: - """Creates or updates the mesh membership of a managed cluster. - - :param resource_group_name: The name of the resource group. The name is case insensitive. - Required. - :type resource_group_name: str - :param resource_name: The name of the managed cluster resource. Required. - :type resource_name: str - :param mesh_membership_name: The name of the mesh membership. Required. - :type mesh_membership_name: str - :param parameters: The mesh membership to create or update. Required. - :type parameters: ~azure.mgmt.containerservice.models.MeshMembership - :keyword content_type: Body Parameter content-type. Content type parameter for JSON body. - Default value is "application/json". - :paramtype content_type: str - :return: An instance of LROPoller that returns MeshMembership. The MeshMembership is compatible - with MutableMapping - :rtype: ~azure.core.polling.LROPoller[~azure.mgmt.containerservice.models.MeshMembership] - :raises ~azure.core.exceptions.HttpResponseError: - """ - - @overload - def begin_create_or_update( - self, - resource_group_name: str, - resource_name: str, - mesh_membership_name: str, - parameters: JSON, - *, - content_type: str = "application/json", - **kwargs: Any - ) -> LROPoller[_models.MeshMembership]: - """Creates or updates the mesh membership of a managed cluster. - - :param resource_group_name: The name of the resource group. The name is case insensitive. - Required. - :type resource_group_name: str - :param resource_name: The name of the managed cluster resource. Required. - :type resource_name: str - :param mesh_membership_name: The name of the mesh membership. Required. - :type mesh_membership_name: str - :param parameters: The mesh membership to create or update. Required. - :type parameters: JSON - :keyword content_type: Body Parameter content-type. Content type parameter for JSON body. - Default value is "application/json". - :paramtype content_type: str - :return: An instance of LROPoller that returns MeshMembership. The MeshMembership is compatible - with MutableMapping - :rtype: ~azure.core.polling.LROPoller[~azure.mgmt.containerservice.models.MeshMembership] - :raises ~azure.core.exceptions.HttpResponseError: - """ - - @overload - def begin_create_or_update( - self, - resource_group_name: str, - resource_name: str, - mesh_membership_name: str, - parameters: IO[bytes], - *, - content_type: str = "application/json", - **kwargs: Any - ) -> LROPoller[_models.MeshMembership]: - """Creates or updates the mesh membership of a managed cluster. - - :param resource_group_name: The name of the resource group. The name is case insensitive. - Required. - :type resource_group_name: str - :param resource_name: The name of the managed cluster resource. Required. - :type resource_name: str - :param mesh_membership_name: The name of the mesh membership. Required. - :type mesh_membership_name: str - :param parameters: The mesh membership to create or update. Required. - :type parameters: IO[bytes] - :keyword content_type: Body Parameter content-type. Content type parameter for binary body. - Default value is "application/json". - :paramtype content_type: str - :return: An instance of LROPoller that returns MeshMembership. The MeshMembership is compatible - with MutableMapping - :rtype: ~azure.core.polling.LROPoller[~azure.mgmt.containerservice.models.MeshMembership] - :raises ~azure.core.exceptions.HttpResponseError: - """ - - @distributed_trace - @api_version_validation( - method_added_on="2026-03-02-preview", - params_added_on={ - "2026-03-02-preview": [ - "api_version", - "subscription_id", - "resource_group_name", - "resource_name", - "mesh_membership_name", - "content_type", - "accept", - ] - }, - api_versions_list=["2026-03-02-preview"], - ) - def begin_create_or_update( - self, - resource_group_name: str, - resource_name: str, - mesh_membership_name: str, - parameters: Union[_models.MeshMembership, JSON, IO[bytes]], - **kwargs: Any - ) -> LROPoller[_models.MeshMembership]: - """Creates or updates the mesh membership of a managed cluster. - - :param resource_group_name: The name of the resource group. The name is case insensitive. - Required. - :type resource_group_name: str - :param resource_name: The name of the managed cluster resource. Required. - :type resource_name: str - :param mesh_membership_name: The name of the mesh membership. Required. - :type mesh_membership_name: str - :param parameters: The mesh membership to create or update. Is one of the following types: - MeshMembership, JSON, IO[bytes] Required. - :type parameters: ~azure.mgmt.containerservice.models.MeshMembership or JSON or IO[bytes] - :return: An instance of LROPoller that returns MeshMembership. The MeshMembership is compatible - with MutableMapping - :rtype: ~azure.core.polling.LROPoller[~azure.mgmt.containerservice.models.MeshMembership] - :raises ~azure.core.exceptions.HttpResponseError: - """ - _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) - _params = kwargs.pop("params", {}) or {} - - content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) - cls: ClsType[_models.MeshMembership] = kwargs.pop("cls", None) - polling: Union[bool, PollingMethod] = kwargs.pop("polling", True) - lro_delay = kwargs.pop("polling_interval", self._config.polling_interval) - cont_token: Optional[str] = kwargs.pop("continuation_token", None) - if cont_token is None: - raw_result = self._create_or_update_initial( - resource_group_name=resource_group_name, - resource_name=resource_name, - mesh_membership_name=mesh_membership_name, - parameters=parameters, - content_type=content_type, - cls=lambda x, y, z: x, - headers=_headers, - params=_params, - **kwargs - ) - raw_result.http_response.read() # type: ignore - kwargs.pop("error_map", None) - - def get_long_running_output(pipeline_response): - response = pipeline_response.http_response - deserialized = _deserialize(_models.MeshMembership, response.json()) - if cls: - return cls(pipeline_response, deserialized, {}) # type: ignore - return deserialized - - path_format_arguments = { - "endpoint": self._serialize.url("self._config.base_url", self._config.base_url, "str", skip_quote=True), - } - - if polling is True: - polling_method: PollingMethod = cast( - PollingMethod, ARMPolling(lro_delay, path_format_arguments=path_format_arguments, **kwargs) - ) - elif polling is False: - polling_method = cast(PollingMethod, NoPolling()) - else: - polling_method = polling - if cont_token: - return LROPoller[_models.MeshMembership].from_continuation_token( - polling_method=polling_method, - continuation_token=cont_token, - client=self._client, - deserialization_callback=get_long_running_output, - ) - return LROPoller[_models.MeshMembership]( - self._client, raw_result, get_long_running_output, polling_method # type: ignore - ) - - @api_version_validation( - method_added_on="2026-03-02-preview", - params_added_on={ - "2026-03-02-preview": [ - "api_version", - "subscription_id", - "resource_group_name", - "resource_name", - "mesh_membership_name", - ] - }, - api_versions_list=["2026-03-02-preview"], - ) - def _delete_initial( - self, resource_group_name: str, resource_name: str, mesh_membership_name: str, **kwargs: Any - ) -> Iterator[bytes]: - error_map: MutableMapping = { - 401: ClientAuthenticationError, - 404: ResourceNotFoundError, - 409: ResourceExistsError, - 304: ResourceNotModifiedError, - } - error_map.update(kwargs.pop("error_map", {}) or {}) - - _headers = kwargs.pop("headers", {}) or {} - _params = kwargs.pop("params", {}) or {} - - cls: ClsType[Iterator[bytes]] = kwargs.pop("cls", None) - - _request = build_mesh_memberships_delete_request( - resource_group_name=resource_group_name, - resource_name=resource_name, - mesh_membership_name=mesh_membership_name, - subscription_id=self._config.subscription_id, - api_version=self._config.api_version, - headers=_headers, - params=_params, - ) - path_format_arguments = { - "endpoint": self._serialize.url("self._config.base_url", self._config.base_url, "str", skip_quote=True), - } - _request.url = self._client.format_url(_request.url, **path_format_arguments) - - _decompress = kwargs.pop("decompress", True) - _stream = True - pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access - _request, stream=_stream, **kwargs - ) - - response = pipeline_response.http_response - - if response.status_code not in [202, 204]: - try: - response.read() # Load the body in memory and close the socket - except (StreamConsumedError, StreamClosedError): - pass - map_error(status_code=response.status_code, response=response, error_map=error_map) - error = _failsafe_deserialize( - _models.ErrorResponse, - response, - ) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - - response_headers = {} - if response.status_code == 202: - response_headers["Azure-AsyncOperation"] = self._deserialize( - "str", response.headers.get("Azure-AsyncOperation") - ) - response_headers["Location"] = self._deserialize("str", response.headers.get("Location")) - response_headers["Retry-After"] = self._deserialize("int", response.headers.get("Retry-After")) - - deserialized = response.iter_bytes() if _decompress else response.iter_raw() - - if cls: - return cls(pipeline_response, deserialized, response_headers) # type: ignore - - return deserialized # type: ignore - - @distributed_trace - @api_version_validation( - method_added_on="2026-03-02-preview", - params_added_on={ - "2026-03-02-preview": [ - "api_version", - "subscription_id", - "resource_group_name", - "resource_name", - "mesh_membership_name", - ] - }, - api_versions_list=["2026-03-02-preview"], - ) - def begin_delete( - self, resource_group_name: str, resource_name: str, mesh_membership_name: str, **kwargs: Any - ) -> LROPoller[None]: - """Deletes the mesh membership of a managed cluster. - - :param resource_group_name: The name of the resource group. The name is case insensitive. - Required. - :type resource_group_name: str - :param resource_name: The name of the managed cluster resource. Required. - :type resource_name: str - :param mesh_membership_name: The name of the mesh membership. Required. - :type mesh_membership_name: str - :return: An instance of LROPoller that returns None - :rtype: ~azure.core.polling.LROPoller[None] - :raises ~azure.core.exceptions.HttpResponseError: - """ - _headers = kwargs.pop("headers", {}) or {} - _params = kwargs.pop("params", {}) or {} - - cls: ClsType[None] = kwargs.pop("cls", None) - polling: Union[bool, PollingMethod] = kwargs.pop("polling", True) - lro_delay = kwargs.pop("polling_interval", self._config.polling_interval) - cont_token: Optional[str] = kwargs.pop("continuation_token", None) - if cont_token is None: - raw_result = self._delete_initial( - resource_group_name=resource_group_name, - resource_name=resource_name, - mesh_membership_name=mesh_membership_name, - cls=lambda x, y, z: x, - headers=_headers, - params=_params, - **kwargs - ) - raw_result.http_response.read() # type: ignore - kwargs.pop("error_map", None) - - def get_long_running_output(pipeline_response): # pylint: disable=inconsistent-return-statements - if cls: - return cls(pipeline_response, None, {}) # type: ignore - - path_format_arguments = { - "endpoint": self._serialize.url("self._config.base_url", self._config.base_url, "str", skip_quote=True), - } - - if polling is True: - polling_method: PollingMethod = cast( - PollingMethod, ARMPolling(lro_delay, path_format_arguments=path_format_arguments, **kwargs) - ) - elif polling is False: - polling_method = cast(PollingMethod, NoPolling()) - else: - polling_method = polling - if cont_token: - return LROPoller[None].from_continuation_token( - polling_method=polling_method, - continuation_token=cont_token, - client=self._client, - deserialization_callback=get_long_running_output, - ) - return LROPoller[None](self._client, raw_result, get_long_running_output, polling_method) # type: ignore - - @distributed_trace - @api_version_validation( - method_added_on="2026-03-02-preview", - params_added_on={ - "2026-03-02-preview": ["api_version", "subscription_id", "resource_group_name", "resource_name", "accept"] - }, - api_versions_list=["2026-03-02-preview"], - ) - def list_by_managed_cluster( - self, resource_group_name: str, resource_name: str, **kwargs: Any - ) -> ItemPaged["_models.MeshMembership"]: - """Lists mesh memberships in a managed cluster. - - :param resource_group_name: The name of the resource group. The name is case insensitive. - Required. - :type resource_group_name: str - :param resource_name: The name of the managed cluster resource. Required. - :type resource_name: str - :return: An iterator like instance of MeshMembership - :rtype: ~azure.core.paging.ItemPaged[~azure.mgmt.containerservice.models.MeshMembership] - :raises ~azure.core.exceptions.HttpResponseError: - """ - _headers = kwargs.pop("headers", {}) or {} - _params = kwargs.pop("params", {}) or {} - - cls: ClsType[List[_models.MeshMembership]] = kwargs.pop("cls", None) - - error_map: MutableMapping = { - 401: ClientAuthenticationError, - 404: ResourceNotFoundError, - 409: ResourceExistsError, - 304: ResourceNotModifiedError, - } - error_map.update(kwargs.pop("error_map", {}) or {}) - - def prepare_request(next_link=None): - if not next_link: - - _request = build_mesh_memberships_list_by_managed_cluster_request( - resource_group_name=resource_group_name, - resource_name=resource_name, - subscription_id=self._config.subscription_id, - api_version=self._config.api_version, - headers=_headers, - params=_params, - ) - path_format_arguments = { - "endpoint": self._serialize.url( - "self._config.base_url", self._config.base_url, "str", skip_quote=True - ), - } - _request.url = self._client.format_url(_request.url, **path_format_arguments) - - else: - # make call to next link with the client's api-version - _parsed_next_link = urllib.parse.urlparse(next_link) - _next_request_params = case_insensitive_dict( - { - key: [urllib.parse.quote(v) for v in value] - for key, value in urllib.parse.parse_qs(_parsed_next_link.query).items() - } - ) - _next_request_params["api-version"] = self._config.api_version - _request = HttpRequest( - "GET", - urllib.parse.urljoin(next_link, _parsed_next_link.path), - headers=_headers, - params=_next_request_params, - ) - path_format_arguments = { - "endpoint": self._serialize.url( - "self._config.base_url", self._config.base_url, "str", skip_quote=True - ), - } - _request.url = self._client.format_url(_request.url, **path_format_arguments) - - return _request - - def extract_data(pipeline_response): - deserialized = pipeline_response.http_response.json() - list_of_elem = _deserialize( - List[_models.MeshMembership], - deserialized.get("value", []), - ) - if cls: - list_of_elem = cls(list_of_elem) # type: ignore - return deserialized.get("nextLink") or None, iter(list_of_elem) - - def get_next(next_link=None): - _request = prepare_request(next_link) - - _stream = False - pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access - _request, stream=_stream, **kwargs - ) - response = pipeline_response.http_response - - if response.status_code not in [200]: - map_error(status_code=response.status_code, response=response, error_map=error_map) - error = _failsafe_deserialize( - _models.ErrorResponse, - response, - ) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - - return pipeline_response - - return ItemPaged(get_next, extract_data) - - -class Operations: - """ - .. warning:: - **DO NOT** instantiate this class directly. - - Instead, you should access the following operations through - :class:`~azure.mgmt.containerservice.ContainerServiceClient`'s - :attr:`operations` attribute. - """ - - def __init__(self, *args, **kwargs) -> None: - input_args = list(args) - self._client: PipelineClient = input_args.pop(0) if input_args else kwargs.pop("client") - self._config: ContainerServiceClientConfiguration = input_args.pop(0) if input_args else kwargs.pop("config") - self._serialize: Serializer = input_args.pop(0) if input_args else kwargs.pop("serializer") - self._deserialize: Deserializer = input_args.pop(0) if input_args else kwargs.pop("deserializer") - - @distributed_trace - def list(self, **kwargs: Any) -> ItemPaged["_models.OperationValue"]: - """Gets a list of operations. - - :return: An iterator like instance of OperationValue - :rtype: ~azure.core.paging.ItemPaged[~azure.mgmt.containerservice.models.OperationValue] - :raises ~azure.core.exceptions.HttpResponseError: - """ - _headers = kwargs.pop("headers", {}) or {} - _params = kwargs.pop("params", {}) or {} - - cls: ClsType[List[_models.OperationValue]] = kwargs.pop("cls", None) - - error_map: MutableMapping = { - 401: ClientAuthenticationError, - 404: ResourceNotFoundError, - 409: ResourceExistsError, - 304: ResourceNotModifiedError, - } - error_map.update(kwargs.pop("error_map", {}) or {}) - - def prepare_request(next_link=None): - if not next_link: - - _request = build_operations_list_request( - api_version=self._config.api_version, - headers=_headers, - params=_params, - ) - path_format_arguments = { - "endpoint": self._serialize.url( - "self._config.base_url", self._config.base_url, "str", skip_quote=True - ), - } - _request.url = self._client.format_url(_request.url, **path_format_arguments) - - else: - # make call to next link with the client's api-version - _parsed_next_link = urllib.parse.urlparse(next_link) - _next_request_params = case_insensitive_dict( - { - key: [urllib.parse.quote(v) for v in value] - for key, value in urllib.parse.parse_qs(_parsed_next_link.query).items() - } - ) - _next_request_params["api-version"] = self._config.api_version - _request = HttpRequest( - "GET", - urllib.parse.urljoin(next_link, _parsed_next_link.path), - headers=_headers, - params=_next_request_params, - ) - path_format_arguments = { - "endpoint": self._serialize.url( - "self._config.base_url", self._config.base_url, "str", skip_quote=True - ), - } - _request.url = self._client.format_url(_request.url, **path_format_arguments) - - return _request - - def extract_data(pipeline_response): - deserialized = pipeline_response.http_response.json() - list_of_elem = _deserialize( - List[_models.OperationValue], - deserialized.get("value", []), - ) - if cls: - list_of_elem = cls(list_of_elem) # type: ignore - return deserialized.get("nextLink") or None, iter(list_of_elem) - - def get_next(next_link=None): - _request = prepare_request(next_link) - - _stream = False - pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access - _request, stream=_stream, **kwargs - ) - response = pipeline_response.http_response - - if response.status_code not in [200]: - map_error(status_code=response.status_code, response=response, error_map=error_map) - error = _failsafe_deserialize( - _models.ErrorResponse, - response, - ) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - - return pipeline_response - - return ItemPaged(get_next, extract_data) - - -class OperationStatusResultOperations: - """ - .. warning:: - **DO NOT** instantiate this class directly. + return deserialized - Instead, you should access the following operations through - :class:`~azure.mgmt.containerservice.ContainerServiceClient`'s - :attr:`operation_status_result` attribute. - """ + path_format_arguments = { + "endpoint": self._serialize.url("self._config.base_url", self._config.base_url, "str", skip_quote=True), + } - def __init__(self, *args, **kwargs) -> None: - input_args = list(args) - self._client: PipelineClient = input_args.pop(0) if input_args else kwargs.pop("client") - self._config: ContainerServiceClientConfiguration = input_args.pop(0) if input_args else kwargs.pop("config") - self._serialize: Serializer = input_args.pop(0) if input_args else kwargs.pop("serializer") - self._deserialize: Deserializer = input_args.pop(0) if input_args else kwargs.pop("deserializer") + if polling is True: + polling_method: PollingMethod = cast( + PollingMethod, ARMPolling(lro_delay, path_format_arguments=path_format_arguments, **kwargs) + ) + elif polling is False: + polling_method = cast(PollingMethod, NoPolling()) + else: + polling_method = polling + if cont_token: + return LROPoller[_models.IdentityBinding].from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output, + ) + return LROPoller[_models.IdentityBinding]( + self._client, raw_result, get_long_running_output, polling_method # type: ignore + ) - @distributed_trace @api_version_validation( - method_added_on="2026-03-02-preview", + method_added_on="2026-04-01", params_added_on={ - "2026-03-02-preview": [ + "2026-04-01": [ "api_version", "subscription_id", "resource_group_name", "resource_name", - "agent_pool_name", - "operation_id", - "accept", + "identity_binding_name", ] }, - api_versions_list=["2026-03-02-preview"], + api_versions_list=["2026-04-01"], ) - def get_by_agent_pool( - self, resource_group_name: str, resource_name: str, agent_pool_name: str, operation_id: str, **kwargs: Any - ) -> _models.OperationStatusResult: - """Get the status of a specific operation in the specified agent pool. - - :param resource_group_name: The name of the resource group. The name is case insensitive. - Required. - :type resource_group_name: str - :param resource_name: The name of the managed cluster resource. Required. - :type resource_name: str - :param agent_pool_name: The name of the agent pool. Required. - :type agent_pool_name: str - :param operation_id: The ID of an ongoing async operation. Required. - :type operation_id: str - :return: OperationStatusResult. The OperationStatusResult is compatible with MutableMapping - :rtype: ~azure.mgmt.containerservice.models.OperationStatusResult - :raises ~azure.core.exceptions.HttpResponseError: - """ + def _delete_initial( + self, resource_group_name: str, resource_name: str, identity_binding_name: str, **kwargs: Any + ) -> Iterator[bytes]: error_map: MutableMapping = { 401: ClientAuthenticationError, 404: ResourceNotFoundError, @@ -15369,13 +10370,12 @@ def get_by_agent_pool( _headers = kwargs.pop("headers", {}) or {} _params = kwargs.pop("params", {}) or {} - cls: ClsType[_models.OperationStatusResult] = kwargs.pop("cls", None) + cls: ClsType[Iterator[bytes]] = kwargs.pop("cls", None) - _request = build_operation_status_result_get_by_agent_pool_request( + _request = build_identity_bindings_delete_request( resource_group_name=resource_group_name, resource_name=resource_name, - agent_pool_name=agent_pool_name, - operation_id=operation_id, + identity_binding_name=identity_binding_name, subscription_id=self._config.subscription_id, api_version=self._config.api_version, headers=_headers, @@ -15387,19 +10387,18 @@ def get_by_agent_pool( _request.url = self._client.format_url(_request.url, **path_format_arguments) _decompress = kwargs.pop("decompress", True) - _stream = kwargs.pop("stream", False) + _stream = True pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access _request, stream=_stream, **kwargs ) response = pipeline_response.http_response - if response.status_code not in [200]: - if _stream: - try: - response.read() # Load the body in memory and close the socket - except (StreamConsumedError, StreamClosedError): - pass + if response.status_code not in [202, 204]: + try: + response.read() # Load the body in memory and close the socket + except (StreamConsumedError, StreamClosedError): + pass map_error(status_code=response.status_code, response=response, error_map=error_map) error = _failsafe_deserialize( _models.ErrorResponse, @@ -15407,42 +10406,122 @@ def get_by_agent_pool( ) raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - if _stream: - deserialized = response.iter_bytes() if _decompress else response.iter_raw() - else: - deserialized = _deserialize(_models.OperationStatusResult, response.json()) + response_headers = {} + if response.status_code == 202: + response_headers["Azure-AsyncOperation"] = self._deserialize( + "str", response.headers.get("Azure-AsyncOperation") + ) + response_headers["Location"] = self._deserialize("str", response.headers.get("Location")) + response_headers["Retry-After"] = self._deserialize("int", response.headers.get("Retry-After")) + + deserialized = response.iter_bytes() if _decompress else response.iter_raw() if cls: - return cls(pipeline_response, deserialized, {}) # type: ignore + return cls(pipeline_response, deserialized, response_headers) # type: ignore return deserialized # type: ignore @distributed_trace @api_version_validation( - method_added_on="2026-03-02-preview", + method_added_on="2026-04-01", params_added_on={ - "2026-03-02-preview": ["api_version", "subscription_id", "resource_group_name", "resource_name", "accept"] + "2026-04-01": [ + "api_version", + "subscription_id", + "resource_group_name", + "resource_name", + "identity_binding_name", + ] }, - api_versions_list=["2026-03-02-preview"], + api_versions_list=["2026-04-01"], ) - def list( + def begin_delete( + self, resource_group_name: str, resource_name: str, identity_binding_name: str, **kwargs: Any + ) -> LROPoller[None]: + """Deletes an identity binding in the specified managed cluster. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param resource_name: The name of the managed cluster resource. Required. + :type resource_name: str + :param identity_binding_name: The name of the identity binding. Required. + :type identity_binding_name: str + :return: An instance of LROPoller that returns None + :rtype: ~azure.core.polling.LROPoller[None] + :raises ~azure.core.exceptions.HttpResponseError: + """ + _headers = kwargs.pop("headers", {}) or {} + _params = kwargs.pop("params", {}) or {} + + cls: ClsType[None] = kwargs.pop("cls", None) + polling: Union[bool, PollingMethod] = kwargs.pop("polling", True) + lro_delay = kwargs.pop("polling_interval", self._config.polling_interval) + cont_token: Optional[str] = kwargs.pop("continuation_token", None) + if cont_token is None: + raw_result = self._delete_initial( + resource_group_name=resource_group_name, + resource_name=resource_name, + identity_binding_name=identity_binding_name, + cls=lambda x, y, z: x, + headers=_headers, + params=_params, + **kwargs + ) + raw_result.http_response.read() # type: ignore + kwargs.pop("error_map", None) + + def get_long_running_output(pipeline_response): # pylint: disable=inconsistent-return-statements + if cls: + return cls(pipeline_response, None, {}) # type: ignore + + path_format_arguments = { + "endpoint": self._serialize.url("self._config.base_url", self._config.base_url, "str", skip_quote=True), + } + + if polling is True: + polling_method: PollingMethod = cast( + PollingMethod, ARMPolling(lro_delay, path_format_arguments=path_format_arguments, **kwargs) + ) + elif polling is False: + polling_method = cast(PollingMethod, NoPolling()) + else: + polling_method = polling + if cont_token: + return LROPoller[None].from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output, + ) + return LROPoller[None](self._client, raw_result, get_long_running_output, polling_method) # type: ignore + + @distributed_trace + @api_version_validation( + method_added_on="2026-04-01", + params_added_on={ + "2026-04-01": ["api_version", "subscription_id", "resource_group_name", "resource_name", "accept"] + }, + api_versions_list=["2026-04-01"], + ) + def list_by_managed_cluster( self, resource_group_name: str, resource_name: str, **kwargs: Any - ) -> ItemPaged["_models.OperationStatusResult"]: - """Gets a list of operations in the specified managedCluster. + ) -> ItemPaged["_models.IdentityBinding"]: + """Gets a list of identity bindings in the specified managed cluster. :param resource_group_name: The name of the resource group. The name is case insensitive. Required. :type resource_group_name: str :param resource_name: The name of the managed cluster resource. Required. :type resource_name: str - :return: An iterator like instance of OperationStatusResult - :rtype: ~azure.core.paging.ItemPaged[~azure.mgmt.containerservice.models.OperationStatusResult] + :return: An iterator like instance of IdentityBinding + :rtype: ~azure.core.paging.ItemPaged[~azure.mgmt.containerservice.models.IdentityBinding] :raises ~azure.core.exceptions.HttpResponseError: """ _headers = kwargs.pop("headers", {}) or {} _params = kwargs.pop("params", {}) or {} - cls: ClsType[List[_models.OperationStatusResult]] = kwargs.pop("cls", None) + cls: ClsType[List[_models.IdentityBinding]] = kwargs.pop("cls", None) error_map: MutableMapping = { 401: ClientAuthenticationError, @@ -15455,7 +10534,7 @@ def list( def prepare_request(next_link=None): if not next_link: - _request = build_operation_status_result_list_request( + _request = build_identity_bindings_list_by_managed_cluster_request( resource_group_name=resource_group_name, resource_name=resource_name, subscription_id=self._config.subscription_id, @@ -15498,7 +10577,7 @@ def prepare_request(next_link=None): def extract_data(pipeline_response): deserialized = pipeline_response.http_response.json() list_of_elem = _deserialize( - List[_models.OperationStatusResult], + List[_models.IdentityBinding], deserialized.get("value", []), ) if cls: @@ -15526,37 +10605,37 @@ def get_next(next_link=None): return ItemPaged(get_next, extract_data) + +class Operations: + """ + .. warning:: + **DO NOT** instantiate this class directly. + + Instead, you should access the following operations through + :class:`~azure.mgmt.containerservice.ContainerServiceClient`'s + :attr:`operations` attribute. + """ + + def __init__(self, *args, **kwargs) -> None: + input_args = list(args) + self._client: PipelineClient = input_args.pop(0) if input_args else kwargs.pop("client") + self._config: ContainerServiceClientConfiguration = input_args.pop(0) if input_args else kwargs.pop("config") + self._serialize: Serializer = input_args.pop(0) if input_args else kwargs.pop("serializer") + self._deserialize: Deserializer = input_args.pop(0) if input_args else kwargs.pop("deserializer") + @distributed_trace - @api_version_validation( - method_added_on="2026-03-02-preview", - params_added_on={ - "2026-03-02-preview": [ - "api_version", - "subscription_id", - "resource_group_name", - "resource_name", - "operation_id", - "accept", - ] - }, - api_versions_list=["2026-03-02-preview"], - ) - def get( - self, resource_group_name: str, resource_name: str, operation_id: str, **kwargs: Any - ) -> _models.OperationStatusResult: - """Get the status of a specific operation in the specified managed cluster. + def list(self, **kwargs: Any) -> ItemPaged["_models.OperationValue"]: + """Gets a list of operations. - :param resource_group_name: The name of the resource group. The name is case insensitive. - Required. - :type resource_group_name: str - :param resource_name: The name of the managed cluster resource. Required. - :type resource_name: str - :param operation_id: The ID of an ongoing async operation. Required. - :type operation_id: str - :return: OperationStatusResult. The OperationStatusResult is compatible with MutableMapping - :rtype: ~azure.mgmt.containerservice.models.OperationStatusResult + :return: An iterator like instance of OperationValue + :rtype: ~azure.core.paging.ItemPaged[~azure.mgmt.containerservice.models.OperationValue] :raises ~azure.core.exceptions.HttpResponseError: """ + _headers = kwargs.pop("headers", {}) or {} + _params = kwargs.pop("params", {}) or {} + + cls: ClsType[List[_models.OperationValue]] = kwargs.pop("cls", None) + error_map: MutableMapping = { 401: ClientAuthenticationError, 404: ResourceNotFoundError, @@ -15565,55 +10644,76 @@ def get( } error_map.update(kwargs.pop("error_map", {}) or {}) - _headers = kwargs.pop("headers", {}) or {} - _params = kwargs.pop("params", {}) or {} + def prepare_request(next_link=None): + if not next_link: - cls: ClsType[_models.OperationStatusResult] = kwargs.pop("cls", None) + _request = build_operations_list_request( + api_version=self._config.api_version, + headers=_headers, + params=_params, + ) + path_format_arguments = { + "endpoint": self._serialize.url( + "self._config.base_url", self._config.base_url, "str", skip_quote=True + ), + } + _request.url = self._client.format_url(_request.url, **path_format_arguments) - _request = build_operation_status_result_get_request( - resource_group_name=resource_group_name, - resource_name=resource_name, - operation_id=operation_id, - subscription_id=self._config.subscription_id, - api_version=self._config.api_version, - headers=_headers, - params=_params, - ) - path_format_arguments = { - "endpoint": self._serialize.url("self._config.base_url", self._config.base_url, "str", skip_quote=True), - } - _request.url = self._client.format_url(_request.url, **path_format_arguments) + else: + # make call to next link with the client's api-version + _parsed_next_link = urllib.parse.urlparse(next_link) + _next_request_params = case_insensitive_dict( + { + key: [urllib.parse.quote(v) for v in value] + for key, value in urllib.parse.parse_qs(_parsed_next_link.query).items() + } + ) + _next_request_params["api-version"] = self._config.api_version + _request = HttpRequest( + "GET", + urllib.parse.urljoin(next_link, _parsed_next_link.path), + headers=_headers, + params=_next_request_params, + ) + path_format_arguments = { + "endpoint": self._serialize.url( + "self._config.base_url", self._config.base_url, "str", skip_quote=True + ), + } + _request.url = self._client.format_url(_request.url, **path_format_arguments) - _decompress = kwargs.pop("decompress", True) - _stream = kwargs.pop("stream", False) - pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access - _request, stream=_stream, **kwargs - ) + return _request - response = pipeline_response.http_response + def extract_data(pipeline_response): + deserialized = pipeline_response.http_response.json() + list_of_elem = _deserialize( + List[_models.OperationValue], + deserialized.get("value", []), + ) + if cls: + list_of_elem = cls(list_of_elem) # type: ignore + return deserialized.get("nextLink") or None, iter(list_of_elem) - if response.status_code not in [200]: - if _stream: - try: - response.read() # Load the body in memory and close the socket - except (StreamConsumedError, StreamClosedError): - pass - map_error(status_code=response.status_code, response=response, error_map=error_map) - error = _failsafe_deserialize( - _models.ErrorResponse, - response, + def get_next(next_link=None): + _request = prepare_request(next_link) + + _stream = False + pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access + _request, stream=_stream, **kwargs ) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + response = pipeline_response.http_response - if _stream: - deserialized = response.iter_bytes() if _decompress else response.iter_raw() - else: - deserialized = _deserialize(_models.OperationStatusResult, response.json()) + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + error = _failsafe_deserialize( + _models.ErrorResponse, + response, + ) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - if cls: - return cls(pipeline_response, deserialized, {}) # type: ignore + return pipeline_response - return deserialized # type: ignore + return ItemPaged(get_next, extract_data) class PrivateLinkResourcesOperations: @@ -16011,245 +11111,3 @@ def get_next(next_link=None): return pipeline_response return ItemPaged(get_next, extract_data) - - -class ContainerServiceOperations: - """ - .. warning:: - **DO NOT** instantiate this class directly. - - Instead, you should access the following operations through - :class:`~azure.mgmt.containerservice.ContainerServiceClient`'s - :attr:`container_service` attribute. - """ - - def __init__(self, *args, **kwargs) -> None: - input_args = list(args) - self._client: PipelineClient = input_args.pop(0) if input_args else kwargs.pop("client") - self._config: ContainerServiceClientConfiguration = input_args.pop(0) if input_args else kwargs.pop("config") - self._serialize: Serializer = input_args.pop(0) if input_args else kwargs.pop("serializer") - self._deserialize: Deserializer = input_args.pop(0) if input_args else kwargs.pop("deserializer") - - @distributed_trace - def list_node_image_versions(self, location: str, **kwargs: Any) -> ItemPaged["_models.NodeImageVersion"]: - """Gets a list of supported NodeImage versions in the specified subscription. - - Only returns the latest version of each node image. For example there may be an - AKSUbuntu-1804gen2containerd-2024.01.26, but only AKSUbuntu-1804gen2containerd-2024.02.02 is - visible in this list. - - :param location: The name of the Azure region. Required. - :type location: str - :return: An iterator like instance of NodeImageVersion - :rtype: ~azure.core.paging.ItemPaged[~azure.mgmt.containerservice.models.NodeImageVersion] - :raises ~azure.core.exceptions.HttpResponseError: - """ - _headers = kwargs.pop("headers", {}) or {} - _params = kwargs.pop("params", {}) or {} - - cls: ClsType[List[_models.NodeImageVersion]] = kwargs.pop("cls", None) - - error_map: MutableMapping = { - 401: ClientAuthenticationError, - 404: ResourceNotFoundError, - 409: ResourceExistsError, - 304: ResourceNotModifiedError, - } - error_map.update(kwargs.pop("error_map", {}) or {}) - - def prepare_request(next_link=None): - if not next_link: - - _request = build_container_service_list_node_image_versions_request( - location=location, - subscription_id=self._config.subscription_id, - api_version=self._config.api_version, - headers=_headers, - params=_params, - ) - path_format_arguments = { - "endpoint": self._serialize.url( - "self._config.base_url", self._config.base_url, "str", skip_quote=True - ), - } - _request.url = self._client.format_url(_request.url, **path_format_arguments) - - else: - # make call to next link with the client's api-version - _parsed_next_link = urllib.parse.urlparse(next_link) - _next_request_params = case_insensitive_dict( - { - key: [urllib.parse.quote(v) for v in value] - for key, value in urllib.parse.parse_qs(_parsed_next_link.query).items() - } - ) - _next_request_params["api-version"] = self._config.api_version - _request = HttpRequest( - "GET", - urllib.parse.urljoin(next_link, _parsed_next_link.path), - headers=_headers, - params=_next_request_params, - ) - path_format_arguments = { - "endpoint": self._serialize.url( - "self._config.base_url", self._config.base_url, "str", skip_quote=True - ), - } - _request.url = self._client.format_url(_request.url, **path_format_arguments) - - return _request - - def extract_data(pipeline_response): - deserialized = pipeline_response.http_response.json() - list_of_elem = _deserialize( - List[_models.NodeImageVersion], - deserialized.get("value", []), - ) - if cls: - list_of_elem = cls(list_of_elem) # type: ignore - return deserialized.get("nextLink") or None, iter(list_of_elem) - - def get_next(next_link=None): - _request = prepare_request(next_link) - - _stream = False - pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access - _request, stream=_stream, **kwargs - ) - response = pipeline_response.http_response - - if response.status_code not in [200]: - map_error(status_code=response.status_code, response=response, error_map=error_map) - error = _failsafe_deserialize( - _models.ErrorResponse, - response, - ) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - - return pipeline_response - - return ItemPaged(get_next, extract_data) - - -class VmSkusOperations: - """ - .. warning:: - **DO NOT** instantiate this class directly. - - Instead, you should access the following operations through - :class:`~azure.mgmt.containerservice.ContainerServiceClient`'s - :attr:`vm_skus` attribute. - """ - - def __init__(self, *args, **kwargs) -> None: - input_args = list(args) - self._client: PipelineClient = input_args.pop(0) if input_args else kwargs.pop("client") - self._config: ContainerServiceClientConfiguration = input_args.pop(0) if input_args else kwargs.pop("config") - self._serialize: Serializer = input_args.pop(0) if input_args else kwargs.pop("serializer") - self._deserialize: Deserializer = input_args.pop(0) if input_args else kwargs.pop("deserializer") - - @distributed_trace - def list( - self, location: str, *, include_extended_locations: Optional[bool] = None, **kwargs: Any - ) -> ItemPaged["_models.ResourceSku"]: - """Gets the list of VM SKUs accepted by AKS. - - Gets the list of VM SKUs accepted by AKS when creating node pools in a specified location. AKS - will perform a best effort approach to provision the requested VM SKUs, but availability is not - guaranteed. - - :param location: The name of the Azure region. Required. - :type location: str - :keyword include_extended_locations: To Include Extended Locations information or not in the - response. Default value is None. - :paramtype include_extended_locations: bool - :return: An iterator like instance of ResourceSku - :rtype: ~azure.core.paging.ItemPaged[~azure.mgmt.containerservice.models.ResourceSku] - :raises ~azure.core.exceptions.HttpResponseError: - """ - _headers = kwargs.pop("headers", {}) or {} - _params = kwargs.pop("params", {}) or {} - - cls: ClsType[List[_models.ResourceSku]] = kwargs.pop("cls", None) - - error_map: MutableMapping = { - 401: ClientAuthenticationError, - 404: ResourceNotFoundError, - 409: ResourceExistsError, - 304: ResourceNotModifiedError, - } - error_map.update(kwargs.pop("error_map", {}) or {}) - - def prepare_request(next_link=None): - if not next_link: - - _request = build_vm_skus_list_request( - location=location, - subscription_id=self._config.subscription_id, - include_extended_locations=include_extended_locations, - api_version=self._config.api_version, - headers=_headers, - params=_params, - ) - path_format_arguments = { - "endpoint": self._serialize.url( - "self._config.base_url", self._config.base_url, "str", skip_quote=True - ), - } - _request.url = self._client.format_url(_request.url, **path_format_arguments) - - else: - # make call to next link with the client's api-version - _parsed_next_link = urllib.parse.urlparse(next_link) - _next_request_params = case_insensitive_dict( - { - key: [urllib.parse.quote(v) for v in value] - for key, value in urllib.parse.parse_qs(_parsed_next_link.query).items() - } - ) - _next_request_params["api-version"] = self._config.api_version - _request = HttpRequest( - "GET", - urllib.parse.urljoin(next_link, _parsed_next_link.path), - headers=_headers, - params=_next_request_params, - ) - path_format_arguments = { - "endpoint": self._serialize.url( - "self._config.base_url", self._config.base_url, "str", skip_quote=True - ), - } - _request.url = self._client.format_url(_request.url, **path_format_arguments) - - return _request - - def extract_data(pipeline_response): - deserialized = pipeline_response.http_response.json() - list_of_elem = _deserialize( - List[_models.ResourceSku], - deserialized.get("value", []), - ) - if cls: - list_of_elem = cls(list_of_elem) # type: ignore - return deserialized.get("nextLink") or None, iter(list_of_elem) - - def get_next(next_link=None): - _request = prepare_request(next_link) - - _stream = False - pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access - _request, stream=_stream, **kwargs - ) - response = pipeline_response.http_response - - if response.status_code not in [200]: - map_error(status_code=response.status_code, response=response, error_map=error_map) - error = _failsafe_deserialize( - _models.ErrorResponse, - response, - ) - raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - - return pipeline_response - - return ItemPaged(get_next, extract_data) diff --git a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/advanced_networking_transit_encryption.py b/sdk/containerservice/azure-mgmt-containerservice/generated_samples/advanced_networking_transit_encryption.py index a54749450957..7d2a9ece8a3e 100644 --- a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/advanced_networking_transit_encryption.py +++ b/sdk/containerservice/azure-mgmt-containerservice/generated_samples/advanced_networking_transit_encryption.py @@ -78,6 +78,6 @@ def main(): print(response) -# x-ms-original-file: 2026-03-02-preview/AdvancedNetworkingTransitEncryption.json +# x-ms-original-file: 2026-04-01/AdvancedNetworkingTransitEncryption.json if __name__ == "__main__": main() diff --git a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/agent_pools_abort_operation.py b/sdk/containerservice/azure-mgmt-containerservice/generated_samples/agent_pools_abort_operation.py index c582da931ae0..b417dcbee192 100644 --- a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/agent_pools_abort_operation.py +++ b/sdk/containerservice/azure-mgmt-containerservice/generated_samples/agent_pools_abort_operation.py @@ -37,6 +37,6 @@ def main(): ).result() -# x-ms-original-file: 2026-03-02-preview/AgentPoolsAbortOperation.json +# x-ms-original-file: 2026-04-01/AgentPoolsAbortOperation.json if __name__ == "__main__": main() diff --git a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/agent_pools_complete_upgrade.py b/sdk/containerservice/azure-mgmt-containerservice/generated_samples/agent_pools_complete_upgrade.py deleted file mode 100644 index de41a6995b6d..000000000000 --- a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/agent_pools_complete_upgrade.py +++ /dev/null @@ -1,42 +0,0 @@ -# coding=utf-8 -# -------------------------------------------------------------------------- -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT License. See License.txt in the project root for license information. -# Code generated by Microsoft (R) Python Code Generator. -# Changes may cause incorrect behavior and will be lost if the code is regenerated. -# -------------------------------------------------------------------------- - -from azure.identity import DefaultAzureCredential - -from azure.mgmt.containerservice import ContainerServiceClient - -""" -# PREREQUISITES - pip install azure-identity - pip install azure-mgmt-containerservice -# USAGE - python agent_pools_complete_upgrade.py - - Before run the sample, please set the values of the client ID, tenant ID and client secret - of the AAD application as environment variables: AZURE_CLIENT_ID, AZURE_TENANT_ID, - AZURE_CLIENT_SECRET. For more info about how to get the value, please see: - https://docs.microsoft.com/azure/active-directory/develop/howto-create-service-principal-portal -""" - - -def main(): - client = ContainerServiceClient( - credential=DefaultAzureCredential(), - subscription_id="SUBSCRIPTION_ID", - ) - - client.agent_pools.begin_complete_upgrade( - resource_group_name="rg1", - resource_name="clustername1", - agent_pool_name="agentpool1", - ).result() - - -# x-ms-original-file: 2026-03-02-preview/AgentPoolsCompleteUpgrade.json -if __name__ == "__main__": - main() diff --git a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/agent_pools_associate_crg.py b/sdk/containerservice/azure-mgmt-containerservice/generated_samples/agent_pools_create_crg.py similarity index 94% rename from sdk/containerservice/azure-mgmt-containerservice/generated_samples/agent_pools_associate_crg.py rename to sdk/containerservice/azure-mgmt-containerservice/generated_samples/agent_pools_create_crg.py index 3f9a22d56e33..21b4e944445f 100644 --- a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/agent_pools_associate_crg.py +++ b/sdk/containerservice/azure-mgmt-containerservice/generated_samples/agent_pools_create_crg.py @@ -16,7 +16,7 @@ pip install azure-identity pip install azure-mgmt-containerservice # USAGE - python agent_pools_associate_crg.py + python agent_pools_create_crg.py Before run the sample, please set the values of the client ID, tenant ID and client secret of the AAD application as environment variables: AZURE_CLIENT_ID, AZURE_TENANT_ID, @@ -48,6 +48,6 @@ def main(): print(response) -# x-ms-original-file: 2026-03-02-preview/AgentPoolsAssociate_CRG.json +# x-ms-original-file: 2026-04-01/AgentPoolsCreate_CRG.json if __name__ == "__main__": main() diff --git a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/agent_pools_create_custom_node_config.py b/sdk/containerservice/azure-mgmt-containerservice/generated_samples/agent_pools_create_custom_node_config.py index ef73db968d6d..4c39ae81f458 100644 --- a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/agent_pools_create_custom_node_config.py +++ b/sdk/containerservice/azure-mgmt-containerservice/generated_samples/agent_pools_create_custom_node_config.py @@ -43,14 +43,8 @@ def main(): "cpuCfsQuotaPeriod": "200ms", "cpuManagerPolicy": "static", "failSwapOn": False, - "hardEvictionThreshold": { - "memoryAvailable": "500Mi", - "nodeFsAvailable": "15%", - "nodeFsInodesFree": "10%", - }, "imageGcHighThreshold": 90, "imageGcLowThreshold": 70, - "kubeReserved": {"cpuMillicores": 200, "memoryMB": 1024}, "topologyManagerPolicy": "best-effort", }, "linuxOSConfig": { @@ -73,6 +67,6 @@ def main(): print(response) -# x-ms-original-file: 2026-03-02-preview/AgentPoolsCreate_CustomNodeConfig.json +# x-ms-original-file: 2026-04-01/AgentPoolsCreate_CustomNodeConfig.json if __name__ == "__main__": main() diff --git a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/agent_pools_create_dedicated_host_group.py b/sdk/containerservice/azure-mgmt-containerservice/generated_samples/agent_pools_create_dedicated_host_group.py index f4b1064d8905..f193a280f250 100644 --- a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/agent_pools_create_dedicated_host_group.py +++ b/sdk/containerservice/azure-mgmt-containerservice/generated_samples/agent_pools_create_dedicated_host_group.py @@ -48,6 +48,6 @@ def main(): print(response) -# x-ms-original-file: 2026-03-02-preview/AgentPoolsCreate_DedicatedHostGroup.json +# x-ms-original-file: 2026-04-01/AgentPoolsCreate_DedicatedHostGroup.json if __name__ == "__main__": main() diff --git a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/agent_pools_create_enable_encryption_at_host.py b/sdk/containerservice/azure-mgmt-containerservice/generated_samples/agent_pools_create_enable_encryption_at_host.py index a25df6da606e..fd45d3609361 100644 --- a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/agent_pools_create_enable_encryption_at_host.py +++ b/sdk/containerservice/azure-mgmt-containerservice/generated_samples/agent_pools_create_enable_encryption_at_host.py @@ -47,6 +47,6 @@ def main(): print(response) -# x-ms-original-file: 2026-03-02-preview/AgentPoolsCreate_EnableEncryptionAtHost.json +# x-ms-original-file: 2026-04-01/AgentPoolsCreate_EnableEncryptionAtHost.json if __name__ == "__main__": main() diff --git a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/agent_pools_create_enable_fips.py b/sdk/containerservice/azure-mgmt-containerservice/generated_samples/agent_pools_create_enable_fips.py index 429fdbdaafda..a6e903ffec13 100644 --- a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/agent_pools_create_enable_fips.py +++ b/sdk/containerservice/azure-mgmt-containerservice/generated_samples/agent_pools_create_enable_fips.py @@ -47,6 +47,6 @@ def main(): print(response) -# x-ms-original-file: 2026-03-02-preview/AgentPoolsCreate_EnableFIPS.json +# x-ms-original-file: 2026-04-01/AgentPoolsCreate_EnableFIPS.json if __name__ == "__main__": main() diff --git a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/agent_pools_create_enable_ultra_ssd.py b/sdk/containerservice/azure-mgmt-containerservice/generated_samples/agent_pools_create_enable_ultra_ssd.py index cba9e64c2aa9..6c1367be1570 100644 --- a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/agent_pools_create_enable_ultra_ssd.py +++ b/sdk/containerservice/azure-mgmt-containerservice/generated_samples/agent_pools_create_enable_ultra_ssd.py @@ -47,6 +47,6 @@ def main(): print(response) -# x-ms-original-file: 2026-03-02-preview/AgentPoolsCreate_EnableUltraSSD.json +# x-ms-original-file: 2026-04-01/AgentPoolsCreate_EnableUltraSSD.json if __name__ == "__main__": main() diff --git a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/agent_pools_create_ephemeral.py b/sdk/containerservice/azure-mgmt-containerservice/generated_samples/agent_pools_create_ephemeral.py index f4c7bc2b56bc..6fa98e5aa284 100644 --- a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/agent_pools_create_ephemeral.py +++ b/sdk/containerservice/azure-mgmt-containerservice/generated_samples/agent_pools_create_ephemeral.py @@ -48,6 +48,6 @@ def main(): print(response) -# x-ms-original-file: 2026-03-02-preview/AgentPoolsCreate_Ephemeral.json +# x-ms-original-file: 2026-04-01/AgentPoolsCreate_Ephemeral.json if __name__ == "__main__": main() diff --git a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/agent_pools_create_gpumig.py b/sdk/containerservice/azure-mgmt-containerservice/generated_samples/agent_pools_create_gpumig.py index f9dacef38498..70d3485058e1 100644 --- a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/agent_pools_create_gpumig.py +++ b/sdk/containerservice/azure-mgmt-containerservice/generated_samples/agent_pools_create_gpumig.py @@ -68,6 +68,6 @@ def main(): print(response) -# x-ms-original-file: 2026-03-02-preview/AgentPoolsCreate_GPUMIG.json +# x-ms-original-file: 2026-04-01/AgentPoolsCreate_GPUMIG.json if __name__ == "__main__": main() diff --git a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/agent_pools_create_message_of_the_day.py b/sdk/containerservice/azure-mgmt-containerservice/generated_samples/agent_pools_create_message_of_the_day.py index 148247158297..fcf01c5da278 100644 --- a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/agent_pools_create_message_of_the_day.py +++ b/sdk/containerservice/azure-mgmt-containerservice/generated_samples/agent_pools_create_message_of_the_day.py @@ -49,6 +49,6 @@ def main(): print(response) -# x-ms-original-file: 2026-03-02-preview/AgentPoolsCreate_MessageOfTheDay.json +# x-ms-original-file: 2026-04-01/AgentPoolsCreate_MessageOfTheDay.json if __name__ == "__main__": main() diff --git a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/agent_pools_create_ossku.py b/sdk/containerservice/azure-mgmt-containerservice/generated_samples/agent_pools_create_ossku.py index c17542102c01..77322d07da89 100644 --- a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/agent_pools_create_ossku.py +++ b/sdk/containerservice/azure-mgmt-containerservice/generated_samples/agent_pools_create_ossku.py @@ -68,6 +68,6 @@ def main(): print(response) -# x-ms-original-file: 2026-03-02-preview/AgentPoolsCreate_OSSKU.json +# x-ms-original-file: 2026-04-01/AgentPoolsCreate_OSSKU.json if __name__ == "__main__": main() diff --git a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/agent_pools_create_ppg.py b/sdk/containerservice/azure-mgmt-containerservice/generated_samples/agent_pools_create_ppg.py index 93d418179a38..3dda554eadc2 100644 --- a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/agent_pools_create_ppg.py +++ b/sdk/containerservice/azure-mgmt-containerservice/generated_samples/agent_pools_create_ppg.py @@ -48,6 +48,6 @@ def main(): print(response) -# x-ms-original-file: 2026-03-02-preview/AgentPoolsCreate_PPG.json +# x-ms-original-file: 2026-04-01/AgentPoolsCreate_PPG.json if __name__ == "__main__": main() diff --git a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/agent_pools_create_snapshot.py b/sdk/containerservice/azure-mgmt-containerservice/generated_samples/agent_pools_create_snapshot.py index 3a20516d3f5a..e2d87523fe4e 100644 --- a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/agent_pools_create_snapshot.py +++ b/sdk/containerservice/azure-mgmt-containerservice/generated_samples/agent_pools_create_snapshot.py @@ -51,6 +51,6 @@ def main(): print(response) -# x-ms-original-file: 2026-03-02-preview/AgentPoolsCreate_Snapshot.json +# x-ms-original-file: 2026-04-01/AgentPoolsCreate_Snapshot.json if __name__ == "__main__": main() diff --git a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/agent_pools_create_spot.py b/sdk/containerservice/azure-mgmt-containerservice/generated_samples/agent_pools_create_spot.py index ea964b0fd0ec..f0b0d3fbc361 100644 --- a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/agent_pools_create_spot.py +++ b/sdk/containerservice/azure-mgmt-containerservice/generated_samples/agent_pools_create_spot.py @@ -51,6 +51,6 @@ def main(): print(response) -# x-ms-original-file: 2026-03-02-preview/AgentPoolsCreate_Spot.json +# x-ms-original-file: 2026-04-01/AgentPoolsCreate_Spot.json if __name__ == "__main__": main() diff --git a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/agent_pools_create_type_virtual_machines.py b/sdk/containerservice/azure-mgmt-containerservice/generated_samples/agent_pools_create_type_virtual_machines.py index 2d9097cd8166..54ae6fa15707 100644 --- a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/agent_pools_create_type_virtual_machines.py +++ b/sdk/containerservice/azure-mgmt-containerservice/generated_samples/agent_pools_create_type_virtual_machines.py @@ -53,6 +53,6 @@ def main(): print(response) -# x-ms-original-file: 2026-03-02-preview/AgentPoolsCreate_TypeVirtualMachines.json +# x-ms-original-file: 2026-04-01/AgentPoolsCreate_TypeVirtualMachines.json if __name__ == "__main__": main() diff --git a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/agent_pools_create_type_virtual_machines_autoscale.py b/sdk/containerservice/azure-mgmt-containerservice/generated_samples/agent_pools_create_type_virtual_machines_autoscale.py deleted file mode 100644 index 8edcb78c126c..000000000000 --- a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/agent_pools_create_type_virtual_machines_autoscale.py +++ /dev/null @@ -1,56 +0,0 @@ -# coding=utf-8 -# -------------------------------------------------------------------------- -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT License. See License.txt in the project root for license information. -# Code generated by Microsoft (R) Python Code Generator. -# Changes may cause incorrect behavior and will be lost if the code is regenerated. -# -------------------------------------------------------------------------- - -from azure.identity import DefaultAzureCredential - -from azure.mgmt.containerservice import ContainerServiceClient - -""" -# PREREQUISITES - pip install azure-identity - pip install azure-mgmt-containerservice -# USAGE - python agent_pools_create_type_virtual_machines_autoscale.py - - Before run the sample, please set the values of the client ID, tenant ID and client secret - of the AAD application as environment variables: AZURE_CLIENT_ID, AZURE_TENANT_ID, - AZURE_CLIENT_SECRET. For more info about how to get the value, please see: - https://docs.microsoft.com/azure/active-directory/develop/howto-create-service-principal-portal -""" - - -def main(): - client = ContainerServiceClient( - credential=DefaultAzureCredential(), - subscription_id="SUBSCRIPTION_ID", - ) - - response = client.agent_pools.begin_create_or_update( - resource_group_name="rg1", - resource_name="clustername1", - agent_pool_name="agentpool1", - parameters={ - "properties": { - "nodeLabels": {"key1": "val1"}, - "nodeTaints": ["Key1=Value1:NoSchedule"], - "orchestratorVersion": "1.29.0", - "osType": "Linux", - "tags": {"name1": "val1"}, - "type": "VirtualMachines", - "virtualMachinesProfile": { - "scale": {"autoscale": [{"maxCount": 5, "minCount": 1, "size": "Standard_D2_v2"}]} - }, - } - }, - ).result() - print(response) - - -# x-ms-original-file: 2026-03-02-preview/AgentPoolsCreate_TypeVirtualMachines_Autoscale.json -if __name__ == "__main__": - main() diff --git a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/agent_pools_create_update.py b/sdk/containerservice/azure-mgmt-containerservice/generated_samples/agent_pools_create_update.py index b601d96b20bf..c7cd92afefc9 100644 --- a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/agent_pools_create_update.py +++ b/sdk/containerservice/azure-mgmt-containerservice/generated_samples/agent_pools_create_update.py @@ -52,6 +52,6 @@ def main(): print(response) -# x-ms-original-file: 2026-03-02-preview/AgentPoolsCreate_Update.json +# x-ms-original-file: 2026-04-01/AgentPoolsCreate_Update.json if __name__ == "__main__": main() diff --git a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/agent_pools_create_wasm_wasi.py b/sdk/containerservice/azure-mgmt-containerservice/generated_samples/agent_pools_create_wasm_wasi.py index 987b94e6cf67..8de9b94bda6c 100644 --- a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/agent_pools_create_wasm_wasi.py +++ b/sdk/containerservice/azure-mgmt-containerservice/generated_samples/agent_pools_create_wasm_wasi.py @@ -49,6 +49,6 @@ def main(): print(response) -# x-ms-original-file: 2026-03-02-preview/AgentPoolsCreate_WasmWasi.json +# x-ms-original-file: 2026-04-01/AgentPoolsCreate_WasmWasi.json if __name__ == "__main__": main() diff --git a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/agent_pools_create_windows_disable_outbound_nat.py b/sdk/containerservice/azure-mgmt-containerservice/generated_samples/agent_pools_create_windows_disable_outbound_nat.py index ba670da148e5..4b5d52d44fd5 100644 --- a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/agent_pools_create_windows_disable_outbound_nat.py +++ b/sdk/containerservice/azure-mgmt-containerservice/generated_samples/agent_pools_create_windows_disable_outbound_nat.py @@ -48,6 +48,6 @@ def main(): print(response) -# x-ms-original-file: 2026-03-02-preview/AgentPoolsCreate_WindowsDisableOutboundNAT.json +# x-ms-original-file: 2026-04-01/AgentPoolsCreate_WindowsDisableOutboundNAT.json if __name__ == "__main__": main() diff --git a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/agent_pools_create_windows_ossku.py b/sdk/containerservice/azure-mgmt-containerservice/generated_samples/agent_pools_create_windows_ossku.py index dab8b6ba75de..1552ed516ac7 100644 --- a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/agent_pools_create_windows_ossku.py +++ b/sdk/containerservice/azure-mgmt-containerservice/generated_samples/agent_pools_create_windows_ossku.py @@ -47,6 +47,6 @@ def main(): print(response) -# x-ms-original-file: 2026-03-02-preview/AgentPoolsCreate_WindowsOSSKU.json +# x-ms-original-file: 2026-04-01/AgentPoolsCreate_WindowsOSSKU.json if __name__ == "__main__": main() diff --git a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/agent_pools_delete.py b/sdk/containerservice/azure-mgmt-containerservice/generated_samples/agent_pools_delete.py index c6a53b4c1406..86af5069ef9a 100644 --- a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/agent_pools_delete.py +++ b/sdk/containerservice/azure-mgmt-containerservice/generated_samples/agent_pools_delete.py @@ -37,6 +37,6 @@ def main(): ).result() -# x-ms-original-file: 2026-03-02-preview/AgentPoolsDelete.json +# x-ms-original-file: 2026-04-01/AgentPoolsDelete.json if __name__ == "__main__": main() diff --git a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/agent_pools_delete_ignore_pod_disruption_budget.py b/sdk/containerservice/azure-mgmt-containerservice/generated_samples/agent_pools_delete_ignore_pod_disruption_budget.py deleted file mode 100644 index 3e32ceddb256..000000000000 --- a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/agent_pools_delete_ignore_pod_disruption_budget.py +++ /dev/null @@ -1,42 +0,0 @@ -# coding=utf-8 -# -------------------------------------------------------------------------- -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT License. See License.txt in the project root for license information. -# Code generated by Microsoft (R) Python Code Generator. -# Changes may cause incorrect behavior and will be lost if the code is regenerated. -# -------------------------------------------------------------------------- - -from azure.identity import DefaultAzureCredential - -from azure.mgmt.containerservice import ContainerServiceClient - -""" -# PREREQUISITES - pip install azure-identity - pip install azure-mgmt-containerservice -# USAGE - python agent_pools_delete_ignore_pod_disruption_budget.py - - Before run the sample, please set the values of the client ID, tenant ID and client secret - of the AAD application as environment variables: AZURE_CLIENT_ID, AZURE_TENANT_ID, - AZURE_CLIENT_SECRET. For more info about how to get the value, please see: - https://docs.microsoft.com/azure/active-directory/develop/howto-create-service-principal-portal -""" - - -def main(): - client = ContainerServiceClient( - credential=DefaultAzureCredential(), - subscription_id="SUBSCRIPTION_ID", - ) - - client.agent_pools.begin_delete( - resource_group_name="rg1", - resource_name="clustername1", - agent_pool_name="agentpool1", - ).result() - - -# x-ms-original-file: 2026-03-02-preview/AgentPoolsDelete_IgnorePodDisruptionBudget.json -if __name__ == "__main__": - main() diff --git a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/agent_pools_delete_machines.py b/sdk/containerservice/azure-mgmt-containerservice/generated_samples/agent_pools_delete_machines.py index fda31e6db6e2..8d7f5704916b 100644 --- a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/agent_pools_delete_machines.py +++ b/sdk/containerservice/azure-mgmt-containerservice/generated_samples/agent_pools_delete_machines.py @@ -38,6 +38,6 @@ def main(): ).result() -# x-ms-original-file: 2026-03-02-preview/AgentPoolsDeleteMachines.json +# x-ms-original-file: 2026-04-01/AgentPoolsDeleteMachines.json if __name__ == "__main__": main() diff --git a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/agent_pools_get.py b/sdk/containerservice/azure-mgmt-containerservice/generated_samples/agent_pools_get.py index e48a73ecdcb5..15f01583de10 100644 --- a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/agent_pools_get.py +++ b/sdk/containerservice/azure-mgmt-containerservice/generated_samples/agent_pools_get.py @@ -38,6 +38,6 @@ def main(): print(response) -# x-ms-original-file: 2026-03-02-preview/AgentPoolsGet.json +# x-ms-original-file: 2026-04-01/AgentPoolsGet.json if __name__ == "__main__": main() diff --git a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/agent_pools_get_agent_pool_available_versions.py b/sdk/containerservice/azure-mgmt-containerservice/generated_samples/agent_pools_get_agent_pool_available_versions.py index 038151631d91..c9243c474455 100644 --- a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/agent_pools_get_agent_pool_available_versions.py +++ b/sdk/containerservice/azure-mgmt-containerservice/generated_samples/agent_pools_get_agent_pool_available_versions.py @@ -37,6 +37,6 @@ def main(): print(response) -# x-ms-original-file: 2026-03-02-preview/AgentPoolsGetAgentPoolAvailableVersions.json +# x-ms-original-file: 2026-04-01/AgentPoolsGetAgentPoolAvailableVersions.json if __name__ == "__main__": main() diff --git a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/agent_pools_get_upgrade_profile.py b/sdk/containerservice/azure-mgmt-containerservice/generated_samples/agent_pools_get_upgrade_profile.py index fe6a65182fc6..7372b15c3f1e 100644 --- a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/agent_pools_get_upgrade_profile.py +++ b/sdk/containerservice/azure-mgmt-containerservice/generated_samples/agent_pools_get_upgrade_profile.py @@ -38,6 +38,6 @@ def main(): print(response) -# x-ms-original-file: 2026-03-02-preview/AgentPoolsGetUpgradeProfile.json +# x-ms-original-file: 2026-04-01/AgentPoolsGetUpgradeProfile.json if __name__ == "__main__": main() diff --git a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/agent_pools_list.py b/sdk/containerservice/azure-mgmt-containerservice/generated_samples/agent_pools_list.py index d9e80a547c56..cd606b8e8fc5 100644 --- a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/agent_pools_list.py +++ b/sdk/containerservice/azure-mgmt-containerservice/generated_samples/agent_pools_list.py @@ -38,6 +38,6 @@ def main(): print(item) -# x-ms-original-file: 2026-03-02-preview/AgentPoolsList.json +# x-ms-original-file: 2026-04-01/AgentPoolsList.json if __name__ == "__main__": main() diff --git a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/agent_pools_start.py b/sdk/containerservice/azure-mgmt-containerservice/generated_samples/agent_pools_start.py index 9dadcc8bbbda..b5152636c088 100644 --- a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/agent_pools_start.py +++ b/sdk/containerservice/azure-mgmt-containerservice/generated_samples/agent_pools_start.py @@ -39,6 +39,6 @@ def main(): print(response) -# x-ms-original-file: 2026-03-02-preview/AgentPools_Start.json +# x-ms-original-file: 2026-04-01/AgentPools_Start.json if __name__ == "__main__": main() diff --git a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/agent_pools_stop.py b/sdk/containerservice/azure-mgmt-containerservice/generated_samples/agent_pools_stop.py index f51fe26d72ea..44fade13246f 100644 --- a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/agent_pools_stop.py +++ b/sdk/containerservice/azure-mgmt-containerservice/generated_samples/agent_pools_stop.py @@ -39,6 +39,6 @@ def main(): print(response) -# x-ms-original-file: 2026-03-02-preview/AgentPools_Stop.json +# x-ms-original-file: 2026-04-01/AgentPools_Stop.json if __name__ == "__main__": main() diff --git a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/agent_pools_update.py b/sdk/containerservice/azure-mgmt-containerservice/generated_samples/agent_pools_update.py index d665d45d7def..b9e5974c6fb2 100644 --- a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/agent_pools_update.py +++ b/sdk/containerservice/azure-mgmt-containerservice/generated_samples/agent_pools_update.py @@ -52,6 +52,6 @@ def main(): print(response) -# x-ms-original-file: 2026-03-02-preview/AgentPools_Update.json +# x-ms-original-file: 2026-04-01/AgentPools_Update.json if __name__ == "__main__": main() diff --git a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/agent_pools_upgrade_node_image_version.py b/sdk/containerservice/azure-mgmt-containerservice/generated_samples/agent_pools_upgrade_node_image_version.py index cb936d0c8180..71e4d0f3b090 100644 --- a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/agent_pools_upgrade_node_image_version.py +++ b/sdk/containerservice/azure-mgmt-containerservice/generated_samples/agent_pools_upgrade_node_image_version.py @@ -37,6 +37,6 @@ def main(): ).result() -# x-ms-original-file: 2026-03-02-preview/AgentPoolsUpgradeNodeImageVersion.json +# x-ms-original-file: 2026-04-01/AgentPoolsUpgradeNodeImageVersion.json if __name__ == "__main__": main() diff --git a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/get_guardrails_versions.py b/sdk/containerservice/azure-mgmt-containerservice/generated_samples/get_guardrails_versions.py deleted file mode 100644 index 809dffc371fd..000000000000 --- a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/get_guardrails_versions.py +++ /dev/null @@ -1,42 +0,0 @@ -# coding=utf-8 -# -------------------------------------------------------------------------- -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT License. See License.txt in the project root for license information. -# Code generated by Microsoft (R) Python Code Generator. -# Changes may cause incorrect behavior and will be lost if the code is regenerated. -# -------------------------------------------------------------------------- - -from azure.identity import DefaultAzureCredential - -from azure.mgmt.containerservice import ContainerServiceClient - -""" -# PREREQUISITES - pip install azure-identity - pip install azure-mgmt-containerservice -# USAGE - python get_guardrails_versions.py - - Before run the sample, please set the values of the client ID, tenant ID and client secret - of the AAD application as environment variables: AZURE_CLIENT_ID, AZURE_TENANT_ID, - AZURE_CLIENT_SECRET. For more info about how to get the value, please see: - https://docs.microsoft.com/azure/active-directory/develop/howto-create-service-principal-portal -""" - - -def main(): - client = ContainerServiceClient( - credential=DefaultAzureCredential(), - subscription_id="SUBSCRIPTION_ID", - ) - - response = client.managed_clusters.get_guardrails_versions( - location="location1", - version="v1.0.0", - ) - print(response) - - -# x-ms-original-file: 2026-03-02-preview/GetGuardrailsVersions.json -if __name__ == "__main__": - main() diff --git a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/get_safeguards_versions.py b/sdk/containerservice/azure-mgmt-containerservice/generated_samples/get_safeguards_versions.py deleted file mode 100644 index 94d51733309d..000000000000 --- a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/get_safeguards_versions.py +++ /dev/null @@ -1,42 +0,0 @@ -# coding=utf-8 -# -------------------------------------------------------------------------- -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT License. See License.txt in the project root for license information. -# Code generated by Microsoft (R) Python Code Generator. -# Changes may cause incorrect behavior and will be lost if the code is regenerated. -# -------------------------------------------------------------------------- - -from azure.identity import DefaultAzureCredential - -from azure.mgmt.containerservice import ContainerServiceClient - -""" -# PREREQUISITES - pip install azure-identity - pip install azure-mgmt-containerservice -# USAGE - python get_safeguards_versions.py - - Before run the sample, please set the values of the client ID, tenant ID and client secret - of the AAD application as environment variables: AZURE_CLIENT_ID, AZURE_TENANT_ID, - AZURE_CLIENT_SECRET. For more info about how to get the value, please see: - https://docs.microsoft.com/azure/active-directory/develop/howto-create-service-principal-portal -""" - - -def main(): - client = ContainerServiceClient( - credential=DefaultAzureCredential(), - subscription_id="SUBSCRIPTION_ID", - ) - - response = client.managed_clusters.get_safeguards_versions( - location="location1", - version="v1.0.0", - ) - print(response) - - -# x-ms-original-file: 2026-03-02-preview/GetSafeguardsVersions.json -if __name__ == "__main__": - main() diff --git a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/identity_bindings_create_or_update.py b/sdk/containerservice/azure-mgmt-containerservice/generated_samples/identity_bindings_create_or_update.py index 9ef7afdf26e4..c4d003eba470 100644 --- a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/identity_bindings_create_or_update.py +++ b/sdk/containerservice/azure-mgmt-containerservice/generated_samples/identity_bindings_create_or_update.py @@ -46,6 +46,6 @@ def main(): print(response) -# x-ms-original-file: 2026-03-02-preview/IdentityBindings_Create_Or_Update.json +# x-ms-original-file: 2026-04-01/IdentityBindings_Create_Or_Update.json if __name__ == "__main__": main() diff --git a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/identity_bindings_delete.py b/sdk/containerservice/azure-mgmt-containerservice/generated_samples/identity_bindings_delete.py index 72834b359048..f02ce33e02e0 100644 --- a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/identity_bindings_delete.py +++ b/sdk/containerservice/azure-mgmt-containerservice/generated_samples/identity_bindings_delete.py @@ -37,6 +37,6 @@ def main(): ).result() -# x-ms-original-file: 2026-03-02-preview/IdentityBindings_Delete.json +# x-ms-original-file: 2026-04-01/IdentityBindings_Delete.json if __name__ == "__main__": main() diff --git a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/identity_bindings_get.py b/sdk/containerservice/azure-mgmt-containerservice/generated_samples/identity_bindings_get.py index 4e29a6deca1a..5c7ff9a1c609 100644 --- a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/identity_bindings_get.py +++ b/sdk/containerservice/azure-mgmt-containerservice/generated_samples/identity_bindings_get.py @@ -38,6 +38,6 @@ def main(): print(response) -# x-ms-original-file: 2026-03-02-preview/IdentityBindings_Get.json +# x-ms-original-file: 2026-04-01/IdentityBindings_Get.json if __name__ == "__main__": main() diff --git a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/identity_bindings_list.py b/sdk/containerservice/azure-mgmt-containerservice/generated_samples/identity_bindings_list.py index 22af9de7131e..10c9f716b248 100644 --- a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/identity_bindings_list.py +++ b/sdk/containerservice/azure-mgmt-containerservice/generated_samples/identity_bindings_list.py @@ -38,6 +38,6 @@ def main(): print(item) -# x-ms-original-file: 2026-03-02-preview/IdentityBindings_List.json +# x-ms-original-file: 2026-04-01/IdentityBindings_List.json if __name__ == "__main__": main() diff --git a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/jwt_authenticators_create_or_update.py b/sdk/containerservice/azure-mgmt-containerservice/generated_samples/jwt_authenticators_create_or_update.py deleted file mode 100644 index 367c57d0a293..000000000000 --- a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/jwt_authenticators_create_or_update.py +++ /dev/null @@ -1,66 +0,0 @@ -# coding=utf-8 -# -------------------------------------------------------------------------- -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT License. See License.txt in the project root for license information. -# Code generated by Microsoft (R) Python Code Generator. -# Changes may cause incorrect behavior and will be lost if the code is regenerated. -# -------------------------------------------------------------------------- - -from azure.identity import DefaultAzureCredential - -from azure.mgmt.containerservice import ContainerServiceClient - -""" -# PREREQUISITES - pip install azure-identity - pip install azure-mgmt-containerservice -# USAGE - python jwt_authenticators_create_or_update.py - - Before run the sample, please set the values of the client ID, tenant ID and client secret - of the AAD application as environment variables: AZURE_CLIENT_ID, AZURE_TENANT_ID, - AZURE_CLIENT_SECRET. For more info about how to get the value, please see: - https://docs.microsoft.com/azure/active-directory/develop/howto-create-service-principal-portal -""" - - -def main(): - client = ContainerServiceClient( - credential=DefaultAzureCredential(), - subscription_id="SUBSCRIPTION_ID", - ) - - response = client.jwt_authenticators.begin_create_or_update( - resource_group_name="rg1", - resource_name="clustername1", - jwt_authenticator_name="jwt1", - parameters={ - "properties": { - "claimMappings": { - "extra": [{"key": "example.com/extrakey", "valueExpression": "claims.customfield"}], - "groups": {"expression": "claims.groups.split(',').map(group, 'aks:jwt:' + group)"}, - "username": {"expression": "'aks:jwt:' + claims.sub"}, - }, - "claimValidationRules": [ - {"expression": "has(claims.sub)", "message": "Sub is required"}, - {"expression": "claims.sub != ''", "message": "Sub cannot be empty"}, - ], - "issuer": { - "audiences": ["https://example.com/audience1", "https://example.com/audience2"], - "url": "https://example.com", - }, - "userValidationRules": [ - { - "expression": "user.groups.all(group, group.startsWith('aks:jwt:admin:'))", - "message": "Must be in admin user group", - } - ], - } - }, - ).result() - print(response) - - -# x-ms-original-file: 2026-03-02-preview/JWTAuthenticators_Create_Or_Update.json -if __name__ == "__main__": - main() diff --git a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/jwt_authenticators_delete.py b/sdk/containerservice/azure-mgmt-containerservice/generated_samples/jwt_authenticators_delete.py deleted file mode 100644 index 98ee18e90b15..000000000000 --- a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/jwt_authenticators_delete.py +++ /dev/null @@ -1,42 +0,0 @@ -# coding=utf-8 -# -------------------------------------------------------------------------- -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT License. See License.txt in the project root for license information. -# Code generated by Microsoft (R) Python Code Generator. -# Changes may cause incorrect behavior and will be lost if the code is regenerated. -# -------------------------------------------------------------------------- - -from azure.identity import DefaultAzureCredential - -from azure.mgmt.containerservice import ContainerServiceClient - -""" -# PREREQUISITES - pip install azure-identity - pip install azure-mgmt-containerservice -# USAGE - python jwt_authenticators_delete.py - - Before run the sample, please set the values of the client ID, tenant ID and client secret - of the AAD application as environment variables: AZURE_CLIENT_ID, AZURE_TENANT_ID, - AZURE_CLIENT_SECRET. For more info about how to get the value, please see: - https://docs.microsoft.com/azure/active-directory/develop/howto-create-service-principal-portal -""" - - -def main(): - client = ContainerServiceClient( - credential=DefaultAzureCredential(), - subscription_id="SUBSCRIPTION_ID", - ) - - client.jwt_authenticators.begin_delete( - resource_group_name="rg1", - resource_name="clustername1", - jwt_authenticator_name="jwt1", - ).result() - - -# x-ms-original-file: 2026-03-02-preview/JWTAuthenticators_Delete.json -if __name__ == "__main__": - main() diff --git a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/jwt_authenticators_get.py b/sdk/containerservice/azure-mgmt-containerservice/generated_samples/jwt_authenticators_get.py deleted file mode 100644 index c47d65a9552b..000000000000 --- a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/jwt_authenticators_get.py +++ /dev/null @@ -1,43 +0,0 @@ -# coding=utf-8 -# -------------------------------------------------------------------------- -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT License. See License.txt in the project root for license information. -# Code generated by Microsoft (R) Python Code Generator. -# Changes may cause incorrect behavior and will be lost if the code is regenerated. -# -------------------------------------------------------------------------- - -from azure.identity import DefaultAzureCredential - -from azure.mgmt.containerservice import ContainerServiceClient - -""" -# PREREQUISITES - pip install azure-identity - pip install azure-mgmt-containerservice -# USAGE - python jwt_authenticators_get.py - - Before run the sample, please set the values of the client ID, tenant ID and client secret - of the AAD application as environment variables: AZURE_CLIENT_ID, AZURE_TENANT_ID, - AZURE_CLIENT_SECRET. For more info about how to get the value, please see: - https://docs.microsoft.com/azure/active-directory/develop/howto-create-service-principal-portal -""" - - -def main(): - client = ContainerServiceClient( - credential=DefaultAzureCredential(), - subscription_id="SUBSCRIPTION_ID", - ) - - response = client.jwt_authenticators.get( - resource_group_name="rg1", - resource_name="clustername1", - jwt_authenticator_name="jwt1", - ) - print(response) - - -# x-ms-original-file: 2026-03-02-preview/JWTAuthenticators_Get.json -if __name__ == "__main__": - main() diff --git a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/jwt_authenticators_list.py b/sdk/containerservice/azure-mgmt-containerservice/generated_samples/jwt_authenticators_list.py deleted file mode 100644 index 8d4d2a3ca864..000000000000 --- a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/jwt_authenticators_list.py +++ /dev/null @@ -1,43 +0,0 @@ -# coding=utf-8 -# -------------------------------------------------------------------------- -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT License. See License.txt in the project root for license information. -# Code generated by Microsoft (R) Python Code Generator. -# Changes may cause incorrect behavior and will be lost if the code is regenerated. -# -------------------------------------------------------------------------- - -from azure.identity import DefaultAzureCredential - -from azure.mgmt.containerservice import ContainerServiceClient - -""" -# PREREQUISITES - pip install azure-identity - pip install azure-mgmt-containerservice -# USAGE - python jwt_authenticators_list.py - - Before run the sample, please set the values of the client ID, tenant ID and client secret - of the AAD application as environment variables: AZURE_CLIENT_ID, AZURE_TENANT_ID, - AZURE_CLIENT_SECRET. For more info about how to get the value, please see: - https://docs.microsoft.com/azure/active-directory/develop/howto-create-service-principal-portal -""" - - -def main(): - client = ContainerServiceClient( - credential=DefaultAzureCredential(), - subscription_id="SUBSCRIPTION_ID", - ) - - response = client.jwt_authenticators.list_by_managed_cluster( - resource_group_name="rg1", - resource_name="clustername1", - ) - for item in response: - print(item) - - -# x-ms-original-file: 2026-03-02-preview/JWTAuthenticators_List.json -if __name__ == "__main__": - main() diff --git a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/kubernetes_versions_list.py b/sdk/containerservice/azure-mgmt-containerservice/generated_samples/kubernetes_versions_list.py index 65a05c19915d..30ba557e8bad 100644 --- a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/kubernetes_versions_list.py +++ b/sdk/containerservice/azure-mgmt-containerservice/generated_samples/kubernetes_versions_list.py @@ -36,6 +36,6 @@ def main(): print(response) -# x-ms-original-file: 2026-03-02-preview/KubernetesVersions_List.json +# x-ms-original-file: 2026-04-01/KubernetesVersions_List.json if __name__ == "__main__": main() diff --git a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/list_available_container_service_vm_skus.py b/sdk/containerservice/azure-mgmt-containerservice/generated_samples/list_available_container_service_vm_skus.py deleted file mode 100644 index 8222f9e4df6c..000000000000 --- a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/list_available_container_service_vm_skus.py +++ /dev/null @@ -1,42 +0,0 @@ -# coding=utf-8 -# -------------------------------------------------------------------------- -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT License. See License.txt in the project root for license information. -# Code generated by Microsoft (R) Python Code Generator. -# Changes may cause incorrect behavior and will be lost if the code is regenerated. -# -------------------------------------------------------------------------- - -from azure.identity import DefaultAzureCredential - -from azure.mgmt.containerservice import ContainerServiceClient - -""" -# PREREQUISITES - pip install azure-identity - pip install azure-mgmt-containerservice -# USAGE - python list_available_container_service_vm_skus.py - - Before run the sample, please set the values of the client ID, tenant ID and client secret - of the AAD application as environment variables: AZURE_CLIENT_ID, AZURE_TENANT_ID, - AZURE_CLIENT_SECRET. For more info about how to get the value, please see: - https://docs.microsoft.com/azure/active-directory/develop/howto-create-service-principal-portal -""" - - -def main(): - client = ContainerServiceClient( - credential=DefaultAzureCredential(), - subscription_id="SUBSCRIPTION_ID", - ) - - response = client.vm_skus.list( - location="westus", - ) - for item in response: - print(item) - - -# x-ms-original-file: 2026-03-02-preview/ListAvailableContainerServiceVmSkus.json -if __name__ == "__main__": - main() diff --git a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/list_available_container_service_vm_skus_with_extended_locations.py b/sdk/containerservice/azure-mgmt-containerservice/generated_samples/list_available_container_service_vm_skus_with_extended_locations.py deleted file mode 100644 index 6a1b66fd27b9..000000000000 --- a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/list_available_container_service_vm_skus_with_extended_locations.py +++ /dev/null @@ -1,42 +0,0 @@ -# coding=utf-8 -# -------------------------------------------------------------------------- -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT License. See License.txt in the project root for license information. -# Code generated by Microsoft (R) Python Code Generator. -# Changes may cause incorrect behavior and will be lost if the code is regenerated. -# -------------------------------------------------------------------------- - -from azure.identity import DefaultAzureCredential - -from azure.mgmt.containerservice import ContainerServiceClient - -""" -# PREREQUISITES - pip install azure-identity - pip install azure-mgmt-containerservice -# USAGE - python list_available_container_service_vm_skus_with_extended_locations.py - - Before run the sample, please set the values of the client ID, tenant ID and client secret - of the AAD application as environment variables: AZURE_CLIENT_ID, AZURE_TENANT_ID, - AZURE_CLIENT_SECRET. For more info about how to get the value, please see: - https://docs.microsoft.com/azure/active-directory/develop/howto-create-service-principal-portal -""" - - -def main(): - client = ContainerServiceClient( - credential=DefaultAzureCredential(), - subscription_id="SUBSCRIPTION_ID", - ) - - response = client.vm_skus.list( - location="westus", - ) - for item in response: - print(item) - - -# x-ms-original-file: 2026-03-02-preview/ListAvailableContainerServiceVmSkusWithExtendedLocations.json -if __name__ == "__main__": - main() diff --git a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/list_guardrails_versions.py b/sdk/containerservice/azure-mgmt-containerservice/generated_samples/list_guardrails_versions.py deleted file mode 100644 index c9a781319b3e..000000000000 --- a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/list_guardrails_versions.py +++ /dev/null @@ -1,42 +0,0 @@ -# coding=utf-8 -# -------------------------------------------------------------------------- -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT License. See License.txt in the project root for license information. -# Code generated by Microsoft (R) Python Code Generator. -# Changes may cause incorrect behavior and will be lost if the code is regenerated. -# -------------------------------------------------------------------------- - -from azure.identity import DefaultAzureCredential - -from azure.mgmt.containerservice import ContainerServiceClient - -""" -# PREREQUISITES - pip install azure-identity - pip install azure-mgmt-containerservice -# USAGE - python list_guardrails_versions.py - - Before run the sample, please set the values of the client ID, tenant ID and client secret - of the AAD application as environment variables: AZURE_CLIENT_ID, AZURE_TENANT_ID, - AZURE_CLIENT_SECRET. For more info about how to get the value, please see: - https://docs.microsoft.com/azure/active-directory/develop/howto-create-service-principal-portal -""" - - -def main(): - client = ContainerServiceClient( - credential=DefaultAzureCredential(), - subscription_id="SUBSCRIPTION_ID", - ) - - response = client.managed_clusters.list_guardrails_versions( - location="location1", - ) - for item in response: - print(item) - - -# x-ms-original-file: 2026-03-02-preview/ListGuardrailsVersions.json -if __name__ == "__main__": - main() diff --git a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/list_safeguards_versions.py b/sdk/containerservice/azure-mgmt-containerservice/generated_samples/list_safeguards_versions.py deleted file mode 100644 index 6b7590cb8abf..000000000000 --- a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/list_safeguards_versions.py +++ /dev/null @@ -1,42 +0,0 @@ -# coding=utf-8 -# -------------------------------------------------------------------------- -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT License. See License.txt in the project root for license information. -# Code generated by Microsoft (R) Python Code Generator. -# Changes may cause incorrect behavior and will be lost if the code is regenerated. -# -------------------------------------------------------------------------- - -from azure.identity import DefaultAzureCredential - -from azure.mgmt.containerservice import ContainerServiceClient - -""" -# PREREQUISITES - pip install azure-identity - pip install azure-mgmt-containerservice -# USAGE - python list_safeguards_versions.py - - Before run the sample, please set the values of the client ID, tenant ID and client secret - of the AAD application as environment variables: AZURE_CLIENT_ID, AZURE_TENANT_ID, - AZURE_CLIENT_SECRET. For more info about how to get the value, please see: - https://docs.microsoft.com/azure/active-directory/develop/howto-create-service-principal-portal -""" - - -def main(): - client = ContainerServiceClient( - credential=DefaultAzureCredential(), - subscription_id="SUBSCRIPTION_ID", - ) - - response = client.managed_clusters.list_safeguards_versions( - location="location1", - ) - for item in response: - print(item) - - -# x-ms-original-file: 2026-03-02-preview/ListSafeguardsVersions.json -if __name__ == "__main__": - main() diff --git a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/load_balancers_create_or_update.py b/sdk/containerservice/azure-mgmt-containerservice/generated_samples/load_balancers_create_or_update.py deleted file mode 100644 index 1cb3383a368c..000000000000 --- a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/load_balancers_create_or_update.py +++ /dev/null @@ -1,44 +0,0 @@ -# coding=utf-8 -# -------------------------------------------------------------------------- -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT License. See License.txt in the project root for license information. -# Code generated by Microsoft (R) Python Code Generator. -# Changes may cause incorrect behavior and will be lost if the code is regenerated. -# -------------------------------------------------------------------------- - -from azure.identity import DefaultAzureCredential - -from azure.mgmt.containerservice import ContainerServiceClient - -""" -# PREREQUISITES - pip install azure-identity - pip install azure-mgmt-containerservice -# USAGE - python load_balancers_create_or_update.py - - Before run the sample, please set the values of the client ID, tenant ID and client secret - of the AAD application as environment variables: AZURE_CLIENT_ID, AZURE_TENANT_ID, - AZURE_CLIENT_SECRET. For more info about how to get the value, please see: - https://docs.microsoft.com/azure/active-directory/develop/howto-create-service-principal-portal -""" - - -def main(): - client = ContainerServiceClient( - credential=DefaultAzureCredential(), - subscription_id="SUBSCRIPTION_ID", - ) - - response = client.load_balancers.create_or_update( - resource_group_name="rg1", - resource_name="clustername1", - load_balancer_name="kubernetes", - parameters={"properties": {"allowServicePlacement": True, "primaryAgentPoolName": "agentpool1"}}, - ) - print(response) - - -# x-ms-original-file: 2026-03-02-preview/LoadBalancers_Create_Or_Update.json -if __name__ == "__main__": - main() diff --git a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/load_balancers_delete.py b/sdk/containerservice/azure-mgmt-containerservice/generated_samples/load_balancers_delete.py deleted file mode 100644 index 2706216f6057..000000000000 --- a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/load_balancers_delete.py +++ /dev/null @@ -1,42 +0,0 @@ -# coding=utf-8 -# -------------------------------------------------------------------------- -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT License. See License.txt in the project root for license information. -# Code generated by Microsoft (R) Python Code Generator. -# Changes may cause incorrect behavior and will be lost if the code is regenerated. -# -------------------------------------------------------------------------- - -from azure.identity import DefaultAzureCredential - -from azure.mgmt.containerservice import ContainerServiceClient - -""" -# PREREQUISITES - pip install azure-identity - pip install azure-mgmt-containerservice -# USAGE - python load_balancers_delete.py - - Before run the sample, please set the values of the client ID, tenant ID and client secret - of the AAD application as environment variables: AZURE_CLIENT_ID, AZURE_TENANT_ID, - AZURE_CLIENT_SECRET. For more info about how to get the value, please see: - https://docs.microsoft.com/azure/active-directory/develop/howto-create-service-principal-portal -""" - - -def main(): - client = ContainerServiceClient( - credential=DefaultAzureCredential(), - subscription_id="SUBSCRIPTION_ID", - ) - - client.load_balancers.begin_delete( - resource_group_name="rg1", - resource_name="clustername1", - load_balancer_name="kubernetes", - ).result() - - -# x-ms-original-file: 2026-03-02-preview/LoadBalancers_Delete.json -if __name__ == "__main__": - main() diff --git a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/load_balancers_get.py b/sdk/containerservice/azure-mgmt-containerservice/generated_samples/load_balancers_get.py deleted file mode 100644 index c41dfe05818b..000000000000 --- a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/load_balancers_get.py +++ /dev/null @@ -1,43 +0,0 @@ -# coding=utf-8 -# -------------------------------------------------------------------------- -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT License. See License.txt in the project root for license information. -# Code generated by Microsoft (R) Python Code Generator. -# Changes may cause incorrect behavior and will be lost if the code is regenerated. -# -------------------------------------------------------------------------- - -from azure.identity import DefaultAzureCredential - -from azure.mgmt.containerservice import ContainerServiceClient - -""" -# PREREQUISITES - pip install azure-identity - pip install azure-mgmt-containerservice -# USAGE - python load_balancers_get.py - - Before run the sample, please set the values of the client ID, tenant ID and client secret - of the AAD application as environment variables: AZURE_CLIENT_ID, AZURE_TENANT_ID, - AZURE_CLIENT_SECRET. For more info about how to get the value, please see: - https://docs.microsoft.com/azure/active-directory/develop/howto-create-service-principal-portal -""" - - -def main(): - client = ContainerServiceClient( - credential=DefaultAzureCredential(), - subscription_id="SUBSCRIPTION_ID", - ) - - response = client.load_balancers.get( - resource_group_name="rg1", - resource_name="clustername1", - load_balancer_name="kubernetes", - ) - print(response) - - -# x-ms-original-file: 2026-03-02-preview/LoadBalancers_Get.json -if __name__ == "__main__": - main() diff --git a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/load_balancers_list.py b/sdk/containerservice/azure-mgmt-containerservice/generated_samples/load_balancers_list.py deleted file mode 100644 index 93423856ea07..000000000000 --- a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/load_balancers_list.py +++ /dev/null @@ -1,43 +0,0 @@ -# coding=utf-8 -# -------------------------------------------------------------------------- -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT License. See License.txt in the project root for license information. -# Code generated by Microsoft (R) Python Code Generator. -# Changes may cause incorrect behavior and will be lost if the code is regenerated. -# -------------------------------------------------------------------------- - -from azure.identity import DefaultAzureCredential - -from azure.mgmt.containerservice import ContainerServiceClient - -""" -# PREREQUISITES - pip install azure-identity - pip install azure-mgmt-containerservice -# USAGE - python load_balancers_list.py - - Before run the sample, please set the values of the client ID, tenant ID and client secret - of the AAD application as environment variables: AZURE_CLIENT_ID, AZURE_TENANT_ID, - AZURE_CLIENT_SECRET. For more info about how to get the value, please see: - https://docs.microsoft.com/azure/active-directory/develop/howto-create-service-principal-portal -""" - - -def main(): - client = ContainerServiceClient( - credential=DefaultAzureCredential(), - subscription_id="SUBSCRIPTION_ID", - ) - - response = client.load_balancers.list_by_managed_cluster( - resource_group_name="rg1", - resource_name="clustername1", - ) - for item in response: - print(item) - - -# x-ms-original-file: 2026-03-02-preview/LoadBalancers_List.json -if __name__ == "__main__": - main() diff --git a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/load_balancers_rebalance.py b/sdk/containerservice/azure-mgmt-containerservice/generated_samples/load_balancers_rebalance.py deleted file mode 100644 index b965d2829f7e..000000000000 --- a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/load_balancers_rebalance.py +++ /dev/null @@ -1,42 +0,0 @@ -# coding=utf-8 -# -------------------------------------------------------------------------- -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT License. See License.txt in the project root for license information. -# Code generated by Microsoft (R) Python Code Generator. -# Changes may cause incorrect behavior and will be lost if the code is regenerated. -# -------------------------------------------------------------------------- - -from azure.identity import DefaultAzureCredential - -from azure.mgmt.containerservice import ContainerServiceClient - -""" -# PREREQUISITES - pip install azure-identity - pip install azure-mgmt-containerservice -# USAGE - python load_balancers_rebalance.py - - Before run the sample, please set the values of the client ID, tenant ID and client secret - of the AAD application as environment variables: AZURE_CLIENT_ID, AZURE_TENANT_ID, - AZURE_CLIENT_SECRET. For more info about how to get the value, please see: - https://docs.microsoft.com/azure/active-directory/develop/howto-create-service-principal-portal -""" - - -def main(): - client = ContainerServiceClient( - credential=DefaultAzureCredential(), - subscription_id="SUBSCRIPTION_ID", - ) - - client.managed_clusters.begin_rebalance_load_balancers( - resource_group_name="rg1", - resource_name="clustername1", - parameters={"loadBalancerNames": ["kubernetes"]}, - ).result() - - -# x-ms-original-file: 2026-03-02-preview/LoadBalancers_Rebalance.json -if __name__ == "__main__": - main() diff --git a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/machine_create_update.py b/sdk/containerservice/azure-mgmt-containerservice/generated_samples/machine_create_update.py deleted file mode 100644 index 91c6de5aa216..000000000000 --- a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/machine_create_update.py +++ /dev/null @@ -1,60 +0,0 @@ -# coding=utf-8 -# -------------------------------------------------------------------------- -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT License. See License.txt in the project root for license information. -# Code generated by Microsoft (R) Python Code Generator. -# Changes may cause incorrect behavior and will be lost if the code is regenerated. -# -------------------------------------------------------------------------- - -from azure.identity import DefaultAzureCredential - -from azure.mgmt.containerservice import ContainerServiceClient - -""" -# PREREQUISITES - pip install azure-identity - pip install azure-mgmt-containerservice -# USAGE - python machine_create_update.py - - Before run the sample, please set the values of the client ID, tenant ID and client secret - of the AAD application as environment variables: AZURE_CLIENT_ID, AZURE_TENANT_ID, - AZURE_CLIENT_SECRET. For more info about how to get the value, please see: - https://docs.microsoft.com/azure/active-directory/develop/howto-create-service-principal-portal -""" - - -def main(): - client = ContainerServiceClient( - credential=DefaultAzureCredential(), - subscription_id="SUBSCRIPTION_ID", - ) - - response = client.machines.begin_create_or_update( - resource_group_name="rg1", - resource_name="clustername1", - agent_pool_name="agentpool1", - machine_name="machine1", - parameters={ - "properties": { - "hardware": {"vmSize": "Standard_DS1_v2"}, - "kubernetes": { - "kubeletDiskType": "OS", - "maxPods": 110, - "nodeLabels": {"key1": "val1"}, - "nodeTaints": ["Key1=Value1:NoSchedule"], - "orchestratorVersion": "1.30", - }, - "mode": "User", - "operatingSystem": {"enableFIPS": False, "osSKU": "Ubuntu", "osType": "Linux"}, - "priority": "Spot", - "tags": {"name1": "val1"}, - } - }, - ).result() - print(response) - - -# x-ms-original-file: 2026-03-02-preview/MachineCreate_Update.json -if __name__ == "__main__": - main() diff --git a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/machine_get.py b/sdk/containerservice/azure-mgmt-containerservice/generated_samples/machine_get.py index d152a7e5c7e5..c5678828e290 100644 --- a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/machine_get.py +++ b/sdk/containerservice/azure-mgmt-containerservice/generated_samples/machine_get.py @@ -39,6 +39,6 @@ def main(): print(response) -# x-ms-original-file: 2026-03-02-preview/MachineGet.json +# x-ms-original-file: 2026-04-01/MachineGet.json if __name__ == "__main__": main() diff --git a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/machine_list.py b/sdk/containerservice/azure-mgmt-containerservice/generated_samples/machine_list.py index cdfa98ff47bf..d3ce28e20861 100644 --- a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/machine_list.py +++ b/sdk/containerservice/azure-mgmt-containerservice/generated_samples/machine_list.py @@ -39,6 +39,6 @@ def main(): print(item) -# x-ms-original-file: 2026-03-02-preview/MachineList.json +# x-ms-original-file: 2026-04-01/MachineList.json if __name__ == "__main__": main() diff --git a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/maintenance_configurations_create_update_maintenance_window.py b/sdk/containerservice/azure-mgmt-containerservice/generated_samples/maintenance_configurations_create_update_maintenance_window.py index d1edd1c69892..4f01ee24e6da 100644 --- a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/maintenance_configurations_create_update_maintenance_window.py +++ b/sdk/containerservice/azure-mgmt-containerservice/generated_samples/maintenance_configurations_create_update_maintenance_window.py @@ -53,6 +53,6 @@ def main(): print(response) -# x-ms-original-file: 2026-03-02-preview/MaintenanceConfigurationsCreate_Update_MaintenanceWindow.json +# x-ms-original-file: 2026-04-01/MaintenanceConfigurationsCreate_Update_MaintenanceWindow.json if __name__ == "__main__": main() diff --git a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/maintenance_configurations_delete_maintenance_window.py b/sdk/containerservice/azure-mgmt-containerservice/generated_samples/maintenance_configurations_delete_maintenance_window.py index b9e8764fd2a3..162efdbc96cb 100644 --- a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/maintenance_configurations_delete_maintenance_window.py +++ b/sdk/containerservice/azure-mgmt-containerservice/generated_samples/maintenance_configurations_delete_maintenance_window.py @@ -37,6 +37,6 @@ def main(): ) -# x-ms-original-file: 2026-03-02-preview/MaintenanceConfigurationsDelete_MaintenanceWindow.json +# x-ms-original-file: 2026-04-01/MaintenanceConfigurationsDelete_MaintenanceWindow.json if __name__ == "__main__": main() diff --git a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/maintenance_configurations_get_maintenance_window.py b/sdk/containerservice/azure-mgmt-containerservice/generated_samples/maintenance_configurations_get_maintenance_window.py index 9cf524e29fbc..589c24a8e8eb 100644 --- a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/maintenance_configurations_get_maintenance_window.py +++ b/sdk/containerservice/azure-mgmt-containerservice/generated_samples/maintenance_configurations_get_maintenance_window.py @@ -38,6 +38,6 @@ def main(): print(response) -# x-ms-original-file: 2026-03-02-preview/MaintenanceConfigurationsGet_MaintenanceWindow.json +# x-ms-original-file: 2026-04-01/MaintenanceConfigurationsGet_MaintenanceWindow.json if __name__ == "__main__": main() diff --git a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/maintenance_configurations_list_maintenance_window.py b/sdk/containerservice/azure-mgmt-containerservice/generated_samples/maintenance_configurations_list_maintenance_window.py index 83356bf39adb..85e417910475 100644 --- a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/maintenance_configurations_list_maintenance_window.py +++ b/sdk/containerservice/azure-mgmt-containerservice/generated_samples/maintenance_configurations_list_maintenance_window.py @@ -38,6 +38,6 @@ def main(): print(item) -# x-ms-original-file: 2026-03-02-preview/MaintenanceConfigurationsList_MaintenanceWindow.json +# x-ms-original-file: 2026-04-01/MaintenanceConfigurationsList_MaintenanceWindow.json if __name__ == "__main__": main() diff --git a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/managed_cluster_snapshots_create.py b/sdk/containerservice/azure-mgmt-containerservice/generated_samples/managed_cluster_snapshots_create.py deleted file mode 100644 index a8b7f82c0ab9..000000000000 --- a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/managed_cluster_snapshots_create.py +++ /dev/null @@ -1,52 +0,0 @@ -# pylint: disable=line-too-long,useless-suppression -# coding=utf-8 -# -------------------------------------------------------------------------- -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT License. See License.txt in the project root for license information. -# Code generated by Microsoft (R) Python Code Generator. -# Changes may cause incorrect behavior and will be lost if the code is regenerated. -# -------------------------------------------------------------------------- - -from azure.identity import DefaultAzureCredential - -from azure.mgmt.containerservice import ContainerServiceClient - -""" -# PREREQUISITES - pip install azure-identity - pip install azure-mgmt-containerservice -# USAGE - python managed_cluster_snapshots_create.py - - Before run the sample, please set the values of the client ID, tenant ID and client secret - of the AAD application as environment variables: AZURE_CLIENT_ID, AZURE_TENANT_ID, - AZURE_CLIENT_SECRET. For more info about how to get the value, please see: - https://docs.microsoft.com/azure/active-directory/develop/howto-create-service-principal-portal -""" - - -def main(): - client = ContainerServiceClient( - credential=DefaultAzureCredential(), - subscription_id="SUBSCRIPTION_ID", - ) - - response = client.managed_cluster_snapshots.create_or_update( - resource_group_name="rg1", - resource_name="snapshot1", - parameters={ - "location": "westus", - "properties": { - "creationData": { - "sourceResourceId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/rg1/providers/Microsoft.ContainerService/managedClusters/cluster1" - } - }, - "tags": {"key1": "val1", "key2": "val2"}, - }, - ) - print(response) - - -# x-ms-original-file: 2026-03-02-preview/ManagedClusterSnapshotsCreate.json -if __name__ == "__main__": - main() diff --git a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/managed_cluster_snapshots_delete.py b/sdk/containerservice/azure-mgmt-containerservice/generated_samples/managed_cluster_snapshots_delete.py deleted file mode 100644 index 0ec30c47f660..000000000000 --- a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/managed_cluster_snapshots_delete.py +++ /dev/null @@ -1,41 +0,0 @@ -# coding=utf-8 -# -------------------------------------------------------------------------- -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT License. See License.txt in the project root for license information. -# Code generated by Microsoft (R) Python Code Generator. -# Changes may cause incorrect behavior and will be lost if the code is regenerated. -# -------------------------------------------------------------------------- - -from azure.identity import DefaultAzureCredential - -from azure.mgmt.containerservice import ContainerServiceClient - -""" -# PREREQUISITES - pip install azure-identity - pip install azure-mgmt-containerservice -# USAGE - python managed_cluster_snapshots_delete.py - - Before run the sample, please set the values of the client ID, tenant ID and client secret - of the AAD application as environment variables: AZURE_CLIENT_ID, AZURE_TENANT_ID, - AZURE_CLIENT_SECRET. For more info about how to get the value, please see: - https://docs.microsoft.com/azure/active-directory/develop/howto-create-service-principal-portal -""" - - -def main(): - client = ContainerServiceClient( - credential=DefaultAzureCredential(), - subscription_id="SUBSCRIPTION_ID", - ) - - client.managed_cluster_snapshots.delete( - resource_group_name="rg1", - resource_name="snapshot1", - ) - - -# x-ms-original-file: 2026-03-02-preview/ManagedClusterSnapshotsDelete.json -if __name__ == "__main__": - main() diff --git a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/managed_cluster_snapshots_get.py b/sdk/containerservice/azure-mgmt-containerservice/generated_samples/managed_cluster_snapshots_get.py deleted file mode 100644 index ae34ece70523..000000000000 --- a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/managed_cluster_snapshots_get.py +++ /dev/null @@ -1,42 +0,0 @@ -# coding=utf-8 -# -------------------------------------------------------------------------- -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT License. See License.txt in the project root for license information. -# Code generated by Microsoft (R) Python Code Generator. -# Changes may cause incorrect behavior and will be lost if the code is regenerated. -# -------------------------------------------------------------------------- - -from azure.identity import DefaultAzureCredential - -from azure.mgmt.containerservice import ContainerServiceClient - -""" -# PREREQUISITES - pip install azure-identity - pip install azure-mgmt-containerservice -# USAGE - python managed_cluster_snapshots_get.py - - Before run the sample, please set the values of the client ID, tenant ID and client secret - of the AAD application as environment variables: AZURE_CLIENT_ID, AZURE_TENANT_ID, - AZURE_CLIENT_SECRET. For more info about how to get the value, please see: - https://docs.microsoft.com/azure/active-directory/develop/howto-create-service-principal-portal -""" - - -def main(): - client = ContainerServiceClient( - credential=DefaultAzureCredential(), - subscription_id="SUBSCRIPTION_ID", - ) - - response = client.managed_cluster_snapshots.get( - resource_group_name="rg1", - resource_name="snapshot1", - ) - print(response) - - -# x-ms-original-file: 2026-03-02-preview/ManagedClusterSnapshotsGet.json -if __name__ == "__main__": - main() diff --git a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/managed_cluster_snapshots_list.py b/sdk/containerservice/azure-mgmt-containerservice/generated_samples/managed_cluster_snapshots_list.py deleted file mode 100644 index 3ad4e96239fd..000000000000 --- a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/managed_cluster_snapshots_list.py +++ /dev/null @@ -1,40 +0,0 @@ -# coding=utf-8 -# -------------------------------------------------------------------------- -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT License. See License.txt in the project root for license information. -# Code generated by Microsoft (R) Python Code Generator. -# Changes may cause incorrect behavior and will be lost if the code is regenerated. -# -------------------------------------------------------------------------- - -from azure.identity import DefaultAzureCredential - -from azure.mgmt.containerservice import ContainerServiceClient - -""" -# PREREQUISITES - pip install azure-identity - pip install azure-mgmt-containerservice -# USAGE - python managed_cluster_snapshots_list.py - - Before run the sample, please set the values of the client ID, tenant ID and client secret - of the AAD application as environment variables: AZURE_CLIENT_ID, AZURE_TENANT_ID, - AZURE_CLIENT_SECRET. For more info about how to get the value, please see: - https://docs.microsoft.com/azure/active-directory/develop/howto-create-service-principal-portal -""" - - -def main(): - client = ContainerServiceClient( - credential=DefaultAzureCredential(), - subscription_id="SUBSCRIPTION_ID", - ) - - response = client.managed_cluster_snapshots.list() - for item in response: - print(item) - - -# x-ms-original-file: 2026-03-02-preview/ManagedClusterSnapshotsList.json -if __name__ == "__main__": - main() diff --git a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/managed_cluster_snapshots_list_by_resource_group.py b/sdk/containerservice/azure-mgmt-containerservice/generated_samples/managed_cluster_snapshots_list_by_resource_group.py deleted file mode 100644 index 57b10a29380c..000000000000 --- a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/managed_cluster_snapshots_list_by_resource_group.py +++ /dev/null @@ -1,42 +0,0 @@ -# coding=utf-8 -# -------------------------------------------------------------------------- -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT License. See License.txt in the project root for license information. -# Code generated by Microsoft (R) Python Code Generator. -# Changes may cause incorrect behavior and will be lost if the code is regenerated. -# -------------------------------------------------------------------------- - -from azure.identity import DefaultAzureCredential - -from azure.mgmt.containerservice import ContainerServiceClient - -""" -# PREREQUISITES - pip install azure-identity - pip install azure-mgmt-containerservice -# USAGE - python managed_cluster_snapshots_list_by_resource_group.py - - Before run the sample, please set the values of the client ID, tenant ID and client secret - of the AAD application as environment variables: AZURE_CLIENT_ID, AZURE_TENANT_ID, - AZURE_CLIENT_SECRET. For more info about how to get the value, please see: - https://docs.microsoft.com/azure/active-directory/develop/howto-create-service-principal-portal -""" - - -def main(): - client = ContainerServiceClient( - credential=DefaultAzureCredential(), - subscription_id="SUBSCRIPTION_ID", - ) - - response = client.managed_cluster_snapshots.list_by_resource_group( - resource_group_name="rg1", - ) - for item in response: - print(item) - - -# x-ms-original-file: 2026-03-02-preview/ManagedClusterSnapshotsListByResourceGroup.json -if __name__ == "__main__": - main() diff --git a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/managed_cluster_snapshots_update_tags.py b/sdk/containerservice/azure-mgmt-containerservice/generated_samples/managed_cluster_snapshots_update_tags.py deleted file mode 100644 index be326729281e..000000000000 --- a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/managed_cluster_snapshots_update_tags.py +++ /dev/null @@ -1,43 +0,0 @@ -# coding=utf-8 -# -------------------------------------------------------------------------- -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT License. See License.txt in the project root for license information. -# Code generated by Microsoft (R) Python Code Generator. -# Changes may cause incorrect behavior and will be lost if the code is regenerated. -# -------------------------------------------------------------------------- - -from azure.identity import DefaultAzureCredential - -from azure.mgmt.containerservice import ContainerServiceClient - -""" -# PREREQUISITES - pip install azure-identity - pip install azure-mgmt-containerservice -# USAGE - python managed_cluster_snapshots_update_tags.py - - Before run the sample, please set the values of the client ID, tenant ID and client secret - of the AAD application as environment variables: AZURE_CLIENT_ID, AZURE_TENANT_ID, - AZURE_CLIENT_SECRET. For more info about how to get the value, please see: - https://docs.microsoft.com/azure/active-directory/develop/howto-create-service-principal-portal -""" - - -def main(): - client = ContainerServiceClient( - credential=DefaultAzureCredential(), - subscription_id="SUBSCRIPTION_ID", - ) - - response = client.managed_cluster_snapshots.update_tags( - resource_group_name="rg1", - resource_name="snapshot1", - parameters={"tags": {"key2": "new-val2", "key3": "val3"}}, - ) - print(response) - - -# x-ms-original-file: 2026-03-02-preview/ManagedClusterSnapshotsUpdateTags.json -if __name__ == "__main__": - main() diff --git a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/managed_clusters_abort_operation.py b/sdk/containerservice/azure-mgmt-containerservice/generated_samples/managed_clusters_abort_operation.py index 989d1f696ce0..cf2f2aae64ce 100644 --- a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/managed_clusters_abort_operation.py +++ b/sdk/containerservice/azure-mgmt-containerservice/generated_samples/managed_clusters_abort_operation.py @@ -36,6 +36,6 @@ def main(): ).result() -# x-ms-original-file: 2026-03-02-preview/ManagedClustersAbortOperation.json +# x-ms-original-file: 2026-04-01/ManagedClustersAbortOperation.json if __name__ == "__main__": main() diff --git a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/managed_clusters_create_azure_keyvault_secrets_provider.py b/sdk/containerservice/azure-mgmt-containerservice/generated_samples/managed_clusters_create_azure_keyvault_secrets_provider.py index 0c1971c84bb9..319487969f75 100644 --- a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/managed_clusters_create_azure_keyvault_secrets_provider.py +++ b/sdk/containerservice/azure-mgmt-containerservice/generated_samples/managed_clusters_create_azure_keyvault_secrets_provider.py @@ -75,6 +75,6 @@ def main(): print(response) -# x-ms-original-file: 2026-03-02-preview/ManagedClustersCreate_AzureKeyvaultSecretsProvider.json +# x-ms-original-file: 2026-04-01/ManagedClustersCreate_AzureKeyvaultSecretsProvider.json if __name__ == "__main__": main() diff --git a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/managed_clusters_create_azure_service_mesh.py b/sdk/containerservice/azure-mgmt-containerservice/generated_samples/managed_clusters_create_azure_service_mesh.py index 2b1e3daebae4..4851eb5a2811 100644 --- a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/managed_clusters_create_azure_service_mesh.py +++ b/sdk/containerservice/azure-mgmt-containerservice/generated_samples/managed_clusters_create_azure_service_mesh.py @@ -77,7 +77,13 @@ def main(): } }, "components": { - "egressGateways": [{"enabled": True, "name": "istioegress1"}], + "egressGateways": [ + { + "enabled": True, + "gatewayConfigurationName": "test-gateway-configuration", + "name": "test-istio-egress", + } + ], "ingressGateways": [{"enabled": True, "mode": "Internal"}], }, }, @@ -93,6 +99,6 @@ def main(): print(response) -# x-ms-original-file: 2026-03-02-preview/ManagedClustersCreate_AzureServiceMesh.json +# x-ms-original-file: 2026-04-01/ManagedClustersCreate_AzureServiceMesh.json if __name__ == "__main__": main() diff --git a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/managed_clusters_create_control_plane_scaling_profile.py b/sdk/containerservice/azure-mgmt-containerservice/generated_samples/managed_clusters_create_control_plane_scaling_profile.py deleted file mode 100644 index b6b67f653e9a..000000000000 --- a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/managed_clusters_create_control_plane_scaling_profile.py +++ /dev/null @@ -1,71 +0,0 @@ -# coding=utf-8 -# -------------------------------------------------------------------------- -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT License. See License.txt in the project root for license information. -# Code generated by Microsoft (R) Python Code Generator. -# Changes may cause incorrect behavior and will be lost if the code is regenerated. -# -------------------------------------------------------------------------- - -from azure.identity import DefaultAzureCredential - -from azure.mgmt.containerservice import ContainerServiceClient - -""" -# PREREQUISITES - pip install azure-identity - pip install azure-mgmt-containerservice -# USAGE - python managed_clusters_create_control_plane_scaling_profile.py - - Before run the sample, please set the values of the client ID, tenant ID and client secret - of the AAD application as environment variables: AZURE_CLIENT_ID, AZURE_TENANT_ID, - AZURE_CLIENT_SECRET. For more info about how to get the value, please see: - https://docs.microsoft.com/azure/active-directory/develop/howto-create-service-principal-portal -""" - - -def main(): - client = ContainerServiceClient( - credential=DefaultAzureCredential(), - subscription_id="SUBSCRIPTION_ID", - ) - - response = client.managed_clusters.begin_create_or_update( - resource_group_name="rg1", - resource_name="clustername1", - parameters={ - "location": "location1", - "properties": { - "agentPoolProfiles": [ - { - "count": 3, - "enableNodePublicIP": True, - "mode": "System", - "name": "nodepool1", - "osType": "Linux", - "type": "VirtualMachineScaleSets", - "vmSize": "Standard_DS2_v2", - } - ], - "controlPlaneScalingProfile": {"scalingSize": "H4"}, - "dnsPrefix": "dnsprefix1", - "kubernetesVersion": "1.33.0", - "linuxProfile": {"adminUsername": "azureuser", "ssh": {"publicKeys": [{"keyData": "keydata"}]}}, - "networkProfile": { - "loadBalancerProfile": {"managedOutboundIPs": {"count": 2}}, - "loadBalancerSku": "standard", - "networkPlugin": "azure", - "networkPluginMode": "overlay", - "outboundType": "loadBalancer", - }, - }, - "sku": {"name": "Base", "tier": "Standard"}, - "tags": {"archv2": "", "tier": "production"}, - }, - ).result() - print(response) - - -# x-ms-original-file: 2026-03-02-preview/ManagedClustersCreate_ControlPlaneScalingProfile.json -if __name__ == "__main__": - main() diff --git a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/managed_clusters_associate_crg.py b/sdk/containerservice/azure-mgmt-containerservice/generated_samples/managed_clusters_create_crg.py similarity index 96% rename from sdk/containerservice/azure-mgmt-containerservice/generated_samples/managed_clusters_associate_crg.py rename to sdk/containerservice/azure-mgmt-containerservice/generated_samples/managed_clusters_create_crg.py index 1c0f563c44ba..2a3e967157fc 100644 --- a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/managed_clusters_associate_crg.py +++ b/sdk/containerservice/azure-mgmt-containerservice/generated_samples/managed_clusters_create_crg.py @@ -16,7 +16,7 @@ pip install azure-identity pip install azure-mgmt-containerservice # USAGE - python managed_clusters_associate_crg.py + python managed_clusters_create_crg.py Before run the sample, please set the values of the client ID, tenant ID and client secret of the AAD application as environment variables: AZURE_CLIENT_ID, AZURE_TENANT_ID, @@ -71,6 +71,6 @@ def main(): print(response) -# x-ms-original-file: 2026-03-02-preview/ManagedClustersAssociate_CRG.json +# x-ms-original-file: 2026-04-01/ManagedClustersCreate_CRG.json if __name__ == "__main__": main() diff --git a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/managed_clusters_create_custom_ca_trust_certificates.py b/sdk/containerservice/azure-mgmt-containerservice/generated_samples/managed_clusters_create_custom_ca_trust_certificates.py index 7b4f534f5eb4..d80d7dc108e1 100644 --- a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/managed_clusters_create_custom_ca_trust_certificates.py +++ b/sdk/containerservice/azure-mgmt-containerservice/generated_samples/managed_clusters_create_custom_ca_trust_certificates.py @@ -73,6 +73,6 @@ def main(): print(response) -# x-ms-original-file: 2026-03-02-preview/ManagedClustersCreate_CustomCATrustCertificates.json +# x-ms-original-file: 2026-04-01/ManagedClustersCreate_CustomCATrustCertificates.json if __name__ == "__main__": main() diff --git a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/managed_clusters_create_dedicated_host_group.py b/sdk/containerservice/azure-mgmt-containerservice/generated_samples/managed_clusters_create_dedicated_host_group.py index 4108eb166a37..4b018fb0f9d9 100644 --- a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/managed_clusters_create_dedicated_host_group.py +++ b/sdk/containerservice/azure-mgmt-containerservice/generated_samples/managed_clusters_create_dedicated_host_group.py @@ -70,6 +70,6 @@ def main(): print(response) -# x-ms-original-file: 2026-03-02-preview/ManagedClustersCreate_DedicatedHostGroup.json +# x-ms-original-file: 2026-04-01/ManagedClustersCreate_DedicatedHostGroup.json if __name__ == "__main__": main() diff --git a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/managed_clusters_create_disable_run_command.py b/sdk/containerservice/azure-mgmt-containerservice/generated_samples/managed_clusters_create_disable_run_command.py index 29f1f773386b..72001c51a58f 100644 --- a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/managed_clusters_create_disable_run_command.py +++ b/sdk/containerservice/azure-mgmt-containerservice/generated_samples/managed_clusters_create_disable_run_command.py @@ -70,6 +70,6 @@ def main(): print(response) -# x-ms-original-file: 2026-03-02-preview/ManagedClustersCreate_DisableRunCommand.json +# x-ms-original-file: 2026-04-01/ManagedClustersCreate_DisableRunCommand.json if __name__ == "__main__": main() diff --git a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/managed_clusters_create_dual_stack_networking.py b/sdk/containerservice/azure-mgmt-containerservice/generated_samples/managed_clusters_create_dual_stack_networking.py index b5828efd2c52..6ea5c8aa6b42 100644 --- a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/managed_clusters_create_dual_stack_networking.py +++ b/sdk/containerservice/azure-mgmt-containerservice/generated_samples/managed_clusters_create_dual_stack_networking.py @@ -87,6 +87,6 @@ def main(): print(response) -# x-ms-original-file: 2026-03-02-preview/ManagedClustersCreate_DualStackNetworking.json +# x-ms-original-file: 2026-04-01/ManagedClustersCreate_DualStackNetworking.json if __name__ == "__main__": main() diff --git a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/managed_clusters_create_enable_ai_toolchain_operator.py b/sdk/containerservice/azure-mgmt-containerservice/generated_samples/managed_clusters_create_enable_ai_toolchain_operator.py deleted file mode 100644 index 623035ff91bd..000000000000 --- a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/managed_clusters_create_enable_ai_toolchain_operator.py +++ /dev/null @@ -1,75 +0,0 @@ -# coding=utf-8 -# -------------------------------------------------------------------------- -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT License. See License.txt in the project root for license information. -# Code generated by Microsoft (R) Python Code Generator. -# Changes may cause incorrect behavior and will be lost if the code is regenerated. -# -------------------------------------------------------------------------- - -from azure.identity import DefaultAzureCredential - -from azure.mgmt.containerservice import ContainerServiceClient - -""" -# PREREQUISITES - pip install azure-identity - pip install azure-mgmt-containerservice -# USAGE - python managed_clusters_create_enable_ai_toolchain_operator.py - - Before run the sample, please set the values of the client ID, tenant ID and client secret - of the AAD application as environment variables: AZURE_CLIENT_ID, AZURE_TENANT_ID, - AZURE_CLIENT_SECRET. For more info about how to get the value, please see: - https://docs.microsoft.com/azure/active-directory/develop/howto-create-service-principal-portal -""" - - -def main(): - client = ContainerServiceClient( - credential=DefaultAzureCredential(), - subscription_id="SUBSCRIPTION_ID", - ) - - response = client.managed_clusters.begin_create_or_update( - resource_group_name="rg1", - resource_name="clustername1", - parameters={ - "location": "location1", - "properties": { - "addonProfiles": {}, - "agentPoolProfiles": [ - { - "count": 3, - "enableNodePublicIP": True, - "mode": "System", - "name": "nodepool1", - "osType": "Linux", - "type": "VirtualMachineScaleSets", - "vmSize": "Standard_DS2_v2", - } - ], - "aiToolchainOperatorProfile": {"enabled": True}, - "dnsPrefix": "dnsprefix1", - "enableRBAC": True, - "kubernetesVersion": "", - "linuxProfile": {"adminUsername": "azureuser", "ssh": {"publicKeys": [{"keyData": "keydata"}]}}, - "networkProfile": { - "loadBalancerProfile": {"managedOutboundIPs": {"count": 2}}, - "loadBalancerSku": "standard", - "networkDataplane": "cilium", - "networkPlugin": "azure", - "networkPluginMode": "overlay", - "outboundType": "loadBalancer", - }, - "servicePrincipalProfile": {"clientId": "clientid", "secret": "secret"}, - }, - "sku": {"name": "Basic", "tier": "Free"}, - "tags": {"archv2": "", "tier": "production"}, - }, - ).result() - print(response) - - -# x-ms-original-file: 2026-03-02-preview/ManagedClustersCreate_EnableAIToolchainOperator.json -if __name__ == "__main__": - main() diff --git a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/managed_clusters_create_enable_encryption_at_host.py b/sdk/containerservice/azure-mgmt-containerservice/generated_samples/managed_clusters_create_enable_encryption_at_host.py index f4c5d5686621..52279f1f5e05 100644 --- a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/managed_clusters_create_enable_encryption_at_host.py +++ b/sdk/containerservice/azure-mgmt-containerservice/generated_samples/managed_clusters_create_enable_encryption_at_host.py @@ -71,6 +71,6 @@ def main(): print(response) -# x-ms-original-file: 2026-03-02-preview/ManagedClustersCreate_EnableEncryptionAtHost.json +# x-ms-original-file: 2026-04-01/ManagedClustersCreate_EnableEncryptionAtHost.json if __name__ == "__main__": main() diff --git a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/managed_clusters_create_enable_ultra_ssd.py b/sdk/containerservice/azure-mgmt-containerservice/generated_samples/managed_clusters_create_enable_ultra_ssd.py index 8c4a45edeacf..9f7578347c8f 100644 --- a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/managed_clusters_create_enable_ultra_ssd.py +++ b/sdk/containerservice/azure-mgmt-containerservice/generated_samples/managed_clusters_create_enable_ultra_ssd.py @@ -71,6 +71,6 @@ def main(): print(response) -# x-ms-original-file: 2026-03-02-preview/ManagedClustersCreate_EnableUltraSSD.json +# x-ms-original-file: 2026-04-01/ManagedClustersCreate_EnableUltraSSD.json if __name__ == "__main__": main() diff --git a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/managed_clusters_create_enabled_fips.py b/sdk/containerservice/azure-mgmt-containerservice/generated_samples/managed_clusters_create_enabled_fips.py index 3e910447659b..5ca915c4bc17 100644 --- a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/managed_clusters_create_enabled_fips.py +++ b/sdk/containerservice/azure-mgmt-containerservice/generated_samples/managed_clusters_create_enabled_fips.py @@ -71,6 +71,6 @@ def main(): print(response) -# x-ms-original-file: 2026-03-02-preview/ManagedClustersCreate_EnabledFIPS.json +# x-ms-original-file: 2026-04-01/ManagedClustersCreate_EnabledFIPS.json if __name__ == "__main__": main() diff --git a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/managed_clusters_create_gpumig.py b/sdk/containerservice/azure-mgmt-containerservice/generated_samples/managed_clusters_create_gpumig.py index 734f6d697484..2b1f4e31dd2e 100644 --- a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/managed_clusters_create_gpumig.py +++ b/sdk/containerservice/azure-mgmt-containerservice/generated_samples/managed_clusters_create_gpumig.py @@ -77,6 +77,6 @@ def main(): print(response) -# x-ms-original-file: 2026-03-02-preview/ManagedClustersCreate_GPUMIG.json +# x-ms-original-file: 2026-04-01/ManagedClustersCreate_GPUMIG.json if __name__ == "__main__": main() diff --git a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/managed_clusters_create_httpproxy.py b/sdk/containerservice/azure-mgmt-containerservice/generated_samples/managed_clusters_create_httpproxy.py index db4161a11cff..4ccfec207a97 100644 --- a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/managed_clusters_create_httpproxy.py +++ b/sdk/containerservice/azure-mgmt-containerservice/generated_samples/managed_clusters_create_httpproxy.py @@ -76,6 +76,6 @@ def main(): print(response) -# x-ms-original-file: 2026-03-02-preview/ManagedClustersCreate_HTTPProxy.json +# x-ms-original-file: 2026-04-01/ManagedClustersCreate_HTTPProxy.json if __name__ == "__main__": main() diff --git a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/managed_clusters_create_ingress_profile_application_load_balancer.py b/sdk/containerservice/azure-mgmt-containerservice/generated_samples/managed_clusters_create_ingress_profile_application_load_balancer.py deleted file mode 100644 index 0219131730cf..000000000000 --- a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/managed_clusters_create_ingress_profile_application_load_balancer.py +++ /dev/null @@ -1,69 +0,0 @@ -# coding=utf-8 -# -------------------------------------------------------------------------- -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT License. See License.txt in the project root for license information. -# Code generated by Microsoft (R) Python Code Generator. -# Changes may cause incorrect behavior and will be lost if the code is regenerated. -# -------------------------------------------------------------------------- - -from azure.identity import DefaultAzureCredential - -from azure.mgmt.containerservice import ContainerServiceClient - -""" -# PREREQUISITES - pip install azure-identity - pip install azure-mgmt-containerservice -# USAGE - python managed_clusters_create_ingress_profile_application_load_balancer.py - - Before run the sample, please set the values of the client ID, tenant ID and client secret - of the AAD application as environment variables: AZURE_CLIENT_ID, AZURE_TENANT_ID, - AZURE_CLIENT_SECRET. For more info about how to get the value, please see: - https://docs.microsoft.com/azure/active-directory/develop/howto-create-service-principal-portal -""" - - -def main(): - client = ContainerServiceClient( - credential=DefaultAzureCredential(), - subscription_id="SUBSCRIPTION_ID", - ) - - response = client.managed_clusters.begin_create_or_update( - resource_group_name="rg1", - resource_name="clustername1", - parameters={ - "location": "location1", - "properties": { - "agentPoolProfiles": [ - { - "count": 3, - "enableNodePublicIP": True, - "mode": "System", - "name": "nodepool1", - "osType": "Linux", - "type": "VirtualMachineScaleSets", - "vmSize": "Standard_DS2_v2", - } - ], - "dnsPrefix": "dnsprefix1", - "ingressProfile": {"applicationLoadBalancer": {"enabled": True}}, - "kubernetesVersion": "", - "linuxProfile": {"adminUsername": "azureuser", "ssh": {"publicKeys": [{"keyData": "keydata"}]}}, - "networkProfile": { - "loadBalancerProfile": {"managedOutboundIPs": {"count": 2}}, - "loadBalancerSku": "standard", - "outboundType": "loadBalancer", - }, - }, - "sku": {"name": "Basic", "tier": "Free"}, - "tags": {"archv2": "", "tier": "production"}, - }, - ).result() - print(response) - - -# x-ms-original-file: 2026-03-02-preview/ManagedClustersCreate_IngressProfile_ApplicationLoadBalancer.json -if __name__ == "__main__": - main() diff --git a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/managed_clusters_create_ingress_profile_web_app_routing.py b/sdk/containerservice/azure-mgmt-containerservice/generated_samples/managed_clusters_create_ingress_profile_web_app_routing.py index 473cec376abb..128ea4f764cf 100644 --- a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/managed_clusters_create_ingress_profile_web_app_routing.py +++ b/sdk/containerservice/azure-mgmt-containerservice/generated_samples/managed_clusters_create_ingress_profile_web_app_routing.py @@ -72,6 +72,6 @@ def main(): print(response) -# x-ms-original-file: 2026-03-02-preview/ManagedClustersCreate_IngressProfile_WebAppRouting.json +# x-ms-original-file: 2026-04-01/ManagedClustersCreate_IngressProfile_WebAppRouting.json if __name__ == "__main__": main() diff --git a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/managed_clusters_create_managed_nat_gateway.py b/sdk/containerservice/azure-mgmt-containerservice/generated_samples/managed_clusters_create_managed_nat_gateway.py index cdd4cd266314..99b51534c063 100644 --- a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/managed_clusters_create_managed_nat_gateway.py +++ b/sdk/containerservice/azure-mgmt-containerservice/generated_samples/managed_clusters_create_managed_nat_gateway.py @@ -70,6 +70,6 @@ def main(): print(response) -# x-ms-original-file: 2026-03-02-preview/ManagedClustersCreate_ManagedNATGateway.json +# x-ms-original-file: 2026-04-01/ManagedClustersCreate_ManagedNATGateway.json if __name__ == "__main__": main() diff --git a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/managed_clusters_create_mcsnapshot.py b/sdk/containerservice/azure-mgmt-containerservice/generated_samples/managed_clusters_create_mcsnapshot.py deleted file mode 100644 index 9f5d5d61a559..000000000000 --- a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/managed_clusters_create_mcsnapshot.py +++ /dev/null @@ -1,69 +0,0 @@ -# pylint: disable=line-too-long,useless-suppression -# coding=utf-8 -# -------------------------------------------------------------------------- -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT License. See License.txt in the project root for license information. -# Code generated by Microsoft (R) Python Code Generator. -# Changes may cause incorrect behavior and will be lost if the code is regenerated. -# -------------------------------------------------------------------------- - -from azure.identity import DefaultAzureCredential - -from azure.mgmt.containerservice import ContainerServiceClient - -""" -# PREREQUISITES - pip install azure-identity - pip install azure-mgmt-containerservice -# USAGE - python managed_clusters_create_mcsnapshot.py - - Before run the sample, please set the values of the client ID, tenant ID and client secret - of the AAD application as environment variables: AZURE_CLIENT_ID, AZURE_TENANT_ID, - AZURE_CLIENT_SECRET. For more info about how to get the value, please see: - https://docs.microsoft.com/azure/active-directory/develop/howto-create-service-principal-portal -""" - - -def main(): - client = ContainerServiceClient( - credential=DefaultAzureCredential(), - subscription_id="SUBSCRIPTION_ID", - ) - - response = client.managed_clusters.begin_create_or_update( - resource_group_name="rg1", - resource_name="clustername1", - parameters={ - "location": "location1", - "properties": { - "agentPoolProfiles": [ - { - "count": 3, - "enableFIPS": True, - "enableNodePublicIP": True, - "mode": "System", - "name": "nodepool1", - "osType": "Linux", - "type": "VirtualMachineScaleSets", - "vmSize": "Standard_DS2_v2", - } - ], - "creationData": { - "sourceResourceId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/rg1/providers/Microsoft.ContainerService/managedclustersnapshots/snapshot1" - }, - "dnsPrefix": "dnsprefix1", - "kubernetesVersion": "", - "linuxProfile": {"adminUsername": "azureuser", "ssh": {"publicKeys": [{"keyData": "keydata"}]}}, - "servicePrincipalProfile": {"clientId": "clientid", "secret": "secret"}, - }, - "sku": {"name": "Basic", "tier": "Free"}, - "tags": {"archv2": "", "tier": "production"}, - }, - ).result() - print(response) - - -# x-ms-original-file: 2026-03-02-preview/ManagedClustersCreate_MCSnapshot.json -if __name__ == "__main__": - main() diff --git a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/managed_clusters_create_node_auto_provisioning.py b/sdk/containerservice/azure-mgmt-containerservice/generated_samples/managed_clusters_create_node_auto_provisioning.py deleted file mode 100644 index 311a2c256130..000000000000 --- a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/managed_clusters_create_node_auto_provisioning.py +++ /dev/null @@ -1,74 +0,0 @@ -# coding=utf-8 -# -------------------------------------------------------------------------- -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT License. See License.txt in the project root for license information. -# Code generated by Microsoft (R) Python Code Generator. -# Changes may cause incorrect behavior and will be lost if the code is regenerated. -# -------------------------------------------------------------------------- - -from azure.identity import DefaultAzureCredential - -from azure.mgmt.containerservice import ContainerServiceClient - -""" -# PREREQUISITES - pip install azure-identity - pip install azure-mgmt-containerservice -# USAGE - python managed_clusters_create_node_auto_provisioning.py - - Before run the sample, please set the values of the client ID, tenant ID and client secret - of the AAD application as environment variables: AZURE_CLIENT_ID, AZURE_TENANT_ID, - AZURE_CLIENT_SECRET. For more info about how to get the value, please see: - https://docs.microsoft.com/azure/active-directory/develop/howto-create-service-principal-portal -""" - - -def main(): - client = ContainerServiceClient( - credential=DefaultAzureCredential(), - subscription_id="SUBSCRIPTION_ID", - ) - - response = client.managed_clusters.begin_create_or_update( - resource_group_name="rg1", - resource_name="clustername1", - parameters={ - "location": "location1", - "properties": { - "addonProfiles": {}, - "agentPoolProfiles": [ - { - "count": 3, - "enableNodePublicIP": True, - "mode": "System", - "name": "nodepool1", - "osType": "Linux", - "type": "VirtualMachineScaleSets", - "vmSize": "Standard_DS2_v2", - } - ], - "dnsPrefix": "dnsprefix1", - "enableRBAC": True, - "kubernetesVersion": "", - "linuxProfile": {"adminUsername": "azureuser", "ssh": {"publicKeys": [{"keyData": "keydata"}]}}, - "networkProfile": { - "loadBalancerProfile": {"managedOutboundIPs": {"count": 2}}, - "loadBalancerSku": "standard", - "networkDataplane": "cilium", - "networkPlugin": "azure", - "networkPluginMode": "overlay", - "outboundType": "loadBalancer", - }, - "servicePrincipalProfile": {"clientId": "clientid", "secret": "secret"}, - }, - "sku": {"name": "Basic", "tier": "Free"}, - "tags": {"archv2": "", "tier": "production"}, - }, - ).result() - print(response) - - -# x-ms-original-file: 2026-03-02-preview/ManagedClustersCreate_NodeAutoProvisioning.json -if __name__ == "__main__": - main() diff --git a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/managed_clusters_create_node_public_ip_prefix.py b/sdk/containerservice/azure-mgmt-containerservice/generated_samples/managed_clusters_create_node_public_ip_prefix.py index e5358f632e6d..d8b49fd4e1c4 100644 --- a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/managed_clusters_create_node_public_ip_prefix.py +++ b/sdk/containerservice/azure-mgmt-containerservice/generated_samples/managed_clusters_create_node_public_ip_prefix.py @@ -71,6 +71,6 @@ def main(): print(response) -# x-ms-original-file: 2026-03-02-preview/ManagedClustersCreate_NodePublicIPPrefix.json +# x-ms-original-file: 2026-04-01/ManagedClustersCreate_NodePublicIPPrefix.json if __name__ == "__main__": main() diff --git a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/managed_clusters_create_ossku.py b/sdk/containerservice/azure-mgmt-containerservice/generated_samples/managed_clusters_create_ossku.py index e2c95c5e6911..fb9874d708cd 100644 --- a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/managed_clusters_create_ossku.py +++ b/sdk/containerservice/azure-mgmt-containerservice/generated_samples/managed_clusters_create_ossku.py @@ -77,6 +77,6 @@ def main(): print(response) -# x-ms-original-file: 2026-03-02-preview/ManagedClustersCreate_OSSKU.json +# x-ms-original-file: 2026-04-01/ManagedClustersCreate_OSSKU.json if __name__ == "__main__": main() diff --git a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/managed_clusters_create_pod_identity.py b/sdk/containerservice/azure-mgmt-containerservice/generated_samples/managed_clusters_create_pod_identity.py index 4b21168519b2..f97fff9f20ec 100644 --- a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/managed_clusters_create_pod_identity.py +++ b/sdk/containerservice/azure-mgmt-containerservice/generated_samples/managed_clusters_create_pod_identity.py @@ -71,6 +71,6 @@ def main(): print(response) -# x-ms-original-file: 2026-03-02-preview/ManagedClustersCreate_PodIdentity.json +# x-ms-original-file: 2026-04-01/ManagedClustersCreate_PodIdentity.json if __name__ == "__main__": main() diff --git a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/managed_clusters_create_ppg.py b/sdk/containerservice/azure-mgmt-containerservice/generated_samples/managed_clusters_create_ppg.py index e55633aec394..6d7d41c22935 100644 --- a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/managed_clusters_create_ppg.py +++ b/sdk/containerservice/azure-mgmt-containerservice/generated_samples/managed_clusters_create_ppg.py @@ -71,6 +71,6 @@ def main(): print(response) -# x-ms-original-file: 2026-03-02-preview/ManagedClustersCreate_PPG.json +# x-ms-original-file: 2026-04-01/ManagedClustersCreate_PPG.json if __name__ == "__main__": main() diff --git a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/managed_clusters_create_premium.py b/sdk/containerservice/azure-mgmt-containerservice/generated_samples/managed_clusters_create_premium.py index 72064e30278a..09a09c0c85f4 100644 --- a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/managed_clusters_create_premium.py +++ b/sdk/containerservice/azure-mgmt-containerservice/generated_samples/managed_clusters_create_premium.py @@ -71,6 +71,6 @@ def main(): print(response) -# x-ms-original-file: 2026-03-02-preview/ManagedClustersCreate_Premium.json +# x-ms-original-file: 2026-04-01/ManagedClustersCreate_Premium.json if __name__ == "__main__": main() diff --git a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/managed_clusters_create_private_cluster_fqdn_subdomain.py b/sdk/containerservice/azure-mgmt-containerservice/generated_samples/managed_clusters_create_private_cluster_fqdn_subdomain.py index 54e7b3a74c90..520dfabc82c2 100644 --- a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/managed_clusters_create_private_cluster_fqdn_subdomain.py +++ b/sdk/containerservice/azure-mgmt-containerservice/generated_samples/managed_clusters_create_private_cluster_fqdn_subdomain.py @@ -74,6 +74,6 @@ def main(): print(response) -# x-ms-original-file: 2026-03-02-preview/ManagedClustersCreate_PrivateClusterFQDNSubdomain.json +# x-ms-original-file: 2026-04-01/ManagedClustersCreate_PrivateClusterFQDNSubdomain.json if __name__ == "__main__": main() diff --git a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/managed_clusters_create_private_cluster_public_fqdn.py b/sdk/containerservice/azure-mgmt-containerservice/generated_samples/managed_clusters_create_private_cluster_public_fqdn.py index 487f050d4837..56f98abf2aa9 100644 --- a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/managed_clusters_create_private_cluster_public_fqdn.py +++ b/sdk/containerservice/azure-mgmt-containerservice/generated_samples/managed_clusters_create_private_cluster_public_fqdn.py @@ -70,6 +70,6 @@ def main(): print(response) -# x-ms-original-file: 2026-03-02-preview/ManagedClustersCreate_PrivateClusterPublicFQDN.json +# x-ms-original-file: 2026-04-01/ManagedClustersCreate_PrivateClusterPublicFQDN.json if __name__ == "__main__": main() diff --git a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/managed_clusters_create_security_profile.py b/sdk/containerservice/azure-mgmt-containerservice/generated_samples/managed_clusters_create_security_profile.py index 092870c644a6..9964dad61869 100644 --- a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/managed_clusters_create_security_profile.py +++ b/sdk/containerservice/azure-mgmt-containerservice/generated_samples/managed_clusters_create_security_profile.py @@ -59,21 +59,9 @@ def main(): "securityProfile": { "defender": { "logAnalyticsWorkspaceResourceId": "/subscriptions/SUB_ID/resourceGroups/RG_NAME/providers/microsoft.operationalinsights/workspaces/WORKSPACE_NAME", - "securityGating": { - "allowSecretAccess": True, - "enabled": True, - "identities": [ - { - "azureContainerRegistry": "registry1", - "identity": { - "clientId": "client1", - "resourceId": "/subscriptions/SUB_ID/resourceGroups/RG_NAME/providers/Microsoft.ManagedIdentity/userAssignedIdentities/IDENTITY_NAME", - }, - } - ], - }, "securityMonitoring": {"enabled": True}, - } + }, + "workloadIdentity": {"enabled": True}, }, }, "sku": {"name": "Basic", "tier": "Free"}, @@ -83,6 +71,6 @@ def main(): print(response) -# x-ms-original-file: 2026-03-02-preview/ManagedClustersCreate_SecurityProfile.json +# x-ms-original-file: 2026-04-01/ManagedClustersCreate_SecurityProfile.json if __name__ == "__main__": main() diff --git a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/managed_clusters_create_snapshot.py b/sdk/containerservice/azure-mgmt-containerservice/generated_samples/managed_clusters_create_snapshot.py index 6b812a22357e..09b750743713 100644 --- a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/managed_clusters_create_snapshot.py +++ b/sdk/containerservice/azure-mgmt-containerservice/generated_samples/managed_clusters_create_snapshot.py @@ -74,6 +74,6 @@ def main(): print(response) -# x-ms-original-file: 2026-03-02-preview/ManagedClustersCreate_Snapshot.json +# x-ms-original-file: 2026-04-01/ManagedClustersCreate_Snapshot.json if __name__ == "__main__": main() diff --git a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/managed_clusters_create_update.py b/sdk/containerservice/azure-mgmt-containerservice/generated_samples/managed_clusters_create_update.py index fc09edd04a9c..79e060d23d00 100644 --- a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/managed_clusters_create_update.py +++ b/sdk/containerservice/azure-mgmt-containerservice/generated_samples/managed_clusters_create_update.py @@ -77,7 +77,7 @@ def main(): "outboundType": "loadBalancer", }, "servicePrincipalProfile": {"clientId": "clientid", "secret": "secret"}, - "upgradeSettings": {"overrideSettings": {"forceUpgrade": True, "until": "2022-11-01T13:00:00Z"}}, + "upgradeSettings": {"overrideSettings": {"forceUpgrade": False, "until": "2022-11-01T13:00:00Z"}}, "windowsProfile": {"adminPassword": "replacePassword1234$", "adminUsername": "azureuser"}, }, "sku": {"name": "Basic", "tier": "Free"}, @@ -87,6 +87,6 @@ def main(): print(response) -# x-ms-original-file: 2026-03-02-preview/ManagedClustersCreate_Update.json +# x-ms-original-file: 2026-04-01/ManagedClustersCreate_Update.json if __name__ == "__main__": main() diff --git a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/managed_clusters_create_update_windows_gmsa.py b/sdk/containerservice/azure-mgmt-containerservice/generated_samples/managed_clusters_create_update_windows_gmsa.py index 52b7dcbf39c3..879caf3e8a93 100644 --- a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/managed_clusters_create_update_windows_gmsa.py +++ b/sdk/containerservice/azure-mgmt-containerservice/generated_samples/managed_clusters_create_update_windows_gmsa.py @@ -81,6 +81,6 @@ def main(): print(response) -# x-ms-original-file: 2026-03-02-preview/ManagedClustersCreate_UpdateWindowsGmsa.json +# x-ms-original-file: 2026-04-01/ManagedClustersCreate_UpdateWindowsGmsa.json if __name__ == "__main__": main() diff --git a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/managed_clusters_create_update_with_ahub.py b/sdk/containerservice/azure-mgmt-containerservice/generated_samples/managed_clusters_create_update_with_ahub.py index 028c5784409e..477ce7e38dd3 100644 --- a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/managed_clusters_create_update_with_ahub.py +++ b/sdk/containerservice/azure-mgmt-containerservice/generated_samples/managed_clusters_create_update_with_ahub.py @@ -81,6 +81,6 @@ def main(): print(response) -# x-ms-original-file: 2026-03-02-preview/ManagedClustersCreate_UpdateWithAHUB.json +# x-ms-original-file: 2026-04-01/ManagedClustersCreate_UpdateWithAHUB.json if __name__ == "__main__": main() diff --git a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/managed_clusters_create_update_with_enable_azure_rbac.py b/sdk/containerservice/azure-mgmt-containerservice/generated_samples/managed_clusters_create_update_with_enable_azure_rbac.py index 15c64b7e9c8d..af39ad5f735e 100644 --- a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/managed_clusters_create_update_with_enable_azure_rbac.py +++ b/sdk/containerservice/azure-mgmt-containerservice/generated_samples/managed_clusters_create_update_with_enable_azure_rbac.py @@ -72,6 +72,6 @@ def main(): print(response) -# x-ms-original-file: 2026-03-02-preview/ManagedClustersCreate_UpdateWithEnableAzureRBAC.json +# x-ms-original-file: 2026-04-01/ManagedClustersCreate_UpdateWithEnableAzureRBAC.json if __name__ == "__main__": main() diff --git a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/managed_clusters_create_update_with_enable_namespace_resources.py b/sdk/containerservice/azure-mgmt-containerservice/generated_samples/managed_clusters_create_update_with_enable_namespace_resources.py deleted file mode 100644 index 7d97efbf3e25..000000000000 --- a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/managed_clusters_create_update_with_enable_namespace_resources.py +++ /dev/null @@ -1,77 +0,0 @@ -# pylint: disable=line-too-long,useless-suppression -# coding=utf-8 -# -------------------------------------------------------------------------- -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT License. See License.txt in the project root for license information. -# Code generated by Microsoft (R) Python Code Generator. -# Changes may cause incorrect behavior and will be lost if the code is regenerated. -# -------------------------------------------------------------------------- - -from azure.identity import DefaultAzureCredential - -from azure.mgmt.containerservice import ContainerServiceClient - -""" -# PREREQUISITES - pip install azure-identity - pip install azure-mgmt-containerservice -# USAGE - python managed_clusters_create_update_with_enable_namespace_resources.py - - Before run the sample, please set the values of the client ID, tenant ID and client secret - of the AAD application as environment variables: AZURE_CLIENT_ID, AZURE_TENANT_ID, - AZURE_CLIENT_SECRET. For more info about how to get the value, please see: - https://docs.microsoft.com/azure/active-directory/develop/howto-create-service-principal-portal -""" - - -def main(): - client = ContainerServiceClient( - credential=DefaultAzureCredential(), - subscription_id="SUBSCRIPTION_ID", - ) - - response = client.managed_clusters.begin_create_or_update( - resource_group_name="rg1", - resource_name="clustername1", - parameters={ - "location": "location1", - "properties": { - "addonProfiles": {}, - "agentPoolProfiles": [ - { - "availabilityZones": ["1", "2", "3"], - "count": 3, - "enableNodePublicIP": True, - "mode": "System", - "name": "nodepool1", - "osType": "Linux", - "type": "VirtualMachineScaleSets", - "vmSize": "Standard_DS1_v2", - } - ], - "autoScalerProfile": {"scale-down-delay-after-add": "15m", "scan-interval": "20s"}, - "diskEncryptionSetID": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/rg1/providers/Microsoft.Compute/diskEncryptionSets/des", - "dnsPrefix": "dnsprefix1", - "enableNamespaceResources": True, - "enableRBAC": True, - "kubernetesVersion": "", - "linuxProfile": {"adminUsername": "azureuser", "ssh": {"publicKeys": [{"keyData": "keydata"}]}}, - "networkProfile": { - "loadBalancerProfile": {"managedOutboundIPs": {"count": 2}}, - "loadBalancerSku": "standard", - "outboundType": "loadBalancer", - }, - "servicePrincipalProfile": {"clientId": "clientid", "secret": "secret"}, - "windowsProfile": {"adminPassword": "replacePassword1234$", "adminUsername": "azureuser"}, - }, - "sku": {"name": "Basic", "tier": "Free"}, - "tags": {"archv2": "", "tier": "production"}, - }, - ).result() - print(response) - - -# x-ms-original-file: 2026-03-02-preview/ManagedClustersCreate_UpdateWithEnableNamespaceResources.json -if __name__ == "__main__": - main() diff --git a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/managed_clusters_create_user_assigned_nat_gateway.py b/sdk/containerservice/azure-mgmt-containerservice/generated_samples/managed_clusters_create_user_assigned_nat_gateway.py index 482ba28a84e8..e0c1a2ed4a6f 100644 --- a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/managed_clusters_create_user_assigned_nat_gateway.py +++ b/sdk/containerservice/azure-mgmt-containerservice/generated_samples/managed_clusters_create_user_assigned_nat_gateway.py @@ -66,6 +66,6 @@ def main(): print(response) -# x-ms-original-file: 2026-03-02-preview/ManagedClustersCreate_UserAssignedNATGateway.json +# x-ms-original-file: 2026-04-01/ManagedClustersCreate_UserAssignedNATGateway.json if __name__ == "__main__": main() diff --git a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/managed_clusters_create_virtual_machines.py b/sdk/containerservice/azure-mgmt-containerservice/generated_samples/managed_clusters_create_virtual_machines.py deleted file mode 100644 index 92980dd2e6ee..000000000000 --- a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/managed_clusters_create_virtual_machines.py +++ /dev/null @@ -1,73 +0,0 @@ -# pylint: disable=line-too-long,useless-suppression -# coding=utf-8 -# -------------------------------------------------------------------------- -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT License. See License.txt in the project root for license information. -# Code generated by Microsoft (R) Python Code Generator. -# Changes may cause incorrect behavior and will be lost if the code is regenerated. -# -------------------------------------------------------------------------- - -from azure.identity import DefaultAzureCredential - -from azure.mgmt.containerservice import ContainerServiceClient - -""" -# PREREQUISITES - pip install azure-identity - pip install azure-mgmt-containerservice -# USAGE - python managed_clusters_create_virtual_machines.py - - Before run the sample, please set the values of the client ID, tenant ID and client secret - of the AAD application as environment variables: AZURE_CLIENT_ID, AZURE_TENANT_ID, - AZURE_CLIENT_SECRET. For more info about how to get the value, please see: - https://docs.microsoft.com/azure/active-directory/develop/howto-create-service-principal-portal -""" - - -def main(): - client = ContainerServiceClient( - credential=DefaultAzureCredential(), - subscription_id="SUBSCRIPTION_ID", - ) - - response = client.managed_clusters.begin_create_or_update( - resource_group_name="rg1", - resource_name="clustername1", - parameters={ - "location": "location1", - "properties": { - "addonProfiles": {}, - "agentPoolProfiles": [ - { - "count": 3, - "enableFIPS": True, - "mode": "System", - "name": "nodepool1", - "osType": "Linux", - "type": "VirtualMachines", - "vmSize": "Standard_DS2_v2", - } - ], - "diskEncryptionSetID": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/rg1/providers/Microsoft.Compute/diskEncryptionSets/des", - "dnsPrefix": "dnsprefix1", - "enableRBAC": True, - "kubernetesVersion": "", - "linuxProfile": {"adminUsername": "azureuser", "ssh": {"publicKeys": [{"keyData": "keydata"}]}}, - "networkProfile": { - "loadBalancerProfile": {"managedOutboundIPs": {"count": 2}}, - "loadBalancerSku": "standard", - "outboundType": "loadBalancer", - }, - "servicePrincipalProfile": {"clientId": "clientid", "secret": "secret"}, - }, - "sku": {"name": "Basic", "tier": "Free"}, - "tags": {"archv2": "", "tier": "production"}, - }, - ).result() - print(response) - - -# x-ms-original-file: 2026-03-02-preview/ManagedClustersCreate_VirtualMachines.json -if __name__ == "__main__": - main() diff --git a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/managed_clusters_delete.py b/sdk/containerservice/azure-mgmt-containerservice/generated_samples/managed_clusters_delete.py index 47fd74f9cdc4..85fdb335adcd 100644 --- a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/managed_clusters_delete.py +++ b/sdk/containerservice/azure-mgmt-containerservice/generated_samples/managed_clusters_delete.py @@ -36,6 +36,6 @@ def main(): ).result() -# x-ms-original-file: 2026-03-02-preview/ManagedClustersDelete.json +# x-ms-original-file: 2026-04-01/ManagedClustersDelete.json if __name__ == "__main__": main() diff --git a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/managed_clusters_get.py b/sdk/containerservice/azure-mgmt-containerservice/generated_samples/managed_clusters_get.py index 11562909d6ca..fdd8c13bb83f 100644 --- a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/managed_clusters_get.py +++ b/sdk/containerservice/azure-mgmt-containerservice/generated_samples/managed_clusters_get.py @@ -37,6 +37,6 @@ def main(): print(response) -# x-ms-original-file: 2026-03-02-preview/ManagedClustersGet.json +# x-ms-original-file: 2026-04-01/ManagedClustersGet.json if __name__ == "__main__": main() diff --git a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/managed_clusters_get_access_profile.py b/sdk/containerservice/azure-mgmt-containerservice/generated_samples/managed_clusters_get_access_profile.py index decf3da311fa..96793b95d97f 100644 --- a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/managed_clusters_get_access_profile.py +++ b/sdk/containerservice/azure-mgmt-containerservice/generated_samples/managed_clusters_get_access_profile.py @@ -38,6 +38,6 @@ def main(): print(response) -# x-ms-original-file: 2026-03-02-preview/ManagedClustersGetAccessProfile.json +# x-ms-original-file: 2026-04-01/ManagedClustersGetAccessProfile.json if __name__ == "__main__": main() diff --git a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/managed_clusters_get_mesh_revision_profile.py b/sdk/containerservice/azure-mgmt-containerservice/generated_samples/managed_clusters_get_mesh_revision_profile.py index 2837bd3c6364..ebc5d8b5bdca 100644 --- a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/managed_clusters_get_mesh_revision_profile.py +++ b/sdk/containerservice/azure-mgmt-containerservice/generated_samples/managed_clusters_get_mesh_revision_profile.py @@ -37,6 +37,6 @@ def main(): print(response) -# x-ms-original-file: 2026-03-02-preview/ManagedClustersGet_MeshRevisionProfile.json +# x-ms-original-file: 2026-04-01/ManagedClustersGet_MeshRevisionProfile.json if __name__ == "__main__": main() diff --git a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/managed_clusters_get_mesh_upgrade_profile.py b/sdk/containerservice/azure-mgmt-containerservice/generated_samples/managed_clusters_get_mesh_upgrade_profile.py index c12363ef5065..4b0c4b6e8742 100644 --- a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/managed_clusters_get_mesh_upgrade_profile.py +++ b/sdk/containerservice/azure-mgmt-containerservice/generated_samples/managed_clusters_get_mesh_upgrade_profile.py @@ -38,6 +38,6 @@ def main(): print(response) -# x-ms-original-file: 2026-03-02-preview/ManagedClustersGet_MeshUpgradeProfile.json +# x-ms-original-file: 2026-04-01/ManagedClustersGet_MeshUpgradeProfile.json if __name__ == "__main__": main() diff --git a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/managed_clusters_get_upgrade_profile.py b/sdk/containerservice/azure-mgmt-containerservice/generated_samples/managed_clusters_get_upgrade_profile.py index a80a23984b2c..b8c91c0c60b5 100644 --- a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/managed_clusters_get_upgrade_profile.py +++ b/sdk/containerservice/azure-mgmt-containerservice/generated_samples/managed_clusters_get_upgrade_profile.py @@ -37,6 +37,6 @@ def main(): print(response) -# x-ms-original-file: 2026-03-02-preview/ManagedClustersGetUpgradeProfile.json +# x-ms-original-file: 2026-04-01/ManagedClustersGetUpgradeProfile.json if __name__ == "__main__": main() diff --git a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/managed_clusters_list.py b/sdk/containerservice/azure-mgmt-containerservice/generated_samples/managed_clusters_list.py index 00ee0060a46a..dd306b2ffbf8 100644 --- a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/managed_clusters_list.py +++ b/sdk/containerservice/azure-mgmt-containerservice/generated_samples/managed_clusters_list.py @@ -35,6 +35,6 @@ def main(): print(item) -# x-ms-original-file: 2026-03-02-preview/ManagedClustersList.json +# x-ms-original-file: 2026-04-01/ManagedClustersList.json if __name__ == "__main__": main() diff --git a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/managed_clusters_list_by_resource_group.py b/sdk/containerservice/azure-mgmt-containerservice/generated_samples/managed_clusters_list_by_resource_group.py index 0aaf75f3689e..4e0a853267a2 100644 --- a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/managed_clusters_list_by_resource_group.py +++ b/sdk/containerservice/azure-mgmt-containerservice/generated_samples/managed_clusters_list_by_resource_group.py @@ -37,6 +37,6 @@ def main(): print(item) -# x-ms-original-file: 2026-03-02-preview/ManagedClustersListByResourceGroup.json +# x-ms-original-file: 2026-04-01/ManagedClustersListByResourceGroup.json if __name__ == "__main__": main() diff --git a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/managed_clusters_list_cluster_admin_credentials.py b/sdk/containerservice/azure-mgmt-containerservice/generated_samples/managed_clusters_list_cluster_admin_credentials.py index 47658b717035..60d2c9316802 100644 --- a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/managed_clusters_list_cluster_admin_credentials.py +++ b/sdk/containerservice/azure-mgmt-containerservice/generated_samples/managed_clusters_list_cluster_admin_credentials.py @@ -37,6 +37,6 @@ def main(): print(response) -# x-ms-original-file: 2026-03-02-preview/ManagedClustersListClusterAdminCredentials.json +# x-ms-original-file: 2026-04-01/ManagedClustersListClusterAdminCredentials.json if __name__ == "__main__": main() diff --git a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/managed_clusters_list_cluster_credential_result.py b/sdk/containerservice/azure-mgmt-containerservice/generated_samples/managed_clusters_list_cluster_monitoring_user_credentials.py similarity index 89% rename from sdk/containerservice/azure-mgmt-containerservice/generated_samples/managed_clusters_list_cluster_credential_result.py rename to sdk/containerservice/azure-mgmt-containerservice/generated_samples/managed_clusters_list_cluster_monitoring_user_credentials.py index 706b535bf556..9f82642b3333 100644 --- a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/managed_clusters_list_cluster_credential_result.py +++ b/sdk/containerservice/azure-mgmt-containerservice/generated_samples/managed_clusters_list_cluster_monitoring_user_credentials.py @@ -15,7 +15,7 @@ pip install azure-identity pip install azure-mgmt-containerservice # USAGE - python managed_clusters_list_cluster_credential_result.py + python managed_clusters_list_cluster_monitoring_user_credentials.py Before run the sample, please set the values of the client ID, tenant ID and client secret of the AAD application as environment variables: AZURE_CLIENT_ID, AZURE_TENANT_ID, @@ -37,6 +37,6 @@ def main(): print(response) -# x-ms-original-file: 2026-03-02-preview/ManagedClustersListClusterCredentialResult.json +# x-ms-original-file: 2026-04-01/ManagedClustersListClusterMonitoringUserCredentials.json if __name__ == "__main__": main() diff --git a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/managed_clusters_list_cluster_user_credentials.py b/sdk/containerservice/azure-mgmt-containerservice/generated_samples/managed_clusters_list_cluster_user_credentials.py index 68d177485913..5b1e40133860 100644 --- a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/managed_clusters_list_cluster_user_credentials.py +++ b/sdk/containerservice/azure-mgmt-containerservice/generated_samples/managed_clusters_list_cluster_user_credentials.py @@ -37,6 +37,6 @@ def main(): print(response) -# x-ms-original-file: 2026-03-02-preview/ManagedClustersListClusterUserCredentials.json +# x-ms-original-file: 2026-04-01/ManagedClustersListClusterUserCredentials.json if __name__ == "__main__": main() diff --git a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/managed_clusters_list_mesh_revision_profiles.py b/sdk/containerservice/azure-mgmt-containerservice/generated_samples/managed_clusters_list_mesh_revision_profiles.py index 0641aff04f76..dcdea9c604e6 100644 --- a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/managed_clusters_list_mesh_revision_profiles.py +++ b/sdk/containerservice/azure-mgmt-containerservice/generated_samples/managed_clusters_list_mesh_revision_profiles.py @@ -37,6 +37,6 @@ def main(): print(item) -# x-ms-original-file: 2026-03-02-preview/ManagedClustersList_MeshRevisionProfiles.json +# x-ms-original-file: 2026-04-01/ManagedClustersList_MeshRevisionProfiles.json if __name__ == "__main__": main() diff --git a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/managed_clusters_list_mesh_upgrade_profiles.py b/sdk/containerservice/azure-mgmt-containerservice/generated_samples/managed_clusters_list_mesh_upgrade_profiles.py index 499a902156b2..abda7eb116d1 100644 --- a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/managed_clusters_list_mesh_upgrade_profiles.py +++ b/sdk/containerservice/azure-mgmt-containerservice/generated_samples/managed_clusters_list_mesh_upgrade_profiles.py @@ -38,6 +38,6 @@ def main(): print(item) -# x-ms-original-file: 2026-03-02-preview/ManagedClustersList_MeshUpgradeProfiles.json +# x-ms-original-file: 2026-04-01/ManagedClustersList_MeshUpgradeProfiles.json if __name__ == "__main__": main() diff --git a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/managed_clusters_reset_aad_profile.py b/sdk/containerservice/azure-mgmt-containerservice/generated_samples/managed_clusters_reset_aad_profile.py index 4c0935d11165..b87af49aee3f 100644 --- a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/managed_clusters_reset_aad_profile.py +++ b/sdk/containerservice/azure-mgmt-containerservice/generated_samples/managed_clusters_reset_aad_profile.py @@ -42,6 +42,6 @@ def main(): ).result() -# x-ms-original-file: 2026-03-02-preview/ManagedClustersResetAADProfile.json +# x-ms-original-file: 2026-04-01/ManagedClustersResetAADProfile.json if __name__ == "__main__": main() diff --git a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/managed_clusters_reset_service_principal_profile.py b/sdk/containerservice/azure-mgmt-containerservice/generated_samples/managed_clusters_reset_service_principal_profile.py index 03afda0266b0..5a8cf9e7d3b8 100644 --- a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/managed_clusters_reset_service_principal_profile.py +++ b/sdk/containerservice/azure-mgmt-containerservice/generated_samples/managed_clusters_reset_service_principal_profile.py @@ -37,6 +37,6 @@ def main(): ).result() -# x-ms-original-file: 2026-03-02-preview/ManagedClustersResetServicePrincipalProfile.json +# x-ms-original-file: 2026-04-01/ManagedClustersResetServicePrincipalProfile.json if __name__ == "__main__": main() diff --git a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/managed_clusters_rotate_cluster_certificates.py b/sdk/containerservice/azure-mgmt-containerservice/generated_samples/managed_clusters_rotate_cluster_certificates.py index 93e53d0c90ab..0afde3d98088 100644 --- a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/managed_clusters_rotate_cluster_certificates.py +++ b/sdk/containerservice/azure-mgmt-containerservice/generated_samples/managed_clusters_rotate_cluster_certificates.py @@ -36,6 +36,6 @@ def main(): ).result() -# x-ms-original-file: 2026-03-02-preview/ManagedClustersRotateClusterCertificates.json +# x-ms-original-file: 2026-04-01/ManagedClustersRotateClusterCertificates.json if __name__ == "__main__": main() diff --git a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/managed_clusters_rotate_service_account_signing_keys.py b/sdk/containerservice/azure-mgmt-containerservice/generated_samples/managed_clusters_rotate_service_account_signing_keys.py index 17f3a00c210a..30414515c5d5 100644 --- a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/managed_clusters_rotate_service_account_signing_keys.py +++ b/sdk/containerservice/azure-mgmt-containerservice/generated_samples/managed_clusters_rotate_service_account_signing_keys.py @@ -36,6 +36,6 @@ def main(): ).result() -# x-ms-original-file: 2026-03-02-preview/ManagedClustersRotateServiceAccountSigningKeys.json +# x-ms-original-file: 2026-04-01/ManagedClustersRotateServiceAccountSigningKeys.json if __name__ == "__main__": main() diff --git a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/managed_clusters_start.py b/sdk/containerservice/azure-mgmt-containerservice/generated_samples/managed_clusters_start.py index 98f244923802..e08ce37c404a 100644 --- a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/managed_clusters_start.py +++ b/sdk/containerservice/azure-mgmt-containerservice/generated_samples/managed_clusters_start.py @@ -36,6 +36,6 @@ def main(): ).result() -# x-ms-original-file: 2026-03-02-preview/ManagedClustersStart.json +# x-ms-original-file: 2026-04-01/ManagedClustersStart.json if __name__ == "__main__": main() diff --git a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/managed_clusters_stop.py b/sdk/containerservice/azure-mgmt-containerservice/generated_samples/managed_clusters_stop.py index 8503c1ffde1d..77698ed89ce7 100644 --- a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/managed_clusters_stop.py +++ b/sdk/containerservice/azure-mgmt-containerservice/generated_samples/managed_clusters_stop.py @@ -36,6 +36,6 @@ def main(): ).result() -# x-ms-original-file: 2026-03-02-preview/ManagedClustersStop.json +# x-ms-original-file: 2026-04-01/ManagedClustersStop.json if __name__ == "__main__": main() diff --git a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/managed_clusters_update_tags.py b/sdk/containerservice/azure-mgmt-containerservice/generated_samples/managed_clusters_update_tags.py index 7e9622da4adb..dfefa767e98e 100644 --- a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/managed_clusters_update_tags.py +++ b/sdk/containerservice/azure-mgmt-containerservice/generated_samples/managed_clusters_update_tags.py @@ -38,6 +38,6 @@ def main(): print(response) -# x-ms-original-file: 2026-03-02-preview/ManagedClustersUpdateTags.json +# x-ms-original-file: 2026-04-01/ManagedClustersUpdateTags.json if __name__ == "__main__": main() diff --git a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/managed_namespaces_create_update.py b/sdk/containerservice/azure-mgmt-containerservice/generated_samples/managed_namespaces_create_update.py index 1d0cda67ded1..595c6b302444 100644 --- a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/managed_namespaces_create_update.py +++ b/sdk/containerservice/azure-mgmt-containerservice/generated_samples/managed_namespaces_create_update.py @@ -55,6 +55,6 @@ def main(): print(response) -# x-ms-original-file: 2026-03-02-preview/ManagedNamespacesCreate_Update.json +# x-ms-original-file: 2026-04-01/ManagedNamespacesCreate_Update.json if __name__ == "__main__": main() diff --git a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/managed_namespaces_delete.py b/sdk/containerservice/azure-mgmt-containerservice/generated_samples/managed_namespaces_delete.py index bb78689c3ff9..fe0d0dca8500 100644 --- a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/managed_namespaces_delete.py +++ b/sdk/containerservice/azure-mgmt-containerservice/generated_samples/managed_namespaces_delete.py @@ -37,6 +37,6 @@ def main(): ).result() -# x-ms-original-file: 2026-03-02-preview/ManagedNamespacesDelete.json +# x-ms-original-file: 2026-04-01/ManagedNamespacesDelete.json if __name__ == "__main__": main() diff --git a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/managed_namespaces_get.py b/sdk/containerservice/azure-mgmt-containerservice/generated_samples/managed_namespaces_get.py index d08cba3dff1e..106f7b4b2eb2 100644 --- a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/managed_namespaces_get.py +++ b/sdk/containerservice/azure-mgmt-containerservice/generated_samples/managed_namespaces_get.py @@ -38,6 +38,6 @@ def main(): print(response) -# x-ms-original-file: 2026-03-02-preview/ManagedNamespacesGet.json +# x-ms-original-file: 2026-04-01/ManagedNamespacesGet.json if __name__ == "__main__": main() diff --git a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/managed_namespaces_list.py b/sdk/containerservice/azure-mgmt-containerservice/generated_samples/managed_namespaces_list.py index 7078eb0ff498..689b51f54c64 100644 --- a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/managed_namespaces_list.py +++ b/sdk/containerservice/azure-mgmt-containerservice/generated_samples/managed_namespaces_list.py @@ -38,6 +38,6 @@ def main(): print(item) -# x-ms-original-file: 2026-03-02-preview/ManagedNamespacesList.json +# x-ms-original-file: 2026-04-01/ManagedNamespacesList.json if __name__ == "__main__": main() diff --git a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/managed_namespaces_list_credential_result.py b/sdk/containerservice/azure-mgmt-containerservice/generated_samples/managed_namespaces_list_credential_result.py index 37b2ee55c312..e0a9fcabf06f 100644 --- a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/managed_namespaces_list_credential_result.py +++ b/sdk/containerservice/azure-mgmt-containerservice/generated_samples/managed_namespaces_list_credential_result.py @@ -38,6 +38,6 @@ def main(): print(response) -# x-ms-original-file: 2026-03-02-preview/ManagedNamespacesListCredentialResult.json +# x-ms-original-file: 2026-04-01/ManagedNamespacesListCredentialResult.json if __name__ == "__main__": main() diff --git a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/managed_namespaces_update_tags.py b/sdk/containerservice/azure-mgmt-containerservice/generated_samples/managed_namespaces_update_tags.py index c37421204f29..a9a1b9d60cd9 100644 --- a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/managed_namespaces_update_tags.py +++ b/sdk/containerservice/azure-mgmt-containerservice/generated_samples/managed_namespaces_update_tags.py @@ -39,6 +39,6 @@ def main(): print(response) -# x-ms-original-file: 2026-03-02-preview/ManagedNamespacesUpdateTags.json +# x-ms-original-file: 2026-04-01/ManagedNamespacesUpdateTags.json if __name__ == "__main__": main() diff --git a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/mesh_memberships_create_or_update.py b/sdk/containerservice/azure-mgmt-containerservice/generated_samples/mesh_memberships_create_or_update.py deleted file mode 100644 index a7b3e094af22..000000000000 --- a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/mesh_memberships_create_or_update.py +++ /dev/null @@ -1,49 +0,0 @@ -# pylint: disable=line-too-long,useless-suppression -# coding=utf-8 -# -------------------------------------------------------------------------- -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT License. See License.txt in the project root for license information. -# Code generated by Microsoft (R) Python Code Generator. -# Changes may cause incorrect behavior and will be lost if the code is regenerated. -# -------------------------------------------------------------------------- - -from azure.identity import DefaultAzureCredential - -from azure.mgmt.containerservice import ContainerServiceClient - -""" -# PREREQUISITES - pip install azure-identity - pip install azure-mgmt-containerservice -# USAGE - python mesh_memberships_create_or_update.py - - Before run the sample, please set the values of the client ID, tenant ID and client secret - of the AAD application as environment variables: AZURE_CLIENT_ID, AZURE_TENANT_ID, - AZURE_CLIENT_SECRET. For more info about how to get the value, please see: - https://docs.microsoft.com/azure/active-directory/develop/howto-create-service-principal-portal -""" - - -def main(): - client = ContainerServiceClient( - credential=DefaultAzureCredential(), - subscription_id="SUBSCRIPTION_ID", - ) - - response = client.mesh_memberships.begin_create_or_update( - resource_group_name="rg1", - resource_name="clustername1", - mesh_membership_name="meshmembership1", - parameters={ - "properties": { - "managedMeshID": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/rg1/providers/Microsoft.AppLink/applinks/applink1/appLinkMembers/member1" - } - }, - ).result() - print(response) - - -# x-ms-original-file: 2026-03-02-preview/MeshMemberships_CreateOrUpdate.json -if __name__ == "__main__": - main() diff --git a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/mesh_memberships_delete.py b/sdk/containerservice/azure-mgmt-containerservice/generated_samples/mesh_memberships_delete.py deleted file mode 100644 index 273ca89be0a3..000000000000 --- a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/mesh_memberships_delete.py +++ /dev/null @@ -1,42 +0,0 @@ -# coding=utf-8 -# -------------------------------------------------------------------------- -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT License. See License.txt in the project root for license information. -# Code generated by Microsoft (R) Python Code Generator. -# Changes may cause incorrect behavior and will be lost if the code is regenerated. -# -------------------------------------------------------------------------- - -from azure.identity import DefaultAzureCredential - -from azure.mgmt.containerservice import ContainerServiceClient - -""" -# PREREQUISITES - pip install azure-identity - pip install azure-mgmt-containerservice -# USAGE - python mesh_memberships_delete.py - - Before run the sample, please set the values of the client ID, tenant ID and client secret - of the AAD application as environment variables: AZURE_CLIENT_ID, AZURE_TENANT_ID, - AZURE_CLIENT_SECRET. For more info about how to get the value, please see: - https://docs.microsoft.com/azure/active-directory/develop/howto-create-service-principal-portal -""" - - -def main(): - client = ContainerServiceClient( - credential=DefaultAzureCredential(), - subscription_id="SUBSCRIPTION_ID", - ) - - client.mesh_memberships.begin_delete( - resource_group_name="rg1", - resource_name="clustername1", - mesh_membership_name="meshmembership1", - ).result() - - -# x-ms-original-file: 2026-03-02-preview/MeshMemberships_Delete.json -if __name__ == "__main__": - main() diff --git a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/mesh_memberships_get.py b/sdk/containerservice/azure-mgmt-containerservice/generated_samples/mesh_memberships_get.py deleted file mode 100644 index d2f3abc3bb47..000000000000 --- a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/mesh_memberships_get.py +++ /dev/null @@ -1,43 +0,0 @@ -# coding=utf-8 -# -------------------------------------------------------------------------- -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT License. See License.txt in the project root for license information. -# Code generated by Microsoft (R) Python Code Generator. -# Changes may cause incorrect behavior and will be lost if the code is regenerated. -# -------------------------------------------------------------------------- - -from azure.identity import DefaultAzureCredential - -from azure.mgmt.containerservice import ContainerServiceClient - -""" -# PREREQUISITES - pip install azure-identity - pip install azure-mgmt-containerservice -# USAGE - python mesh_memberships_get.py - - Before run the sample, please set the values of the client ID, tenant ID and client secret - of the AAD application as environment variables: AZURE_CLIENT_ID, AZURE_TENANT_ID, - AZURE_CLIENT_SECRET. For more info about how to get the value, please see: - https://docs.microsoft.com/azure/active-directory/develop/howto-create-service-principal-portal -""" - - -def main(): - client = ContainerServiceClient( - credential=DefaultAzureCredential(), - subscription_id="SUBSCRIPTION_ID", - ) - - response = client.mesh_memberships.get( - resource_group_name="rg1", - resource_name="clustername1", - mesh_membership_name="meshmembership1", - ) - print(response) - - -# x-ms-original-file: 2026-03-02-preview/MeshMemberships_Get.json -if __name__ == "__main__": - main() diff --git a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/mesh_memberships_list_by_managed_cluster.py b/sdk/containerservice/azure-mgmt-containerservice/generated_samples/mesh_memberships_list_by_managed_cluster.py deleted file mode 100644 index e046549afda5..000000000000 --- a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/mesh_memberships_list_by_managed_cluster.py +++ /dev/null @@ -1,43 +0,0 @@ -# coding=utf-8 -# -------------------------------------------------------------------------- -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT License. See License.txt in the project root for license information. -# Code generated by Microsoft (R) Python Code Generator. -# Changes may cause incorrect behavior and will be lost if the code is regenerated. -# -------------------------------------------------------------------------- - -from azure.identity import DefaultAzureCredential - -from azure.mgmt.containerservice import ContainerServiceClient - -""" -# PREREQUISITES - pip install azure-identity - pip install azure-mgmt-containerservice -# USAGE - python mesh_memberships_list_by_managed_cluster.py - - Before run the sample, please set the values of the client ID, tenant ID and client secret - of the AAD application as environment variables: AZURE_CLIENT_ID, AZURE_TENANT_ID, - AZURE_CLIENT_SECRET. For more info about how to get the value, please see: - https://docs.microsoft.com/azure/active-directory/develop/howto-create-service-principal-portal -""" - - -def main(): - client = ContainerServiceClient( - credential=DefaultAzureCredential(), - subscription_id="SUBSCRIPTION_ID", - ) - - response = client.mesh_memberships.list_by_managed_cluster( - resource_group_name="rg1", - resource_name="clustername1", - ) - for item in response: - print(item) - - -# x-ms-original-file: 2026-03-02-preview/MeshMemberships_ListByManagedCluster.json -if __name__ == "__main__": - main() diff --git a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/node_image_versions_list.py b/sdk/containerservice/azure-mgmt-containerservice/generated_samples/node_image_versions_list.py deleted file mode 100644 index 53b0b29174ee..000000000000 --- a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/node_image_versions_list.py +++ /dev/null @@ -1,42 +0,0 @@ -# coding=utf-8 -# -------------------------------------------------------------------------- -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT License. See License.txt in the project root for license information. -# Code generated by Microsoft (R) Python Code Generator. -# Changes may cause incorrect behavior and will be lost if the code is regenerated. -# -------------------------------------------------------------------------- - -from azure.identity import DefaultAzureCredential - -from azure.mgmt.containerservice import ContainerServiceClient - -""" -# PREREQUISITES - pip install azure-identity - pip install azure-mgmt-containerservice -# USAGE - python node_image_versions_list.py - - Before run the sample, please set the values of the client ID, tenant ID and client secret - of the AAD application as environment variables: AZURE_CLIENT_ID, AZURE_TENANT_ID, - AZURE_CLIENT_SECRET. For more info about how to get the value, please see: - https://docs.microsoft.com/azure/active-directory/develop/howto-create-service-principal-portal -""" - - -def main(): - client = ContainerServiceClient( - credential=DefaultAzureCredential(), - subscription_id="SUBSCRIPTION_ID", - ) - - response = client.container_service.list_node_image_versions( - location="location1", - ) - for item in response: - print(item) - - -# x-ms-original-file: 2026-03-02-preview/NodeImageVersions_List.json -if __name__ == "__main__": - main() diff --git a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/operation_list.py b/sdk/containerservice/azure-mgmt-containerservice/generated_samples/operation_list.py index 80cf8262891d..5fc9c8b8aacf 100644 --- a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/operation_list.py +++ b/sdk/containerservice/azure-mgmt-containerservice/generated_samples/operation_list.py @@ -35,6 +35,6 @@ def main(): print(item) -# x-ms-original-file: 2026-03-02-preview/Operation_List.json +# x-ms-original-file: 2026-04-01/Operation_List.json if __name__ == "__main__": main() diff --git a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/operation_status_result_get.py b/sdk/containerservice/azure-mgmt-containerservice/generated_samples/operation_status_result_get.py deleted file mode 100644 index 529b970cd838..000000000000 --- a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/operation_status_result_get.py +++ /dev/null @@ -1,43 +0,0 @@ -# coding=utf-8 -# -------------------------------------------------------------------------- -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT License. See License.txt in the project root for license information. -# Code generated by Microsoft (R) Python Code Generator. -# Changes may cause incorrect behavior and will be lost if the code is regenerated. -# -------------------------------------------------------------------------- - -from azure.identity import DefaultAzureCredential - -from azure.mgmt.containerservice import ContainerServiceClient - -""" -# PREREQUISITES - pip install azure-identity - pip install azure-mgmt-containerservice -# USAGE - python operation_status_result_get.py - - Before run the sample, please set the values of the client ID, tenant ID and client secret - of the AAD application as environment variables: AZURE_CLIENT_ID, AZURE_TENANT_ID, - AZURE_CLIENT_SECRET. For more info about how to get the value, please see: - https://docs.microsoft.com/azure/active-directory/develop/howto-create-service-principal-portal -""" - - -def main(): - client = ContainerServiceClient( - credential=DefaultAzureCredential(), - subscription_id="SUBSCRIPTION_ID", - ) - - response = client.operation_status_result.get( - resource_group_name="rg1", - resource_name="clustername1", - operation_id="00000000-0000-0000-0000-000000000001", - ) - print(response) - - -# x-ms-original-file: 2026-03-02-preview/OperationStatusResultGet.json -if __name__ == "__main__": - main() diff --git a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/operation_status_result_get_by_agent_pool.py b/sdk/containerservice/azure-mgmt-containerservice/generated_samples/operation_status_result_get_by_agent_pool.py deleted file mode 100644 index acb4d281d829..000000000000 --- a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/operation_status_result_get_by_agent_pool.py +++ /dev/null @@ -1,44 +0,0 @@ -# coding=utf-8 -# -------------------------------------------------------------------------- -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT License. See License.txt in the project root for license information. -# Code generated by Microsoft (R) Python Code Generator. -# Changes may cause incorrect behavior and will be lost if the code is regenerated. -# -------------------------------------------------------------------------- - -from azure.identity import DefaultAzureCredential - -from azure.mgmt.containerservice import ContainerServiceClient - -""" -# PREREQUISITES - pip install azure-identity - pip install azure-mgmt-containerservice -# USAGE - python operation_status_result_get_by_agent_pool.py - - Before run the sample, please set the values of the client ID, tenant ID and client secret - of the AAD application as environment variables: AZURE_CLIENT_ID, AZURE_TENANT_ID, - AZURE_CLIENT_SECRET. For more info about how to get the value, please see: - https://docs.microsoft.com/azure/active-directory/develop/howto-create-service-principal-portal -""" - - -def main(): - client = ContainerServiceClient( - credential=DefaultAzureCredential(), - subscription_id="SUBSCRIPTION_ID", - ) - - response = client.operation_status_result.get_by_agent_pool( - resource_group_name="rg1", - resource_name="clustername1", - agent_pool_name="agentpool1", - operation_id="00000000-0000-0000-0000-000000000001", - ) - print(response) - - -# x-ms-original-file: 2026-03-02-preview/OperationStatusResultGetByAgentPool.json -if __name__ == "__main__": - main() diff --git a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/operation_status_result_list.py b/sdk/containerservice/azure-mgmt-containerservice/generated_samples/operation_status_result_list.py deleted file mode 100644 index 561bd5ebe174..000000000000 --- a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/operation_status_result_list.py +++ /dev/null @@ -1,43 +0,0 @@ -# coding=utf-8 -# -------------------------------------------------------------------------- -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT License. See License.txt in the project root for license information. -# Code generated by Microsoft (R) Python Code Generator. -# Changes may cause incorrect behavior and will be lost if the code is regenerated. -# -------------------------------------------------------------------------- - -from azure.identity import DefaultAzureCredential - -from azure.mgmt.containerservice import ContainerServiceClient - -""" -# PREREQUISITES - pip install azure-identity - pip install azure-mgmt-containerservice -# USAGE - python operation_status_result_list.py - - Before run the sample, please set the values of the client ID, tenant ID and client secret - of the AAD application as environment variables: AZURE_CLIENT_ID, AZURE_TENANT_ID, - AZURE_CLIENT_SECRET. For more info about how to get the value, please see: - https://docs.microsoft.com/azure/active-directory/develop/howto-create-service-principal-portal -""" - - -def main(): - client = ContainerServiceClient( - credential=DefaultAzureCredential(), - subscription_id="SUBSCRIPTION_ID", - ) - - response = client.operation_status_result.list( - resource_group_name="rg1", - resource_name="clustername1", - ) - for item in response: - print(item) - - -# x-ms-original-file: 2026-03-02-preview/OperationStatusResultList.json -if __name__ == "__main__": - main() diff --git a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/outbound_network_dependencies_endpoints_list.py b/sdk/containerservice/azure-mgmt-containerservice/generated_samples/outbound_network_dependencies_endpoints_list.py index 93c06f2d42ce..b640f93c187e 100644 --- a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/outbound_network_dependencies_endpoints_list.py +++ b/sdk/containerservice/azure-mgmt-containerservice/generated_samples/outbound_network_dependencies_endpoints_list.py @@ -38,6 +38,6 @@ def main(): print(item) -# x-ms-original-file: 2026-03-02-preview/OutboundNetworkDependenciesEndpointsList.json +# x-ms-original-file: 2026-04-01/OutboundNetworkDependenciesEndpointsList.json if __name__ == "__main__": main() diff --git a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/private_endpoint_connections_delete.py b/sdk/containerservice/azure-mgmt-containerservice/generated_samples/private_endpoint_connections_delete.py index ab468aa06081..31ef742b7201 100644 --- a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/private_endpoint_connections_delete.py +++ b/sdk/containerservice/azure-mgmt-containerservice/generated_samples/private_endpoint_connections_delete.py @@ -37,6 +37,6 @@ def main(): ).result() -# x-ms-original-file: 2026-03-02-preview/PrivateEndpointConnectionsDelete.json +# x-ms-original-file: 2026-04-01/PrivateEndpointConnectionsDelete.json if __name__ == "__main__": main() diff --git a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/private_endpoint_connections_get.py b/sdk/containerservice/azure-mgmt-containerservice/generated_samples/private_endpoint_connections_get.py index 88ffa0e22c82..82a9389c93f0 100644 --- a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/private_endpoint_connections_get.py +++ b/sdk/containerservice/azure-mgmt-containerservice/generated_samples/private_endpoint_connections_get.py @@ -38,6 +38,6 @@ def main(): print(response) -# x-ms-original-file: 2026-03-02-preview/PrivateEndpointConnectionsGet.json +# x-ms-original-file: 2026-04-01/PrivateEndpointConnectionsGet.json if __name__ == "__main__": main() diff --git a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/private_endpoint_connections_list.py b/sdk/containerservice/azure-mgmt-containerservice/generated_samples/private_endpoint_connections_list.py index 6ad451a15026..79df120f2588 100644 --- a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/private_endpoint_connections_list.py +++ b/sdk/containerservice/azure-mgmt-containerservice/generated_samples/private_endpoint_connections_list.py @@ -37,6 +37,6 @@ def main(): print(response) -# x-ms-original-file: 2026-03-02-preview/PrivateEndpointConnectionsList.json +# x-ms-original-file: 2026-04-01/PrivateEndpointConnectionsList.json if __name__ == "__main__": main() diff --git a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/private_endpoint_connections_update.py b/sdk/containerservice/azure-mgmt-containerservice/generated_samples/private_endpoint_connections_update.py index 4bffd8e393b3..fdd4b92c31f1 100644 --- a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/private_endpoint_connections_update.py +++ b/sdk/containerservice/azure-mgmt-containerservice/generated_samples/private_endpoint_connections_update.py @@ -39,6 +39,6 @@ def main(): print(response) -# x-ms-original-file: 2026-03-02-preview/PrivateEndpointConnectionsUpdate.json +# x-ms-original-file: 2026-04-01/PrivateEndpointConnectionsUpdate.json if __name__ == "__main__": main() diff --git a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/private_link_resources_list.py b/sdk/containerservice/azure-mgmt-containerservice/generated_samples/private_link_resources_list.py index ead4bae20d2b..e7cd6b1cdedf 100644 --- a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/private_link_resources_list.py +++ b/sdk/containerservice/azure-mgmt-containerservice/generated_samples/private_link_resources_list.py @@ -37,6 +37,6 @@ def main(): print(response) -# x-ms-original-file: 2026-03-02-preview/PrivateLinkResourcesList.json +# x-ms-original-file: 2026-04-01/PrivateLinkResourcesList.json if __name__ == "__main__": main() diff --git a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/resolve_private_link_service_id.py b/sdk/containerservice/azure-mgmt-containerservice/generated_samples/resolve_private_link_service_id.py index 8f35a4b5ba93..0c78039b91e1 100644 --- a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/resolve_private_link_service_id.py +++ b/sdk/containerservice/azure-mgmt-containerservice/generated_samples/resolve_private_link_service_id.py @@ -38,6 +38,6 @@ def main(): print(response) -# x-ms-original-file: 2026-03-02-preview/ResolvePrivateLinkServiceId.json +# x-ms-original-file: 2026-04-01/ResolvePrivateLinkServiceId.json if __name__ == "__main__": main() diff --git a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/run_command_request.py b/sdk/containerservice/azure-mgmt-containerservice/generated_samples/run_command_request.py index 01aab9d4c9b3..2fb9b0be1ce5 100644 --- a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/run_command_request.py +++ b/sdk/containerservice/azure-mgmt-containerservice/generated_samples/run_command_request.py @@ -38,6 +38,6 @@ def main(): print(response) -# x-ms-original-file: 2026-03-02-preview/RunCommandRequest.json +# x-ms-original-file: 2026-04-01/RunCommandRequest.json if __name__ == "__main__": main() diff --git a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/run_command_result_failed.py b/sdk/containerservice/azure-mgmt-containerservice/generated_samples/run_command_result_failed.py index 6309b5630df4..d31859a6f3f5 100644 --- a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/run_command_result_failed.py +++ b/sdk/containerservice/azure-mgmt-containerservice/generated_samples/run_command_result_failed.py @@ -38,6 +38,6 @@ def main(): print(response) -# x-ms-original-file: 2026-03-02-preview/RunCommandResultFailed.json +# x-ms-original-file: 2026-04-01/RunCommandResultFailed.json if __name__ == "__main__": main() diff --git a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/run_command_result_succeed.py b/sdk/containerservice/azure-mgmt-containerservice/generated_samples/run_command_result_succeed.py index 4b95cdeca0cd..43ecfa127e0c 100644 --- a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/run_command_result_succeed.py +++ b/sdk/containerservice/azure-mgmt-containerservice/generated_samples/run_command_result_succeed.py @@ -38,6 +38,6 @@ def main(): print(response) -# x-ms-original-file: 2026-03-02-preview/RunCommandResultSucceed.json +# x-ms-original-file: 2026-04-01/RunCommandResultSucceed.json if __name__ == "__main__": main() diff --git a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/snapshots_create.py b/sdk/containerservice/azure-mgmt-containerservice/generated_samples/snapshots_create.py index cd76727a9587..9404dedb463b 100644 --- a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/snapshots_create.py +++ b/sdk/containerservice/azure-mgmt-containerservice/generated_samples/snapshots_create.py @@ -47,6 +47,6 @@ def main(): print(response) -# x-ms-original-file: 2026-03-02-preview/SnapshotsCreate.json +# x-ms-original-file: 2026-04-01/SnapshotsCreate.json if __name__ == "__main__": main() diff --git a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/snapshots_delete.py b/sdk/containerservice/azure-mgmt-containerservice/generated_samples/snapshots_delete.py index ce7b9c32c1c1..dc9651e3f6c2 100644 --- a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/snapshots_delete.py +++ b/sdk/containerservice/azure-mgmt-containerservice/generated_samples/snapshots_delete.py @@ -36,6 +36,6 @@ def main(): ) -# x-ms-original-file: 2026-03-02-preview/SnapshotsDelete.json +# x-ms-original-file: 2026-04-01/SnapshotsDelete.json if __name__ == "__main__": main() diff --git a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/snapshots_get.py b/sdk/containerservice/azure-mgmt-containerservice/generated_samples/snapshots_get.py index b753dde881e5..dc3846951311 100644 --- a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/snapshots_get.py +++ b/sdk/containerservice/azure-mgmt-containerservice/generated_samples/snapshots_get.py @@ -37,6 +37,6 @@ def main(): print(response) -# x-ms-original-file: 2026-03-02-preview/SnapshotsGet.json +# x-ms-original-file: 2026-04-01/SnapshotsGet.json if __name__ == "__main__": main() diff --git a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/snapshots_list.py b/sdk/containerservice/azure-mgmt-containerservice/generated_samples/snapshots_list.py index 12c7ffcb0e5f..325e87d1cf78 100644 --- a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/snapshots_list.py +++ b/sdk/containerservice/azure-mgmt-containerservice/generated_samples/snapshots_list.py @@ -35,6 +35,6 @@ def main(): print(item) -# x-ms-original-file: 2026-03-02-preview/SnapshotsList.json +# x-ms-original-file: 2026-04-01/SnapshotsList.json if __name__ == "__main__": main() diff --git a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/snapshots_list_by_resource_group.py b/sdk/containerservice/azure-mgmt-containerservice/generated_samples/snapshots_list_by_resource_group.py index 253374be7d0f..1e25b1c56803 100644 --- a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/snapshots_list_by_resource_group.py +++ b/sdk/containerservice/azure-mgmt-containerservice/generated_samples/snapshots_list_by_resource_group.py @@ -37,6 +37,6 @@ def main(): print(item) -# x-ms-original-file: 2026-03-02-preview/SnapshotsListByResourceGroup.json +# x-ms-original-file: 2026-04-01/SnapshotsListByResourceGroup.json if __name__ == "__main__": main() diff --git a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/snapshots_update_tags.py b/sdk/containerservice/azure-mgmt-containerservice/generated_samples/snapshots_update_tags.py index fb80b3fe9f43..b61ab5b295fc 100644 --- a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/snapshots_update_tags.py +++ b/sdk/containerservice/azure-mgmt-containerservice/generated_samples/snapshots_update_tags.py @@ -38,6 +38,6 @@ def main(): print(response) -# x-ms-original-file: 2026-03-02-preview/SnapshotsUpdateTags.json +# x-ms-original-file: 2026-04-01/SnapshotsUpdateTags.json if __name__ == "__main__": main() diff --git a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/trusted_access_role_bindings_create_or_update.py b/sdk/containerservice/azure-mgmt-containerservice/generated_samples/trusted_access_role_bindings_create_or_update.py index 18205de6ba93..a22415fed4ff 100644 --- a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/trusted_access_role_bindings_create_or_update.py +++ b/sdk/containerservice/azure-mgmt-containerservice/generated_samples/trusted_access_role_bindings_create_or_update.py @@ -48,6 +48,6 @@ def main(): print(response) -# x-ms-original-file: 2026-03-02-preview/TrustedAccessRoleBindings_CreateOrUpdate.json +# x-ms-original-file: 2026-04-01/TrustedAccessRoleBindings_CreateOrUpdate.json if __name__ == "__main__": main() diff --git a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/trusted_access_role_bindings_delete.py b/sdk/containerservice/azure-mgmt-containerservice/generated_samples/trusted_access_role_bindings_delete.py index 74313bf3f657..c4767fd27399 100644 --- a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/trusted_access_role_bindings_delete.py +++ b/sdk/containerservice/azure-mgmt-containerservice/generated_samples/trusted_access_role_bindings_delete.py @@ -37,6 +37,6 @@ def main(): ).result() -# x-ms-original-file: 2026-03-02-preview/TrustedAccessRoleBindings_Delete.json +# x-ms-original-file: 2026-04-01/TrustedAccessRoleBindings_Delete.json if __name__ == "__main__": main() diff --git a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/trusted_access_role_bindings_get.py b/sdk/containerservice/azure-mgmt-containerservice/generated_samples/trusted_access_role_bindings_get.py index 7bf2a88419e8..5da5d03603fc 100644 --- a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/trusted_access_role_bindings_get.py +++ b/sdk/containerservice/azure-mgmt-containerservice/generated_samples/trusted_access_role_bindings_get.py @@ -38,6 +38,6 @@ def main(): print(response) -# x-ms-original-file: 2026-03-02-preview/TrustedAccessRoleBindings_Get.json +# x-ms-original-file: 2026-04-01/TrustedAccessRoleBindings_Get.json if __name__ == "__main__": main() diff --git a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/trusted_access_role_bindings_list.py b/sdk/containerservice/azure-mgmt-containerservice/generated_samples/trusted_access_role_bindings_list.py index 9ca54a588992..c3e539ad9e9e 100644 --- a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/trusted_access_role_bindings_list.py +++ b/sdk/containerservice/azure-mgmt-containerservice/generated_samples/trusted_access_role_bindings_list.py @@ -38,6 +38,6 @@ def main(): print(item) -# x-ms-original-file: 2026-03-02-preview/TrustedAccessRoleBindings_List.json +# x-ms-original-file: 2026-04-01/TrustedAccessRoleBindings_List.json if __name__ == "__main__": main() diff --git a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/trusted_access_roles_list.py b/sdk/containerservice/azure-mgmt-containerservice/generated_samples/trusted_access_roles_list.py index 10bc7893def3..cb4c1f855eae 100644 --- a/sdk/containerservice/azure-mgmt-containerservice/generated_samples/trusted_access_roles_list.py +++ b/sdk/containerservice/azure-mgmt-containerservice/generated_samples/trusted_access_roles_list.py @@ -37,6 +37,6 @@ def main(): print(item) -# x-ms-original-file: 2026-03-02-preview/TrustedAccessRoles_List.json +# x-ms-original-file: 2026-04-01/TrustedAccessRoles_List.json if __name__ == "__main__": main() diff --git a/sdk/containerservice/azure-mgmt-containerservice/generated_tests/test_container_service_agent_pools_operations.py b/sdk/containerservice/azure-mgmt-containerservice/generated_tests/test_container_service_agent_pools_operations.py index 3e0c37a80cf3..a700e82f8b30 100644 --- a/sdk/containerservice/azure-mgmt-containerservice/generated_tests/test_container_service_agent_pools_operations.py +++ b/sdk/containerservice/azure-mgmt-containerservice/generated_tests/test_container_service_agent_pools_operations.py @@ -52,15 +52,10 @@ def test_agent_pools_begin_create_or_update(self, resource_group): "enableEncryptionAtHost": bool, "enableFIPS": bool, "enableNodePublicIP": bool, - "enableOSDiskFullCaching": bool, "enableUltraSSD": bool, "gatewayProfile": {"publicIPPrefixSize": 0}, "gpuInstanceProfile": "str", - "gpuProfile": { - "driver": "str", - "driverType": "str", - "nvidia": {"managementMode": "str", "migStrategy": "str"}, - }, + "gpuProfile": {"driver": "str"}, "hostGroupID": "str", "kubeletConfig": { "allowedUnsafeSysctls": ["str"], @@ -70,16 +65,9 @@ def test_agent_pools_begin_create_or_update(self, resource_group): "cpuCfsQuotaPeriod": "str", "cpuManagerPolicy": "str", "failSwapOn": bool, - "hardEvictionThreshold": { - "memoryAvailable": "str", - "nodeFsAvailable": "str", - "nodeFsInodesFree": "str", - }, "imageGcHighThreshold": 0, "imageGcLowThreshold": 0, - "kubeReserved": {"cpuMillicores": 0, "memoryMB": 0}, "podMaxPids": 0, - "seccompDefault": "str", "topologyManagerPolicy": "str", }, "kubeletDiskType": "str", @@ -154,14 +142,9 @@ def test_agent_pools_begin_create_or_update(self, resource_group): "networkProfile": { "allowedHostPorts": [{"portEnd": 0, "portStart": 0, "protocol": "str"}], "applicationSecurityGroups": ["str"], - "nodePublicIPPrefixIDs": ["str"], "nodePublicIPTags": [{"ipTagType": "str", "tag": "str"}], - "secondaryNetworkInterfaces": [ - {"enableAcceleratedNetworking": bool, "type": "str", "vnetSubnetId": "str"} - ], }, "nodeImageVersion": "str", - "nodeInitializationTaints": ["str"], "nodeLabels": {"str": "str"}, "nodePublicIPPrefixID": "str", "nodeTaints": ["str"], @@ -173,7 +156,6 @@ def test_agent_pools_begin_create_or_update(self, resource_group): "podIPAllocationMode": "str", "podSubnetID": "str", "powerState": {"code": "str"}, - "preparedImageSpecificationProfile": {"preparedImageSpecificationId": "str"}, "provisioningState": "str", "proximityPlacementGroupID": "str", "scaleDownMode": "str", @@ -194,26 +176,13 @@ def test_agent_pools_begin_create_or_update(self, resource_group): "type": "str", "upgradeSettings": { "drainTimeoutInMinutes": 0, - "maxBlockedNodes": "str", "maxSurge": "str", "maxUnavailable": "str", "nodeSoakDurationInMinutes": 0, "undrainableNodeBehavior": "str", }, - "upgradeSettingsBlueGreen": { - "batchSoakDurationInMinutes": 0, - "drainBatchSize": "str", - "drainTimeoutInMinutes": 0, - "finalSoakDurationInMinutes": 0, - }, - "upgradeStrategy": "str", "virtualMachineNodesStatus": [{"count": 0, "size": "str"}], - "virtualMachinesProfile": { - "scale": { - "autoscale": [{"maxCount": 0, "minCount": 0, "size": "str"}], - "manual": [{"count": 0, "size": "str"}], - } - }, + "virtualMachinesProfile": {"scale": {"manual": [{"count": 0, "size": "str"}]}}, "vmSize": "str", "vnetSubnetID": "str", "windowsProfile": {"disableOutboundNat": bool}, @@ -269,18 +238,6 @@ def test_agent_pools_begin_abort_latest_operation(self, resource_group): # please add some check logic here by yourself # ... - @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) - @recorded_by_proxy - def test_agent_pools_begin_complete_upgrade(self, resource_group): - response = self.client.agent_pools.begin_complete_upgrade( - resource_group_name=resource_group.name, - resource_name="str", - agent_pool_name="str", - ).result() # call '.result()' to poll until service return final result - - # please add some check logic here by yourself - # ... - @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) @recorded_by_proxy def test_agent_pools_begin_delete_machines(self, resource_group): diff --git a/sdk/containerservice/azure-mgmt-containerservice/generated_tests/test_container_service_agent_pools_operations_async.py b/sdk/containerservice/azure-mgmt-containerservice/generated_tests/test_container_service_agent_pools_operations_async.py index 0ba891cedef1..e786e5695489 100644 --- a/sdk/containerservice/azure-mgmt-containerservice/generated_tests/test_container_service_agent_pools_operations_async.py +++ b/sdk/containerservice/azure-mgmt-containerservice/generated_tests/test_container_service_agent_pools_operations_async.py @@ -54,15 +54,10 @@ async def test_agent_pools_begin_create_or_update(self, resource_group): "enableEncryptionAtHost": bool, "enableFIPS": bool, "enableNodePublicIP": bool, - "enableOSDiskFullCaching": bool, "enableUltraSSD": bool, "gatewayProfile": {"publicIPPrefixSize": 0}, "gpuInstanceProfile": "str", - "gpuProfile": { - "driver": "str", - "driverType": "str", - "nvidia": {"managementMode": "str", "migStrategy": "str"}, - }, + "gpuProfile": {"driver": "str"}, "hostGroupID": "str", "kubeletConfig": { "allowedUnsafeSysctls": ["str"], @@ -72,16 +67,9 @@ async def test_agent_pools_begin_create_or_update(self, resource_group): "cpuCfsQuotaPeriod": "str", "cpuManagerPolicy": "str", "failSwapOn": bool, - "hardEvictionThreshold": { - "memoryAvailable": "str", - "nodeFsAvailable": "str", - "nodeFsInodesFree": "str", - }, "imageGcHighThreshold": 0, "imageGcLowThreshold": 0, - "kubeReserved": {"cpuMillicores": 0, "memoryMB": 0}, "podMaxPids": 0, - "seccompDefault": "str", "topologyManagerPolicy": "str", }, "kubeletDiskType": "str", @@ -156,14 +144,9 @@ async def test_agent_pools_begin_create_or_update(self, resource_group): "networkProfile": { "allowedHostPorts": [{"portEnd": 0, "portStart": 0, "protocol": "str"}], "applicationSecurityGroups": ["str"], - "nodePublicIPPrefixIDs": ["str"], "nodePublicIPTags": [{"ipTagType": "str", "tag": "str"}], - "secondaryNetworkInterfaces": [ - {"enableAcceleratedNetworking": bool, "type": "str", "vnetSubnetId": "str"} - ], }, "nodeImageVersion": "str", - "nodeInitializationTaints": ["str"], "nodeLabels": {"str": "str"}, "nodePublicIPPrefixID": "str", "nodeTaints": ["str"], @@ -175,7 +158,6 @@ async def test_agent_pools_begin_create_or_update(self, resource_group): "podIPAllocationMode": "str", "podSubnetID": "str", "powerState": {"code": "str"}, - "preparedImageSpecificationProfile": {"preparedImageSpecificationId": "str"}, "provisioningState": "str", "proximityPlacementGroupID": "str", "scaleDownMode": "str", @@ -196,26 +178,13 @@ async def test_agent_pools_begin_create_or_update(self, resource_group): "type": "str", "upgradeSettings": { "drainTimeoutInMinutes": 0, - "maxBlockedNodes": "str", "maxSurge": "str", "maxUnavailable": "str", "nodeSoakDurationInMinutes": 0, "undrainableNodeBehavior": "str", }, - "upgradeSettingsBlueGreen": { - "batchSoakDurationInMinutes": 0, - "drainBatchSize": "str", - "drainTimeoutInMinutes": 0, - "finalSoakDurationInMinutes": 0, - }, - "upgradeStrategy": "str", "virtualMachineNodesStatus": [{"count": 0, "size": "str"}], - "virtualMachinesProfile": { - "scale": { - "autoscale": [{"maxCount": 0, "minCount": 0, "size": "str"}], - "manual": [{"count": 0, "size": "str"}], - } - }, + "virtualMachinesProfile": {"scale": {"manual": [{"count": 0, "size": "str"}]}}, "vmSize": "str", "vnetSubnetID": "str", "windowsProfile": {"disableOutboundNat": bool}, @@ -276,20 +245,6 @@ async def test_agent_pools_begin_abort_latest_operation(self, resource_group): # please add some check logic here by yourself # ... - @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) - @recorded_by_proxy_async - async def test_agent_pools_begin_complete_upgrade(self, resource_group): - response = await ( - await self.client.agent_pools.begin_complete_upgrade( - resource_group_name=resource_group.name, - resource_name="str", - agent_pool_name="str", - ) - ).result() # call '.result()' to poll until service return final result - - # please add some check logic here by yourself - # ... - @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) @recorded_by_proxy_async async def test_agent_pools_begin_delete_machines(self, resource_group): diff --git a/sdk/containerservice/azure-mgmt-containerservice/generated_tests/test_container_service_container_service_operations.py b/sdk/containerservice/azure-mgmt-containerservice/generated_tests/test_container_service_container_service_operations.py deleted file mode 100644 index 3f92bd83cc82..000000000000 --- a/sdk/containerservice/azure-mgmt-containerservice/generated_tests/test_container_service_container_service_operations.py +++ /dev/null @@ -1,29 +0,0 @@ -# coding=utf-8 -# -------------------------------------------------------------------------- -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT License. See License.txt in the project root for license information. -# Code generated by Microsoft (R) Python Code Generator. -# Changes may cause incorrect behavior and will be lost if the code is regenerated. -# -------------------------------------------------------------------------- -import pytest -from azure.mgmt.containerservice import ContainerServiceClient - -from devtools_testutils import AzureMgmtRecordedTestCase, RandomNameResourceGroupPreparer, recorded_by_proxy - -AZURE_LOCATION = "eastus" - - -@pytest.mark.skip("you may need to update the auto-generated test case before run it") -class TestContainerServiceContainerServiceOperations(AzureMgmtRecordedTestCase): - def setup_method(self, method): - self.client = self.create_mgmt_client(ContainerServiceClient) - - @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) - @recorded_by_proxy - def test_container_service_list_node_image_versions(self, resource_group): - response = self.client.container_service.list_node_image_versions( - location="str", - ) - result = [r for r in response] - # please add some check logic here by yourself - # ... diff --git a/sdk/containerservice/azure-mgmt-containerservice/generated_tests/test_container_service_container_service_operations_async.py b/sdk/containerservice/azure-mgmt-containerservice/generated_tests/test_container_service_container_service_operations_async.py deleted file mode 100644 index 69d36ecabe6d..000000000000 --- a/sdk/containerservice/azure-mgmt-containerservice/generated_tests/test_container_service_container_service_operations_async.py +++ /dev/null @@ -1,30 +0,0 @@ -# coding=utf-8 -# -------------------------------------------------------------------------- -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT License. See License.txt in the project root for license information. -# Code generated by Microsoft (R) Python Code Generator. -# Changes may cause incorrect behavior and will be lost if the code is regenerated. -# -------------------------------------------------------------------------- -import pytest -from azure.mgmt.containerservice.aio import ContainerServiceClient - -from devtools_testutils import AzureMgmtRecordedTestCase, RandomNameResourceGroupPreparer -from devtools_testutils.aio import recorded_by_proxy_async - -AZURE_LOCATION = "eastus" - - -@pytest.mark.skip("you may need to update the auto-generated test case before run it") -class TestContainerServiceContainerServiceOperationsAsync(AzureMgmtRecordedTestCase): - def setup_method(self, method): - self.client = self.create_mgmt_client(ContainerServiceClient, is_async=True) - - @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) - @recorded_by_proxy_async - async def test_container_service_list_node_image_versions(self, resource_group): - response = self.client.container_service.list_node_image_versions( - location="str", - ) - result = [r async for r in response] - # please add some check logic here by yourself - # ... diff --git a/sdk/containerservice/azure-mgmt-containerservice/generated_tests/test_container_service_jwt_authenticators_operations.py b/sdk/containerservice/azure-mgmt-containerservice/generated_tests/test_container_service_jwt_authenticators_operations.py deleted file mode 100644 index 213f7d4ce6e2..000000000000 --- a/sdk/containerservice/azure-mgmt-containerservice/generated_tests/test_container_service_jwt_authenticators_operations.py +++ /dev/null @@ -1,91 +0,0 @@ -# coding=utf-8 -# -------------------------------------------------------------------------- -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT License. See License.txt in the project root for license information. -# Code generated by Microsoft (R) Python Code Generator. -# Changes may cause incorrect behavior and will be lost if the code is regenerated. -# -------------------------------------------------------------------------- -import pytest -from azure.mgmt.containerservice import ContainerServiceClient - -from devtools_testutils import AzureMgmtRecordedTestCase, RandomNameResourceGroupPreparer, recorded_by_proxy - -AZURE_LOCATION = "eastus" - - -@pytest.mark.skip("you may need to update the auto-generated test case before run it") -class TestContainerServiceJWTAuthenticatorsOperations(AzureMgmtRecordedTestCase): - def setup_method(self, method): - self.client = self.create_mgmt_client(ContainerServiceClient) - - @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) - @recorded_by_proxy - def test_jwt_authenticators_get(self, resource_group): - response = self.client.jwt_authenticators.get( - resource_group_name=resource_group.name, - resource_name="str", - jwt_authenticator_name="str", - ) - - # please add some check logic here by yourself - # ... - - @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) - @recorded_by_proxy - def test_jwt_authenticators_begin_create_or_update(self, resource_group): - response = self.client.jwt_authenticators.begin_create_or_update( - resource_group_name=resource_group.name, - resource_name="str", - jwt_authenticator_name="str", - parameters={ - "properties": { - "claimMappings": { - "username": {"expression": "str"}, - "extra": [{"key": "str", "valueExpression": "str"}], - "groups": {"expression": "str"}, - "uid": {"expression": "str"}, - }, - "issuer": {"audiences": ["str"], "url": "str"}, - "claimValidationRules": [{"expression": "str", "message": "str"}], - "provisioningState": "str", - "userValidationRules": [{"expression": "str", "message": "str"}], - }, - "id": "str", - "name": "str", - "systemData": { - "createdAt": "2020-02-20 00:00:00", - "createdBy": "str", - "createdByType": "str", - "lastModifiedAt": "2020-02-20 00:00:00", - "lastModifiedBy": "str", - "lastModifiedByType": "str", - }, - "type": "str", - }, - ).result() # call '.result()' to poll until service return final result - - # please add some check logic here by yourself - # ... - - @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) - @recorded_by_proxy - def test_jwt_authenticators_begin_delete(self, resource_group): - response = self.client.jwt_authenticators.begin_delete( - resource_group_name=resource_group.name, - resource_name="str", - jwt_authenticator_name="str", - ).result() # call '.result()' to poll until service return final result - - # please add some check logic here by yourself - # ... - - @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) - @recorded_by_proxy - def test_jwt_authenticators_list_by_managed_cluster(self, resource_group): - response = self.client.jwt_authenticators.list_by_managed_cluster( - resource_group_name=resource_group.name, - resource_name="str", - ) - result = [r for r in response] - # please add some check logic here by yourself - # ... diff --git a/sdk/containerservice/azure-mgmt-containerservice/generated_tests/test_container_service_jwt_authenticators_operations_async.py b/sdk/containerservice/azure-mgmt-containerservice/generated_tests/test_container_service_jwt_authenticators_operations_async.py deleted file mode 100644 index 443ce317cca2..000000000000 --- a/sdk/containerservice/azure-mgmt-containerservice/generated_tests/test_container_service_jwt_authenticators_operations_async.py +++ /dev/null @@ -1,96 +0,0 @@ -# coding=utf-8 -# -------------------------------------------------------------------------- -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT License. See License.txt in the project root for license information. -# Code generated by Microsoft (R) Python Code Generator. -# Changes may cause incorrect behavior and will be lost if the code is regenerated. -# -------------------------------------------------------------------------- -import pytest -from azure.mgmt.containerservice.aio import ContainerServiceClient - -from devtools_testutils import AzureMgmtRecordedTestCase, RandomNameResourceGroupPreparer -from devtools_testutils.aio import recorded_by_proxy_async - -AZURE_LOCATION = "eastus" - - -@pytest.mark.skip("you may need to update the auto-generated test case before run it") -class TestContainerServiceJWTAuthenticatorsOperationsAsync(AzureMgmtRecordedTestCase): - def setup_method(self, method): - self.client = self.create_mgmt_client(ContainerServiceClient, is_async=True) - - @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) - @recorded_by_proxy_async - async def test_jwt_authenticators_get(self, resource_group): - response = await self.client.jwt_authenticators.get( - resource_group_name=resource_group.name, - resource_name="str", - jwt_authenticator_name="str", - ) - - # please add some check logic here by yourself - # ... - - @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) - @recorded_by_proxy_async - async def test_jwt_authenticators_begin_create_or_update(self, resource_group): - response = await ( - await self.client.jwt_authenticators.begin_create_or_update( - resource_group_name=resource_group.name, - resource_name="str", - jwt_authenticator_name="str", - parameters={ - "properties": { - "claimMappings": { - "username": {"expression": "str"}, - "extra": [{"key": "str", "valueExpression": "str"}], - "groups": {"expression": "str"}, - "uid": {"expression": "str"}, - }, - "issuer": {"audiences": ["str"], "url": "str"}, - "claimValidationRules": [{"expression": "str", "message": "str"}], - "provisioningState": "str", - "userValidationRules": [{"expression": "str", "message": "str"}], - }, - "id": "str", - "name": "str", - "systemData": { - "createdAt": "2020-02-20 00:00:00", - "createdBy": "str", - "createdByType": "str", - "lastModifiedAt": "2020-02-20 00:00:00", - "lastModifiedBy": "str", - "lastModifiedByType": "str", - }, - "type": "str", - }, - ) - ).result() # call '.result()' to poll until service return final result - - # please add some check logic here by yourself - # ... - - @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) - @recorded_by_proxy_async - async def test_jwt_authenticators_begin_delete(self, resource_group): - response = await ( - await self.client.jwt_authenticators.begin_delete( - resource_group_name=resource_group.name, - resource_name="str", - jwt_authenticator_name="str", - ) - ).result() # call '.result()' to poll until service return final result - - # please add some check logic here by yourself - # ... - - @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) - @recorded_by_proxy_async - async def test_jwt_authenticators_list_by_managed_cluster(self, resource_group): - response = self.client.jwt_authenticators.list_by_managed_cluster( - resource_group_name=resource_group.name, - resource_name="str", - ) - result = [r async for r in response] - # please add some check logic here by yourself - # ... diff --git a/sdk/containerservice/azure-mgmt-containerservice/generated_tests/test_container_service_load_balancers_operations.py b/sdk/containerservice/azure-mgmt-containerservice/generated_tests/test_container_service_load_balancers_operations.py deleted file mode 100644 index 6beca80132b4..000000000000 --- a/sdk/containerservice/azure-mgmt-containerservice/generated_tests/test_container_service_load_balancers_operations.py +++ /dev/null @@ -1,96 +0,0 @@ -# coding=utf-8 -# -------------------------------------------------------------------------- -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT License. See License.txt in the project root for license information. -# Code generated by Microsoft (R) Python Code Generator. -# Changes may cause incorrect behavior and will be lost if the code is regenerated. -# -------------------------------------------------------------------------- -import pytest -from azure.mgmt.containerservice import ContainerServiceClient - -from devtools_testutils import AzureMgmtRecordedTestCase, RandomNameResourceGroupPreparer, recorded_by_proxy - -AZURE_LOCATION = "eastus" - - -@pytest.mark.skip("you may need to update the auto-generated test case before run it") -class TestContainerServiceLoadBalancersOperations(AzureMgmtRecordedTestCase): - def setup_method(self, method): - self.client = self.create_mgmt_client(ContainerServiceClient) - - @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) - @recorded_by_proxy - def test_load_balancers_get(self, resource_group): - response = self.client.load_balancers.get( - resource_group_name=resource_group.name, - resource_name="str", - load_balancer_name="str", - ) - - # please add some check logic here by yourself - # ... - - @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) - @recorded_by_proxy - def test_load_balancers_create_or_update(self, resource_group): - response = self.client.load_balancers.create_or_update( - resource_group_name=resource_group.name, - resource_name="str", - load_balancer_name="str", - parameters={ - "id": "str", - "name": "str", - "properties": { - "primaryAgentPoolName": "str", - "allowServicePlacement": bool, - "nodeSelector": { - "matchExpressions": [{"key": "str", "operator": "str", "values": ["str"]}], - "matchLabels": ["str"], - }, - "provisioningState": "str", - "serviceLabelSelector": { - "matchExpressions": [{"key": "str", "operator": "str", "values": ["str"]}], - "matchLabels": ["str"], - }, - "serviceNamespaceSelector": { - "matchExpressions": [{"key": "str", "operator": "str", "values": ["str"]}], - "matchLabels": ["str"], - }, - }, - "systemData": { - "createdAt": "2020-02-20 00:00:00", - "createdBy": "str", - "createdByType": "str", - "lastModifiedAt": "2020-02-20 00:00:00", - "lastModifiedBy": "str", - "lastModifiedByType": "str", - }, - "type": "str", - }, - ) - - # please add some check logic here by yourself - # ... - - @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) - @recorded_by_proxy - def test_load_balancers_begin_delete(self, resource_group): - response = self.client.load_balancers.begin_delete( - resource_group_name=resource_group.name, - resource_name="str", - load_balancer_name="str", - ).result() # call '.result()' to poll until service return final result - - # please add some check logic here by yourself - # ... - - @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) - @recorded_by_proxy - def test_load_balancers_list_by_managed_cluster(self, resource_group): - response = self.client.load_balancers.list_by_managed_cluster( - resource_group_name=resource_group.name, - resource_name="str", - ) - result = [r for r in response] - # please add some check logic here by yourself - # ... diff --git a/sdk/containerservice/azure-mgmt-containerservice/generated_tests/test_container_service_load_balancers_operations_async.py b/sdk/containerservice/azure-mgmt-containerservice/generated_tests/test_container_service_load_balancers_operations_async.py deleted file mode 100644 index 83971f7d7920..000000000000 --- a/sdk/containerservice/azure-mgmt-containerservice/generated_tests/test_container_service_load_balancers_operations_async.py +++ /dev/null @@ -1,99 +0,0 @@ -# coding=utf-8 -# -------------------------------------------------------------------------- -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT License. See License.txt in the project root for license information. -# Code generated by Microsoft (R) Python Code Generator. -# Changes may cause incorrect behavior and will be lost if the code is regenerated. -# -------------------------------------------------------------------------- -import pytest -from azure.mgmt.containerservice.aio import ContainerServiceClient - -from devtools_testutils import AzureMgmtRecordedTestCase, RandomNameResourceGroupPreparer -from devtools_testutils.aio import recorded_by_proxy_async - -AZURE_LOCATION = "eastus" - - -@pytest.mark.skip("you may need to update the auto-generated test case before run it") -class TestContainerServiceLoadBalancersOperationsAsync(AzureMgmtRecordedTestCase): - def setup_method(self, method): - self.client = self.create_mgmt_client(ContainerServiceClient, is_async=True) - - @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) - @recorded_by_proxy_async - async def test_load_balancers_get(self, resource_group): - response = await self.client.load_balancers.get( - resource_group_name=resource_group.name, - resource_name="str", - load_balancer_name="str", - ) - - # please add some check logic here by yourself - # ... - - @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) - @recorded_by_proxy_async - async def test_load_balancers_create_or_update(self, resource_group): - response = await self.client.load_balancers.create_or_update( - resource_group_name=resource_group.name, - resource_name="str", - load_balancer_name="str", - parameters={ - "id": "str", - "name": "str", - "properties": { - "primaryAgentPoolName": "str", - "allowServicePlacement": bool, - "nodeSelector": { - "matchExpressions": [{"key": "str", "operator": "str", "values": ["str"]}], - "matchLabels": ["str"], - }, - "provisioningState": "str", - "serviceLabelSelector": { - "matchExpressions": [{"key": "str", "operator": "str", "values": ["str"]}], - "matchLabels": ["str"], - }, - "serviceNamespaceSelector": { - "matchExpressions": [{"key": "str", "operator": "str", "values": ["str"]}], - "matchLabels": ["str"], - }, - }, - "systemData": { - "createdAt": "2020-02-20 00:00:00", - "createdBy": "str", - "createdByType": "str", - "lastModifiedAt": "2020-02-20 00:00:00", - "lastModifiedBy": "str", - "lastModifiedByType": "str", - }, - "type": "str", - }, - ) - - # please add some check logic here by yourself - # ... - - @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) - @recorded_by_proxy_async - async def test_load_balancers_begin_delete(self, resource_group): - response = await ( - await self.client.load_balancers.begin_delete( - resource_group_name=resource_group.name, - resource_name="str", - load_balancer_name="str", - ) - ).result() # call '.result()' to poll until service return final result - - # please add some check logic here by yourself - # ... - - @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) - @recorded_by_proxy_async - async def test_load_balancers_list_by_managed_cluster(self, resource_group): - response = self.client.load_balancers.list_by_managed_cluster( - resource_group_name=resource_group.name, - resource_name="str", - ) - result = [r async for r in response] - # please add some check logic here by yourself - # ... diff --git a/sdk/containerservice/azure-mgmt-containerservice/generated_tests/test_container_service_machines_operations.py b/sdk/containerservice/azure-mgmt-containerservice/generated_tests/test_container_service_machines_operations.py index e04262d5cc14..be1358fed58c 100644 --- a/sdk/containerservice/azure-mgmt-containerservice/generated_tests/test_container_service_machines_operations.py +++ b/sdk/containerservice/azure-mgmt-containerservice/generated_tests/test_container_service_machines_operations.py @@ -31,187 +31,6 @@ def test_machines_get(self, resource_group): # please add some check logic here by yourself # ... - @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) - @recorded_by_proxy - def test_machines_begin_create_or_update(self, resource_group): - response = self.client.machines.begin_create_or_update( - resource_group_name=resource_group.name, - resource_name="str", - agent_pool_name="str", - machine_name="str", - parameters={ - "id": "str", - "name": "str", - "properties": { - "billing": {"spotMaxPrice": 0.0}, - "eTag": "str", - "evictionPolicy": "str", - "hardware": { - "gpuInstanceProfile": "str", - "gpuProfile": { - "driver": "str", - "driverType": "str", - "nvidia": {"managementMode": "str", "migStrategy": "str"}, - }, - "ultraSsdEnabled": bool, - "vmSize": "str", - }, - "kubernetes": { - "artifactStreamingProfile": {"enabled": bool}, - "currentOrchestratorVersion": "str", - "kubeletConfig": { - "allowedUnsafeSysctls": ["str"], - "containerLogMaxFiles": 0, - "containerLogMaxSizeMB": 0, - "cpuCfsQuota": bool, - "cpuCfsQuotaPeriod": "str", - "cpuManagerPolicy": "str", - "failSwapOn": bool, - "hardEvictionThreshold": { - "memoryAvailable": "str", - "nodeFsAvailable": "str", - "nodeFsInodesFree": "str", - }, - "imageGcHighThreshold": 0, - "imageGcLowThreshold": 0, - "kubeReserved": {"cpuMillicores": 0, "memoryMB": 0}, - "podMaxPids": 0, - "seccompDefault": "str", - "topologyManagerPolicy": "str", - }, - "kubeletDiskType": "str", - "maxPods": 0, - "nodeInitializationTaints": ["str"], - "nodeLabels": {"str": "str"}, - "nodeName": "str", - "nodeTaints": ["str"], - "orchestratorVersion": "str", - "workloadRuntime": "str", - }, - "localDNSProfile": { - "kubeDNSOverrides": { - "str": { - "cacheDurationInSeconds": 0, - "forwardDestination": "str", - "forwardPolicy": "str", - "maxConcurrent": 0, - "protocol": "str", - "queryLogging": "str", - "serveStale": "str", - "serveStaleDurationInSeconds": 0, - } - }, - "mode": "str", - "state": "str", - "vnetDNSOverrides": { - "str": { - "cacheDurationInSeconds": 0, - "forwardDestination": "str", - "forwardPolicy": "str", - "maxConcurrent": 0, - "protocol": "str", - "queryLogging": "str", - "serveStale": "str", - "serveStaleDurationInSeconds": 0, - } - }, - }, - "mode": "str", - "network": { - "enableNodePublicIP": bool, - "ipAddresses": [{"family": "str", "ip": "str"}], - "nodePublicIPPrefixID": "str", - "nodePublicIPTags": [{"ipTagType": "str", "tag": "str"}], - "podSubnetID": "str", - "vnetSubnetID": "str", - }, - "nodeImageVersion": "str", - "operatingSystem": { - "enableFIPS": bool, - "linuxProfile": { - "linuxOSConfig": { - "swapFileSizeMB": 0, - "sysctls": { - "fsAioMaxNr": 0, - "fsFileMax": 0, - "fsInotifyMaxUserWatches": 0, - "fsNrOpen": 0, - "kernelThreadsMax": 0, - "netCoreNetdevMaxBacklog": 0, - "netCoreOptmemMax": 0, - "netCoreRmemDefault": 0, - "netCoreRmemMax": 0, - "netCoreSomaxconn": 0, - "netCoreWmemDefault": 0, - "netCoreWmemMax": 0, - "netIpv4IpLocalPortRange": "str", - "netIpv4NeighDefaultGcThresh1": 0, - "netIpv4NeighDefaultGcThresh2": 0, - "netIpv4NeighDefaultGcThresh3": 0, - "netIpv4TcpFinTimeout": 0, - "netIpv4TcpKeepaliveProbes": 0, - "netIpv4TcpKeepaliveTime": 0, - "netIpv4TcpMaxSynBacklog": 0, - "netIpv4TcpMaxTwBuckets": 0, - "netIpv4TcpTwReuse": bool, - "netIpv4TcpkeepaliveIntvl": 0, - "netNetfilterNfConntrackBuckets": 0, - "netNetfilterNfConntrackMax": 0, - "vmMaxMapCount": 0, - "vmSwappiness": 0, - "vmVfsCachePressure": 0, - }, - "transparentHugePageDefrag": "str", - "transparentHugePageEnabled": "str", - }, - "messageOfTheDay": "str", - }, - "osDiskSizeGB": 0, - "osDiskType": "str", - "osSKU": "str", - "osType": "str", - "windowsProfile": {"disableOutboundNat": bool}, - }, - "priority": "str", - "provisioningState": "str", - "resourceId": "str", - "security": { - "enableEncryptionAtHost": bool, - "enableSecureBoot": bool, - "enableVTPM": bool, - "sshAccess": "str", - }, - "status": { - "creationTimestamp": "2020-02-20 00:00:00", - "driftAction": "str", - "driftReason": "str", - "provisioningError": { - "additionalInfo": [{"info": {}, "type": "str"}], - "code": "str", - "details": [...], - "message": "str", - "target": "str", - }, - "vmState": "str", - }, - "tags": {"str": "str"}, - }, - "systemData": { - "createdAt": "2020-02-20 00:00:00", - "createdBy": "str", - "createdByType": "str", - "lastModifiedAt": "2020-02-20 00:00:00", - "lastModifiedBy": "str", - "lastModifiedByType": "str", - }, - "type": "str", - "zones": ["str"], - }, - ).result() # call '.result()' to poll until service return final result - - # please add some check logic here by yourself - # ... - @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) @recorded_by_proxy def test_machines_list(self, resource_group): diff --git a/sdk/containerservice/azure-mgmt-containerservice/generated_tests/test_container_service_machines_operations_async.py b/sdk/containerservice/azure-mgmt-containerservice/generated_tests/test_container_service_machines_operations_async.py index fe4fd358aff2..05739238f386 100644 --- a/sdk/containerservice/azure-mgmt-containerservice/generated_tests/test_container_service_machines_operations_async.py +++ b/sdk/containerservice/azure-mgmt-containerservice/generated_tests/test_container_service_machines_operations_async.py @@ -32,189 +32,6 @@ async def test_machines_get(self, resource_group): # please add some check logic here by yourself # ... - @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) - @recorded_by_proxy_async - async def test_machines_begin_create_or_update(self, resource_group): - response = await ( - await self.client.machines.begin_create_or_update( - resource_group_name=resource_group.name, - resource_name="str", - agent_pool_name="str", - machine_name="str", - parameters={ - "id": "str", - "name": "str", - "properties": { - "billing": {"spotMaxPrice": 0.0}, - "eTag": "str", - "evictionPolicy": "str", - "hardware": { - "gpuInstanceProfile": "str", - "gpuProfile": { - "driver": "str", - "driverType": "str", - "nvidia": {"managementMode": "str", "migStrategy": "str"}, - }, - "ultraSsdEnabled": bool, - "vmSize": "str", - }, - "kubernetes": { - "artifactStreamingProfile": {"enabled": bool}, - "currentOrchestratorVersion": "str", - "kubeletConfig": { - "allowedUnsafeSysctls": ["str"], - "containerLogMaxFiles": 0, - "containerLogMaxSizeMB": 0, - "cpuCfsQuota": bool, - "cpuCfsQuotaPeriod": "str", - "cpuManagerPolicy": "str", - "failSwapOn": bool, - "hardEvictionThreshold": { - "memoryAvailable": "str", - "nodeFsAvailable": "str", - "nodeFsInodesFree": "str", - }, - "imageGcHighThreshold": 0, - "imageGcLowThreshold": 0, - "kubeReserved": {"cpuMillicores": 0, "memoryMB": 0}, - "podMaxPids": 0, - "seccompDefault": "str", - "topologyManagerPolicy": "str", - }, - "kubeletDiskType": "str", - "maxPods": 0, - "nodeInitializationTaints": ["str"], - "nodeLabels": {"str": "str"}, - "nodeName": "str", - "nodeTaints": ["str"], - "orchestratorVersion": "str", - "workloadRuntime": "str", - }, - "localDNSProfile": { - "kubeDNSOverrides": { - "str": { - "cacheDurationInSeconds": 0, - "forwardDestination": "str", - "forwardPolicy": "str", - "maxConcurrent": 0, - "protocol": "str", - "queryLogging": "str", - "serveStale": "str", - "serveStaleDurationInSeconds": 0, - } - }, - "mode": "str", - "state": "str", - "vnetDNSOverrides": { - "str": { - "cacheDurationInSeconds": 0, - "forwardDestination": "str", - "forwardPolicy": "str", - "maxConcurrent": 0, - "protocol": "str", - "queryLogging": "str", - "serveStale": "str", - "serveStaleDurationInSeconds": 0, - } - }, - }, - "mode": "str", - "network": { - "enableNodePublicIP": bool, - "ipAddresses": [{"family": "str", "ip": "str"}], - "nodePublicIPPrefixID": "str", - "nodePublicIPTags": [{"ipTagType": "str", "tag": "str"}], - "podSubnetID": "str", - "vnetSubnetID": "str", - }, - "nodeImageVersion": "str", - "operatingSystem": { - "enableFIPS": bool, - "linuxProfile": { - "linuxOSConfig": { - "swapFileSizeMB": 0, - "sysctls": { - "fsAioMaxNr": 0, - "fsFileMax": 0, - "fsInotifyMaxUserWatches": 0, - "fsNrOpen": 0, - "kernelThreadsMax": 0, - "netCoreNetdevMaxBacklog": 0, - "netCoreOptmemMax": 0, - "netCoreRmemDefault": 0, - "netCoreRmemMax": 0, - "netCoreSomaxconn": 0, - "netCoreWmemDefault": 0, - "netCoreWmemMax": 0, - "netIpv4IpLocalPortRange": "str", - "netIpv4NeighDefaultGcThresh1": 0, - "netIpv4NeighDefaultGcThresh2": 0, - "netIpv4NeighDefaultGcThresh3": 0, - "netIpv4TcpFinTimeout": 0, - "netIpv4TcpKeepaliveProbes": 0, - "netIpv4TcpKeepaliveTime": 0, - "netIpv4TcpMaxSynBacklog": 0, - "netIpv4TcpMaxTwBuckets": 0, - "netIpv4TcpTwReuse": bool, - "netIpv4TcpkeepaliveIntvl": 0, - "netNetfilterNfConntrackBuckets": 0, - "netNetfilterNfConntrackMax": 0, - "vmMaxMapCount": 0, - "vmSwappiness": 0, - "vmVfsCachePressure": 0, - }, - "transparentHugePageDefrag": "str", - "transparentHugePageEnabled": "str", - }, - "messageOfTheDay": "str", - }, - "osDiskSizeGB": 0, - "osDiskType": "str", - "osSKU": "str", - "osType": "str", - "windowsProfile": {"disableOutboundNat": bool}, - }, - "priority": "str", - "provisioningState": "str", - "resourceId": "str", - "security": { - "enableEncryptionAtHost": bool, - "enableSecureBoot": bool, - "enableVTPM": bool, - "sshAccess": "str", - }, - "status": { - "creationTimestamp": "2020-02-20 00:00:00", - "driftAction": "str", - "driftReason": "str", - "provisioningError": { - "additionalInfo": [{"info": {}, "type": "str"}], - "code": "str", - "details": [...], - "message": "str", - "target": "str", - }, - "vmState": "str", - }, - "tags": {"str": "str"}, - }, - "systemData": { - "createdAt": "2020-02-20 00:00:00", - "createdBy": "str", - "createdByType": "str", - "lastModifiedAt": "2020-02-20 00:00:00", - "lastModifiedBy": "str", - "lastModifiedByType": "str", - }, - "type": "str", - "zones": ["str"], - }, - ) - ).result() # call '.result()' to poll until service return final result - - # please add some check logic here by yourself - # ... - @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) @recorded_by_proxy_async async def test_machines_list(self, resource_group): diff --git a/sdk/containerservice/azure-mgmt-containerservice/generated_tests/test_container_service_managed_cluster_snapshots_operations.py b/sdk/containerservice/azure-mgmt-containerservice/generated_tests/test_container_service_managed_cluster_snapshots_operations.py deleted file mode 100644 index d02b777d78c1..000000000000 --- a/sdk/containerservice/azure-mgmt-containerservice/generated_tests/test_container_service_managed_cluster_snapshots_operations.py +++ /dev/null @@ -1,113 +0,0 @@ -# coding=utf-8 -# -------------------------------------------------------------------------- -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT License. See License.txt in the project root for license information. -# Code generated by Microsoft (R) Python Code Generator. -# Changes may cause incorrect behavior and will be lost if the code is regenerated. -# -------------------------------------------------------------------------- -import pytest -from azure.mgmt.containerservice import ContainerServiceClient - -from devtools_testutils import AzureMgmtRecordedTestCase, RandomNameResourceGroupPreparer, recorded_by_proxy - -AZURE_LOCATION = "eastus" - - -@pytest.mark.skip("you may need to update the auto-generated test case before run it") -class TestContainerServiceManagedClusterSnapshotsOperations(AzureMgmtRecordedTestCase): - def setup_method(self, method): - self.client = self.create_mgmt_client(ContainerServiceClient) - - @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) - @recorded_by_proxy - def test_managed_cluster_snapshots_get(self, resource_group): - response = self.client.managed_cluster_snapshots.get( - resource_group_name=resource_group.name, - resource_name="str", - ) - - # please add some check logic here by yourself - # ... - - @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) - @recorded_by_proxy - def test_managed_cluster_snapshots_create_or_update(self, resource_group): - response = self.client.managed_cluster_snapshots.create_or_update( - resource_group_name=resource_group.name, - resource_name="str", - parameters={ - "location": "str", - "id": "str", - "name": "str", - "properties": { - "creationData": {"sourceResourceId": "str"}, - "managedClusterPropertiesReadOnly": { - "enableRbac": bool, - "kubernetesVersion": "str", - "networkProfile": { - "loadBalancerSku": "str", - "networkMode": "str", - "networkPlugin": "str", - "networkPluginMode": "str", - "networkPolicy": "str", - }, - "sku": {"name": "str", "tier": "str"}, - }, - "snapshotType": "str", - }, - "systemData": { - "createdAt": "2020-02-20 00:00:00", - "createdBy": "str", - "createdByType": "str", - "lastModifiedAt": "2020-02-20 00:00:00", - "lastModifiedBy": "str", - "lastModifiedByType": "str", - }, - "tags": {"str": "str"}, - "type": "str", - }, - ) - - # please add some check logic here by yourself - # ... - - @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) - @recorded_by_proxy - def test_managed_cluster_snapshots_update_tags(self, resource_group): - response = self.client.managed_cluster_snapshots.update_tags( - resource_group_name=resource_group.name, - resource_name="str", - parameters={"tags": {"str": "str"}}, - ) - - # please add some check logic here by yourself - # ... - - @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) - @recorded_by_proxy - def test_managed_cluster_snapshots_delete(self, resource_group): - response = self.client.managed_cluster_snapshots.delete( - resource_group_name=resource_group.name, - resource_name="str", - ) - - # please add some check logic here by yourself - # ... - - @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) - @recorded_by_proxy - def test_managed_cluster_snapshots_list_by_resource_group(self, resource_group): - response = self.client.managed_cluster_snapshots.list_by_resource_group( - resource_group_name=resource_group.name, - ) - result = [r for r in response] - # please add some check logic here by yourself - # ... - - @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) - @recorded_by_proxy - def test_managed_cluster_snapshots_list(self, resource_group): - response = self.client.managed_cluster_snapshots.list() - result = [r for r in response] - # please add some check logic here by yourself - # ... diff --git a/sdk/containerservice/azure-mgmt-containerservice/generated_tests/test_container_service_managed_cluster_snapshots_operations_async.py b/sdk/containerservice/azure-mgmt-containerservice/generated_tests/test_container_service_managed_cluster_snapshots_operations_async.py deleted file mode 100644 index 3c60017f23e4..000000000000 --- a/sdk/containerservice/azure-mgmt-containerservice/generated_tests/test_container_service_managed_cluster_snapshots_operations_async.py +++ /dev/null @@ -1,114 +0,0 @@ -# coding=utf-8 -# -------------------------------------------------------------------------- -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT License. See License.txt in the project root for license information. -# Code generated by Microsoft (R) Python Code Generator. -# Changes may cause incorrect behavior and will be lost if the code is regenerated. -# -------------------------------------------------------------------------- -import pytest -from azure.mgmt.containerservice.aio import ContainerServiceClient - -from devtools_testutils import AzureMgmtRecordedTestCase, RandomNameResourceGroupPreparer -from devtools_testutils.aio import recorded_by_proxy_async - -AZURE_LOCATION = "eastus" - - -@pytest.mark.skip("you may need to update the auto-generated test case before run it") -class TestContainerServiceManagedClusterSnapshotsOperationsAsync(AzureMgmtRecordedTestCase): - def setup_method(self, method): - self.client = self.create_mgmt_client(ContainerServiceClient, is_async=True) - - @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) - @recorded_by_proxy_async - async def test_managed_cluster_snapshots_get(self, resource_group): - response = await self.client.managed_cluster_snapshots.get( - resource_group_name=resource_group.name, - resource_name="str", - ) - - # please add some check logic here by yourself - # ... - - @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) - @recorded_by_proxy_async - async def test_managed_cluster_snapshots_create_or_update(self, resource_group): - response = await self.client.managed_cluster_snapshots.create_or_update( - resource_group_name=resource_group.name, - resource_name="str", - parameters={ - "location": "str", - "id": "str", - "name": "str", - "properties": { - "creationData": {"sourceResourceId": "str"}, - "managedClusterPropertiesReadOnly": { - "enableRbac": bool, - "kubernetesVersion": "str", - "networkProfile": { - "loadBalancerSku": "str", - "networkMode": "str", - "networkPlugin": "str", - "networkPluginMode": "str", - "networkPolicy": "str", - }, - "sku": {"name": "str", "tier": "str"}, - }, - "snapshotType": "str", - }, - "systemData": { - "createdAt": "2020-02-20 00:00:00", - "createdBy": "str", - "createdByType": "str", - "lastModifiedAt": "2020-02-20 00:00:00", - "lastModifiedBy": "str", - "lastModifiedByType": "str", - }, - "tags": {"str": "str"}, - "type": "str", - }, - ) - - # please add some check logic here by yourself - # ... - - @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) - @recorded_by_proxy_async - async def test_managed_cluster_snapshots_update_tags(self, resource_group): - response = await self.client.managed_cluster_snapshots.update_tags( - resource_group_name=resource_group.name, - resource_name="str", - parameters={"tags": {"str": "str"}}, - ) - - # please add some check logic here by yourself - # ... - - @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) - @recorded_by_proxy_async - async def test_managed_cluster_snapshots_delete(self, resource_group): - response = await self.client.managed_cluster_snapshots.delete( - resource_group_name=resource_group.name, - resource_name="str", - ) - - # please add some check logic here by yourself - # ... - - @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) - @recorded_by_proxy_async - async def test_managed_cluster_snapshots_list_by_resource_group(self, resource_group): - response = self.client.managed_cluster_snapshots.list_by_resource_group( - resource_group_name=resource_group.name, - ) - result = [r async for r in response] - # please add some check logic here by yourself - # ... - - @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) - @recorded_by_proxy_async - async def test_managed_cluster_snapshots_list(self, resource_group): - response = self.client.managed_cluster_snapshots.list() - result = [r async for r in response] - # please add some check logic here by yourself - # ... diff --git a/sdk/containerservice/azure-mgmt-containerservice/generated_tests/test_container_service_managed_clusters_operations.py b/sdk/containerservice/azure-mgmt-containerservice/generated_tests/test_container_service_managed_clusters_operations.py index eb75be55665d..8c21ab50c583 100644 --- a/sdk/containerservice/azure-mgmt-containerservice/generated_tests/test_container_service_managed_clusters_operations.py +++ b/sdk/containerservice/azure-mgmt-containerservice/generated_tests/test_container_service_managed_clusters_operations.py @@ -82,15 +82,10 @@ def test_managed_clusters_begin_create_or_update(self, resource_group): "enableEncryptionAtHost": bool, "enableFIPS": bool, "enableNodePublicIP": bool, - "enableOSDiskFullCaching": bool, "enableUltraSSD": bool, "gatewayProfile": {"publicIPPrefixSize": 0}, "gpuInstanceProfile": "str", - "gpuProfile": { - "driver": "str", - "driverType": "str", - "nvidia": {"managementMode": "str", "migStrategy": "str"}, - }, + "gpuProfile": {"driver": "str"}, "hostGroupID": "str", "kubeletConfig": { "allowedUnsafeSysctls": ["str"], @@ -100,16 +95,9 @@ def test_managed_clusters_begin_create_or_update(self, resource_group): "cpuCfsQuotaPeriod": "str", "cpuManagerPolicy": "str", "failSwapOn": bool, - "hardEvictionThreshold": { - "memoryAvailable": "str", - "nodeFsAvailable": "str", - "nodeFsInodesFree": "str", - }, "imageGcHighThreshold": 0, "imageGcLowThreshold": 0, - "kubeReserved": {"cpuMillicores": 0, "memoryMB": 0}, "podMaxPids": 0, - "seccompDefault": "str", "topologyManagerPolicy": "str", }, "kubeletDiskType": "str", @@ -184,14 +172,9 @@ def test_managed_clusters_begin_create_or_update(self, resource_group): "networkProfile": { "allowedHostPorts": [{"portEnd": 0, "portStart": 0, "protocol": "str"}], "applicationSecurityGroups": ["str"], - "nodePublicIPPrefixIDs": ["str"], "nodePublicIPTags": [{"ipTagType": "str", "tag": "str"}], - "secondaryNetworkInterfaces": [ - {"enableAcceleratedNetworking": bool, "type": "str", "vnetSubnetId": "str"} - ], }, "nodeImageVersion": "str", - "nodeInitializationTaints": ["str"], "nodeLabels": {"str": "str"}, "nodePublicIPPrefixID": "str", "nodeTaints": ["str"], @@ -203,7 +186,6 @@ def test_managed_clusters_begin_create_or_update(self, resource_group): "podIPAllocationMode": "str", "podSubnetID": "str", "powerState": {"code": "str"}, - "preparedImageSpecificationProfile": {"preparedImageSpecificationId": "str"}, "provisioningState": "str", "proximityPlacementGroupID": "str", "scaleDownMode": "str", @@ -224,26 +206,13 @@ def test_managed_clusters_begin_create_or_update(self, resource_group): "type": "str", "upgradeSettings": { "drainTimeoutInMinutes": 0, - "maxBlockedNodes": "str", "maxSurge": "str", "maxUnavailable": "str", "nodeSoakDurationInMinutes": 0, "undrainableNodeBehavior": "str", }, - "upgradeSettingsBlueGreen": { - "batchSoakDurationInMinutes": 0, - "drainBatchSize": "str", - "drainTimeoutInMinutes": 0, - "finalSoakDurationInMinutes": 0, - }, - "upgradeStrategy": "str", "virtualMachineNodesStatus": [{"count": 0, "size": "str"}], - "virtualMachinesProfile": { - "scale": { - "autoscale": [{"maxCount": 0, "minCount": 0, "size": "str"}], - "manual": [{"count": 0, "size": "str"}], - } - }, + "virtualMachinesProfile": {"scale": {"manual": [{"count": 0, "size": "str"}]}}, "vmSize": "str", "vnetSubnetID": "str", "windowsProfile": {"disableOutboundNat": bool}, @@ -284,19 +253,7 @@ def test_managed_clusters_begin_create_or_update(self, resource_group): }, "autoUpgradeProfile": {"nodeOSUpgradeChannel": "str", "upgradeChannel": "str"}, "azureMonitorProfile": { - "appMonitoring": { - "autoInstrumentation": {"enabled": bool}, - "openTelemetryLogsAndTraces": {"enabled": bool, "grpcPort": 0, "httpPort": 0}, - "openTelemetryMetrics": {"enabled": bool, "grpcPort": 0, "httpPort": 0}, - }, - "containerInsights": { - "containerNetworkLogs": "str", - "disableCustomMetrics": bool, - "disablePrometheusMetricsScraping": bool, - "enabled": bool, - "logAnalyticsWorkspaceResourceId": "str", - "syslogPort": 0, - }, + "appMonitoring": {"autoInstrumentation": {"enabled": bool}}, "metrics": { "enabled": bool, "controlPlane": {"enabled": bool}, @@ -305,24 +262,15 @@ def test_managed_clusters_begin_create_or_update(self, resource_group): }, "azurePortalFQDN": "str", "bootstrapProfile": {"artifactSource": "str", "containerRegistryId": "str"}, - "controlPlaneScalingProfile": {"scalingSize": "str"}, - "creationData": {"sourceResourceId": "str"}, "currentKubernetesVersion": "str", "disableLocalAccounts": bool, "diskEncryptionSetID": "str", "dnsPrefix": "str", - "enableFIPS": bool, - "enableNamespaceResources": bool, "enableRBAC": bool, "fqdn": "str", "fqdnSubdomain": "str", - "healthMonitorProfile": { - "enableContinuousControlPlaneAndAddonMonitor": bool, - "enableOnDemandMonitor": bool, - }, "hostedSystemProfile": {"enabled": bool, "nodeSubnetID": "str", "systemNodeSubnetID": "str"}, "httpProxyConfig": { - "effectiveNoProxy": ["str"], "enabled": bool, "httpProxy": "str", "httpsProxy": "str", @@ -331,13 +279,8 @@ def test_managed_clusters_begin_create_or_update(self, resource_group): }, "identityProfile": {"str": {"clientId": "str", "objectId": "str", "resourceId": "str"}}, "ingressProfile": { - "applicationLoadBalancer": { - "enabled": bool, - "identity": {"clientId": "str", "objectId": "str", "resourceId": "str"}, - }, "gatewayAPI": {"installation": "str"}, "webAppRouting": { - "defaultDomain": {"domainName": "str", "enabled": bool}, "dnsZoneResourceIds": ["str"], "enabled": bool, "gatewayAPIImplementations": {"appRoutingIstio": {"mode": "str"}}, @@ -362,20 +305,9 @@ def test_managed_clusters_begin_create_or_update(self, resource_group): }, "dnsServiceIP": "str", "ipFamilies": ["str"], - "kubeProxyConfig": { - "enabled": bool, - "ipvsConfig": { - "scheduler": "str", - "tcpFinTimeoutSeconds": 0, - "tcpTimeoutSeconds": 0, - "udpTimeoutSeconds": 0, - }, - "mode": "str", - }, "loadBalancerProfile": { "allocatedOutboundPorts": 0, "backendPoolType": "str", - "clusterServiceLoadBalancerHealthProbeMode": "str", "effectiveOutboundIPs": [{"id": "str"}], "enableMultipleStandardLoadBalancers": bool, "idleTimeoutInMinutes": 0, @@ -387,9 +319,7 @@ def test_managed_clusters_begin_create_or_update(self, resource_group): "natGatewayProfile": { "effectiveOutboundIPs": [{"id": "str"}], "idleTimeoutInMinutes": 0, - "managedOutboundIPProfile": {"count": 0, "countIPv6": 0}, - "outboundIPPrefixes": {"publicIPPrefixes": ["str"]}, - "outboundIPs": {"publicIPs": ["str"]}, + "managedOutboundIPProfile": {"count": 0}, }, "networkDataplane": "str", "networkMode": "str", @@ -399,12 +329,10 @@ def test_managed_clusters_begin_create_or_update(self, resource_group): "outboundType": "str", "podCidr": "str", "podCidrs": ["str"], - "podLinkLocalAccess": "str", "serviceCidr": "str", "serviceCidrs": ["str"], "staticEgressGatewayProfile": {"enabled": bool}, }, - "nodeDisruptionProfile": {"nodeDisruptionPolicy": "str"}, "nodeProvisioningProfile": {"defaultNodePools": "str", "mode": "str"}, "nodeResourceGroup": "str", "nodeResourceGroupProfile": {"restrictionLevel": "str"}, @@ -445,7 +373,6 @@ def test_managed_clusters_begin_create_or_update(self, resource_group): "provisioningState": "str", "publicNetworkAccess": "str", "resourceUID": "str", - "schedulerProfile": {"schedulerInstanceProfiles": {"upstream": {"schedulerConfigMode": "str"}}}, "securityProfile": { "azureKeyVaultKms": { "enabled": bool, @@ -454,25 +381,8 @@ def test_managed_clusters_begin_create_or_update(self, resource_group): "keyVaultResourceId": "str", }, "customCATrustCertificates": [bytes("bytes", encoding="utf-8")], - "defender": { - "logAnalyticsWorkspaceResourceId": "str", - "securityGating": { - "allowSecretAccess": bool, - "enabled": bool, - "identities": [ - { - "azureContainerRegistry": "str", - "identity": {"clientId": "str", "objectId": "str", "resourceId": "str"}, - } - ], - }, - "securityMonitoring": {"enabled": bool}, - }, + "defender": {"logAnalyticsWorkspaceResourceId": "str", "securityMonitoring": {"enabled": bool}}, "imageCleaner": {"enabled": bool, "intervalHours": 0}, - "imageIntegrity": {"enabled": bool}, - "kubernetesResourceObjectEncryptionProfile": {"infrastructureEncryption": "str"}, - "nodeRestriction": {"enabled": bool}, - "serviceAccountImagePullProfile": {"defaultManagedIdentityId": "str", "enabled": bool}, "workloadIdentity": {"enabled": bool}, }, "serviceMeshProfile": { @@ -529,7 +439,7 @@ def test_managed_clusters_begin_create_or_update(self, resource_group): }, "workloadAutoScalerProfile": { "keda": {"enabled": bool}, - "verticalPodAutoscaler": {"enabled": bool, "addonAutoscaling": "str"}, + "verticalPodAutoscaler": {"enabled": bool}, }, }, "sku": {"name": "str", "tier": "str"}, @@ -757,18 +667,6 @@ def test_managed_clusters_list_outbound_network_dependencies_endpoints(self, res # please add some check logic here by yourself # ... - @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) - @recorded_by_proxy - def test_managed_clusters_begin_rebalance_load_balancers(self, resource_group): - response = self.client.managed_clusters.begin_rebalance_load_balancers( - resource_group_name=resource_group.name, - resource_name="str", - parameters={"loadBalancerNames": ["str"]}, - ).result() # call '.result()' to poll until service return final result - - # please add some check logic here by yourself - # ... - @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) @recorded_by_proxy def test_managed_clusters_get_upgrade_profile(self, resource_group): @@ -780,48 +678,6 @@ def test_managed_clusters_get_upgrade_profile(self, resource_group): # please add some check logic here by yourself # ... - @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) - @recorded_by_proxy - def test_managed_clusters_get_guardrails_versions(self, resource_group): - response = self.client.managed_clusters.get_guardrails_versions( - location="str", - version="str", - ) - - # please add some check logic here by yourself - # ... - - @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) - @recorded_by_proxy - def test_managed_clusters_list_guardrails_versions(self, resource_group): - response = self.client.managed_clusters.list_guardrails_versions( - location="str", - ) - result = [r for r in response] - # please add some check logic here by yourself - # ... - - @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) - @recorded_by_proxy - def test_managed_clusters_get_safeguards_versions(self, resource_group): - response = self.client.managed_clusters.get_safeguards_versions( - location="str", - version="str", - ) - - # please add some check logic here by yourself - # ... - - @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) - @recorded_by_proxy - def test_managed_clusters_list_safeguards_versions(self, resource_group): - response = self.client.managed_clusters.list_safeguards_versions( - location="str", - ) - result = [r for r in response] - # please add some check logic here by yourself - # ... - @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) @recorded_by_proxy def test_managed_clusters_get_mesh_revision_profile(self, resource_group): diff --git a/sdk/containerservice/azure-mgmt-containerservice/generated_tests/test_container_service_managed_clusters_operations_async.py b/sdk/containerservice/azure-mgmt-containerservice/generated_tests/test_container_service_managed_clusters_operations_async.py index a788a3a9c7af..1d9ed4e6d56f 100644 --- a/sdk/containerservice/azure-mgmt-containerservice/generated_tests/test_container_service_managed_clusters_operations_async.py +++ b/sdk/containerservice/azure-mgmt-containerservice/generated_tests/test_container_service_managed_clusters_operations_async.py @@ -89,15 +89,10 @@ async def test_managed_clusters_begin_create_or_update(self, resource_group): "enableEncryptionAtHost": bool, "enableFIPS": bool, "enableNodePublicIP": bool, - "enableOSDiskFullCaching": bool, "enableUltraSSD": bool, "gatewayProfile": {"publicIPPrefixSize": 0}, "gpuInstanceProfile": "str", - "gpuProfile": { - "driver": "str", - "driverType": "str", - "nvidia": {"managementMode": "str", "migStrategy": "str"}, - }, + "gpuProfile": {"driver": "str"}, "hostGroupID": "str", "kubeletConfig": { "allowedUnsafeSysctls": ["str"], @@ -107,16 +102,9 @@ async def test_managed_clusters_begin_create_or_update(self, resource_group): "cpuCfsQuotaPeriod": "str", "cpuManagerPolicy": "str", "failSwapOn": bool, - "hardEvictionThreshold": { - "memoryAvailable": "str", - "nodeFsAvailable": "str", - "nodeFsInodesFree": "str", - }, "imageGcHighThreshold": 0, "imageGcLowThreshold": 0, - "kubeReserved": {"cpuMillicores": 0, "memoryMB": 0}, "podMaxPids": 0, - "seccompDefault": "str", "topologyManagerPolicy": "str", }, "kubeletDiskType": "str", @@ -191,14 +179,9 @@ async def test_managed_clusters_begin_create_or_update(self, resource_group): "networkProfile": { "allowedHostPorts": [{"portEnd": 0, "portStart": 0, "protocol": "str"}], "applicationSecurityGroups": ["str"], - "nodePublicIPPrefixIDs": ["str"], "nodePublicIPTags": [{"ipTagType": "str", "tag": "str"}], - "secondaryNetworkInterfaces": [ - {"enableAcceleratedNetworking": bool, "type": "str", "vnetSubnetId": "str"} - ], }, "nodeImageVersion": "str", - "nodeInitializationTaints": ["str"], "nodeLabels": {"str": "str"}, "nodePublicIPPrefixID": "str", "nodeTaints": ["str"], @@ -210,7 +193,6 @@ async def test_managed_clusters_begin_create_or_update(self, resource_group): "podIPAllocationMode": "str", "podSubnetID": "str", "powerState": {"code": "str"}, - "preparedImageSpecificationProfile": {"preparedImageSpecificationId": "str"}, "provisioningState": "str", "proximityPlacementGroupID": "str", "scaleDownMode": "str", @@ -231,26 +213,13 @@ async def test_managed_clusters_begin_create_or_update(self, resource_group): "type": "str", "upgradeSettings": { "drainTimeoutInMinutes": 0, - "maxBlockedNodes": "str", "maxSurge": "str", "maxUnavailable": "str", "nodeSoakDurationInMinutes": 0, "undrainableNodeBehavior": "str", }, - "upgradeSettingsBlueGreen": { - "batchSoakDurationInMinutes": 0, - "drainBatchSize": "str", - "drainTimeoutInMinutes": 0, - "finalSoakDurationInMinutes": 0, - }, - "upgradeStrategy": "str", "virtualMachineNodesStatus": [{"count": 0, "size": "str"}], - "virtualMachinesProfile": { - "scale": { - "autoscale": [{"maxCount": 0, "minCount": 0, "size": "str"}], - "manual": [{"count": 0, "size": "str"}], - } - }, + "virtualMachinesProfile": {"scale": {"manual": [{"count": 0, "size": "str"}]}}, "vmSize": "str", "vnetSubnetID": "str", "windowsProfile": {"disableOutboundNat": bool}, @@ -291,19 +260,7 @@ async def test_managed_clusters_begin_create_or_update(self, resource_group): }, "autoUpgradeProfile": {"nodeOSUpgradeChannel": "str", "upgradeChannel": "str"}, "azureMonitorProfile": { - "appMonitoring": { - "autoInstrumentation": {"enabled": bool}, - "openTelemetryLogsAndTraces": {"enabled": bool, "grpcPort": 0, "httpPort": 0}, - "openTelemetryMetrics": {"enabled": bool, "grpcPort": 0, "httpPort": 0}, - }, - "containerInsights": { - "containerNetworkLogs": "str", - "disableCustomMetrics": bool, - "disablePrometheusMetricsScraping": bool, - "enabled": bool, - "logAnalyticsWorkspaceResourceId": "str", - "syslogPort": 0, - }, + "appMonitoring": {"autoInstrumentation": {"enabled": bool}}, "metrics": { "enabled": bool, "controlPlane": {"enabled": bool}, @@ -315,24 +272,15 @@ async def test_managed_clusters_begin_create_or_update(self, resource_group): }, "azurePortalFQDN": "str", "bootstrapProfile": {"artifactSource": "str", "containerRegistryId": "str"}, - "controlPlaneScalingProfile": {"scalingSize": "str"}, - "creationData": {"sourceResourceId": "str"}, "currentKubernetesVersion": "str", "disableLocalAccounts": bool, "diskEncryptionSetID": "str", "dnsPrefix": "str", - "enableFIPS": bool, - "enableNamespaceResources": bool, "enableRBAC": bool, "fqdn": "str", "fqdnSubdomain": "str", - "healthMonitorProfile": { - "enableContinuousControlPlaneAndAddonMonitor": bool, - "enableOnDemandMonitor": bool, - }, "hostedSystemProfile": {"enabled": bool, "nodeSubnetID": "str", "systemNodeSubnetID": "str"}, "httpProxyConfig": { - "effectiveNoProxy": ["str"], "enabled": bool, "httpProxy": "str", "httpsProxy": "str", @@ -341,13 +289,8 @@ async def test_managed_clusters_begin_create_or_update(self, resource_group): }, "identityProfile": {"str": {"clientId": "str", "objectId": "str", "resourceId": "str"}}, "ingressProfile": { - "applicationLoadBalancer": { - "enabled": bool, - "identity": {"clientId": "str", "objectId": "str", "resourceId": "str"}, - }, "gatewayAPI": {"installation": "str"}, "webAppRouting": { - "defaultDomain": {"domainName": "str", "enabled": bool}, "dnsZoneResourceIds": ["str"], "enabled": bool, "gatewayAPIImplementations": {"appRoutingIstio": {"mode": "str"}}, @@ -372,20 +315,9 @@ async def test_managed_clusters_begin_create_or_update(self, resource_group): }, "dnsServiceIP": "str", "ipFamilies": ["str"], - "kubeProxyConfig": { - "enabled": bool, - "ipvsConfig": { - "scheduler": "str", - "tcpFinTimeoutSeconds": 0, - "tcpTimeoutSeconds": 0, - "udpTimeoutSeconds": 0, - }, - "mode": "str", - }, "loadBalancerProfile": { "allocatedOutboundPorts": 0, "backendPoolType": "str", - "clusterServiceLoadBalancerHealthProbeMode": "str", "effectiveOutboundIPs": [{"id": "str"}], "enableMultipleStandardLoadBalancers": bool, "idleTimeoutInMinutes": 0, @@ -397,9 +329,7 @@ async def test_managed_clusters_begin_create_or_update(self, resource_group): "natGatewayProfile": { "effectiveOutboundIPs": [{"id": "str"}], "idleTimeoutInMinutes": 0, - "managedOutboundIPProfile": {"count": 0, "countIPv6": 0}, - "outboundIPPrefixes": {"publicIPPrefixes": ["str"]}, - "outboundIPs": {"publicIPs": ["str"]}, + "managedOutboundIPProfile": {"count": 0}, }, "networkDataplane": "str", "networkMode": "str", @@ -409,12 +339,10 @@ async def test_managed_clusters_begin_create_or_update(self, resource_group): "outboundType": "str", "podCidr": "str", "podCidrs": ["str"], - "podLinkLocalAccess": "str", "serviceCidr": "str", "serviceCidrs": ["str"], "staticEgressGatewayProfile": {"enabled": bool}, }, - "nodeDisruptionProfile": {"nodeDisruptionPolicy": "str"}, "nodeProvisioningProfile": {"defaultNodePools": "str", "mode": "str"}, "nodeResourceGroup": "str", "nodeResourceGroupProfile": {"restrictionLevel": "str"}, @@ -460,7 +388,6 @@ async def test_managed_clusters_begin_create_or_update(self, resource_group): "provisioningState": "str", "publicNetworkAccess": "str", "resourceUID": "str", - "schedulerProfile": {"schedulerInstanceProfiles": {"upstream": {"schedulerConfigMode": "str"}}}, "securityProfile": { "azureKeyVaultKms": { "enabled": bool, @@ -471,23 +398,9 @@ async def test_managed_clusters_begin_create_or_update(self, resource_group): "customCATrustCertificates": [bytes("bytes", encoding="utf-8")], "defender": { "logAnalyticsWorkspaceResourceId": "str", - "securityGating": { - "allowSecretAccess": bool, - "enabled": bool, - "identities": [ - { - "azureContainerRegistry": "str", - "identity": {"clientId": "str", "objectId": "str", "resourceId": "str"}, - } - ], - }, "securityMonitoring": {"enabled": bool}, }, "imageCleaner": {"enabled": bool, "intervalHours": 0}, - "imageIntegrity": {"enabled": bool}, - "kubernetesResourceObjectEncryptionProfile": {"infrastructureEncryption": "str"}, - "nodeRestriction": {"enabled": bool}, - "serviceAccountImagePullProfile": {"defaultManagedIdentityId": "str", "enabled": bool}, "workloadIdentity": {"enabled": bool}, }, "serviceMeshProfile": { @@ -544,7 +457,7 @@ async def test_managed_clusters_begin_create_or_update(self, resource_group): }, "workloadAutoScalerProfile": { "keda": {"enabled": bool}, - "verticalPodAutoscaler": {"enabled": bool, "addonAutoscaling": "str"}, + "verticalPodAutoscaler": {"enabled": bool}, }, }, "sku": {"name": "str", "tier": "str"}, @@ -793,20 +706,6 @@ async def test_managed_clusters_list_outbound_network_dependencies_endpoints(sel # please add some check logic here by yourself # ... - @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) - @recorded_by_proxy_async - async def test_managed_clusters_begin_rebalance_load_balancers(self, resource_group): - response = await ( - await self.client.managed_clusters.begin_rebalance_load_balancers( - resource_group_name=resource_group.name, - resource_name="str", - parameters={"loadBalancerNames": ["str"]}, - ) - ).result() # call '.result()' to poll until service return final result - - # please add some check logic here by yourself - # ... - @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) @recorded_by_proxy_async async def test_managed_clusters_get_upgrade_profile(self, resource_group): @@ -818,48 +717,6 @@ async def test_managed_clusters_get_upgrade_profile(self, resource_group): # please add some check logic here by yourself # ... - @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) - @recorded_by_proxy_async - async def test_managed_clusters_get_guardrails_versions(self, resource_group): - response = await self.client.managed_clusters.get_guardrails_versions( - location="str", - version="str", - ) - - # please add some check logic here by yourself - # ... - - @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) - @recorded_by_proxy_async - async def test_managed_clusters_list_guardrails_versions(self, resource_group): - response = self.client.managed_clusters.list_guardrails_versions( - location="str", - ) - result = [r async for r in response] - # please add some check logic here by yourself - # ... - - @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) - @recorded_by_proxy_async - async def test_managed_clusters_get_safeguards_versions(self, resource_group): - response = await self.client.managed_clusters.get_safeguards_versions( - location="str", - version="str", - ) - - # please add some check logic here by yourself - # ... - - @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) - @recorded_by_proxy_async - async def test_managed_clusters_list_safeguards_versions(self, resource_group): - response = self.client.managed_clusters.list_safeguards_versions( - location="str", - ) - result = [r async for r in response] - # please add some check logic here by yourself - # ... - @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) @recorded_by_proxy_async async def test_managed_clusters_get_mesh_revision_profile(self, resource_group): diff --git a/sdk/containerservice/azure-mgmt-containerservice/generated_tests/test_container_service_mesh_memberships_operations.py b/sdk/containerservice/azure-mgmt-containerservice/generated_tests/test_container_service_mesh_memberships_operations.py deleted file mode 100644 index 556954334154..000000000000 --- a/sdk/containerservice/azure-mgmt-containerservice/generated_tests/test_container_service_mesh_memberships_operations.py +++ /dev/null @@ -1,86 +0,0 @@ -# coding=utf-8 -# -------------------------------------------------------------------------- -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT License. See License.txt in the project root for license information. -# Code generated by Microsoft (R) Python Code Generator. -# Changes may cause incorrect behavior and will be lost if the code is regenerated. -# -------------------------------------------------------------------------- -import pytest -from azure.mgmt.containerservice import ContainerServiceClient - -from devtools_testutils import AzureMgmtRecordedTestCase, RandomNameResourceGroupPreparer, recorded_by_proxy - -AZURE_LOCATION = "eastus" - - -@pytest.mark.skip("you may need to update the auto-generated test case before run it") -class TestContainerServiceMeshMembershipsOperations(AzureMgmtRecordedTestCase): - def setup_method(self, method): - self.client = self.create_mgmt_client(ContainerServiceClient) - - @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) - @recorded_by_proxy - def test_mesh_memberships_get(self, resource_group): - response = self.client.mesh_memberships.get( - resource_group_name=resource_group.name, - resource_name="str", - mesh_membership_name="str", - ) - - # please add some check logic here by yourself - # ... - - @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) - @recorded_by_proxy - def test_mesh_memberships_begin_create_or_update(self, resource_group): - response = self.client.mesh_memberships.begin_create_or_update( - resource_group_name=resource_group.name, - resource_name="str", - mesh_membership_name="str", - parameters={ - "eTag": "str", - "id": "str", - "managedBy": "str", - "name": "str", - "properties": { - "managedMeshID": "str", - "privateConnectProfile": {"privateIpAddress": "str", "subnetResourceId": "str"}, - "provisioningState": "str", - }, - "systemData": { - "createdAt": "2020-02-20 00:00:00", - "createdBy": "str", - "createdByType": "str", - "lastModifiedAt": "2020-02-20 00:00:00", - "lastModifiedBy": "str", - "lastModifiedByType": "str", - }, - "type": "str", - }, - ).result() # call '.result()' to poll until service return final result - - # please add some check logic here by yourself - # ... - - @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) - @recorded_by_proxy - def test_mesh_memberships_begin_delete(self, resource_group): - response = self.client.mesh_memberships.begin_delete( - resource_group_name=resource_group.name, - resource_name="str", - mesh_membership_name="str", - ).result() # call '.result()' to poll until service return final result - - # please add some check logic here by yourself - # ... - - @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) - @recorded_by_proxy - def test_mesh_memberships_list_by_managed_cluster(self, resource_group): - response = self.client.mesh_memberships.list_by_managed_cluster( - resource_group_name=resource_group.name, - resource_name="str", - ) - result = [r for r in response] - # please add some check logic here by yourself - # ... diff --git a/sdk/containerservice/azure-mgmt-containerservice/generated_tests/test_container_service_mesh_memberships_operations_async.py b/sdk/containerservice/azure-mgmt-containerservice/generated_tests/test_container_service_mesh_memberships_operations_async.py deleted file mode 100644 index 87c7b2cd23d9..000000000000 --- a/sdk/containerservice/azure-mgmt-containerservice/generated_tests/test_container_service_mesh_memberships_operations_async.py +++ /dev/null @@ -1,91 +0,0 @@ -# coding=utf-8 -# -------------------------------------------------------------------------- -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT License. See License.txt in the project root for license information. -# Code generated by Microsoft (R) Python Code Generator. -# Changes may cause incorrect behavior and will be lost if the code is regenerated. -# -------------------------------------------------------------------------- -import pytest -from azure.mgmt.containerservice.aio import ContainerServiceClient - -from devtools_testutils import AzureMgmtRecordedTestCase, RandomNameResourceGroupPreparer -from devtools_testutils.aio import recorded_by_proxy_async - -AZURE_LOCATION = "eastus" - - -@pytest.mark.skip("you may need to update the auto-generated test case before run it") -class TestContainerServiceMeshMembershipsOperationsAsync(AzureMgmtRecordedTestCase): - def setup_method(self, method): - self.client = self.create_mgmt_client(ContainerServiceClient, is_async=True) - - @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) - @recorded_by_proxy_async - async def test_mesh_memberships_get(self, resource_group): - response = await self.client.mesh_memberships.get( - resource_group_name=resource_group.name, - resource_name="str", - mesh_membership_name="str", - ) - - # please add some check logic here by yourself - # ... - - @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) - @recorded_by_proxy_async - async def test_mesh_memberships_begin_create_or_update(self, resource_group): - response = await ( - await self.client.mesh_memberships.begin_create_or_update( - resource_group_name=resource_group.name, - resource_name="str", - mesh_membership_name="str", - parameters={ - "eTag": "str", - "id": "str", - "managedBy": "str", - "name": "str", - "properties": { - "managedMeshID": "str", - "privateConnectProfile": {"privateIpAddress": "str", "subnetResourceId": "str"}, - "provisioningState": "str", - }, - "systemData": { - "createdAt": "2020-02-20 00:00:00", - "createdBy": "str", - "createdByType": "str", - "lastModifiedAt": "2020-02-20 00:00:00", - "lastModifiedBy": "str", - "lastModifiedByType": "str", - }, - "type": "str", - }, - ) - ).result() # call '.result()' to poll until service return final result - - # please add some check logic here by yourself - # ... - - @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) - @recorded_by_proxy_async - async def test_mesh_memberships_begin_delete(self, resource_group): - response = await ( - await self.client.mesh_memberships.begin_delete( - resource_group_name=resource_group.name, - resource_name="str", - mesh_membership_name="str", - ) - ).result() # call '.result()' to poll until service return final result - - # please add some check logic here by yourself - # ... - - @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) - @recorded_by_proxy_async - async def test_mesh_memberships_list_by_managed_cluster(self, resource_group): - response = self.client.mesh_memberships.list_by_managed_cluster( - resource_group_name=resource_group.name, - resource_name="str", - ) - result = [r async for r in response] - # please add some check logic here by yourself - # ... diff --git a/sdk/containerservice/azure-mgmt-containerservice/generated_tests/test_container_service_operation_status_result_operations.py b/sdk/containerservice/azure-mgmt-containerservice/generated_tests/test_container_service_operation_status_result_operations.py deleted file mode 100644 index 638e238e522f..000000000000 --- a/sdk/containerservice/azure-mgmt-containerservice/generated_tests/test_container_service_operation_status_result_operations.py +++ /dev/null @@ -1,55 +0,0 @@ -# coding=utf-8 -# -------------------------------------------------------------------------- -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT License. See License.txt in the project root for license information. -# Code generated by Microsoft (R) Python Code Generator. -# Changes may cause incorrect behavior and will be lost if the code is regenerated. -# -------------------------------------------------------------------------- -import pytest -from azure.mgmt.containerservice import ContainerServiceClient - -from devtools_testutils import AzureMgmtRecordedTestCase, RandomNameResourceGroupPreparer, recorded_by_proxy - -AZURE_LOCATION = "eastus" - - -@pytest.mark.skip("you may need to update the auto-generated test case before run it") -class TestContainerServiceOperationStatusResultOperations(AzureMgmtRecordedTestCase): - def setup_method(self, method): - self.client = self.create_mgmt_client(ContainerServiceClient) - - @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) - @recorded_by_proxy - def test_operation_status_result_get_by_agent_pool(self, resource_group): - response = self.client.operation_status_result.get_by_agent_pool( - resource_group_name=resource_group.name, - resource_name="str", - agent_pool_name="str", - operation_id="str", - ) - - # please add some check logic here by yourself - # ... - - @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) - @recorded_by_proxy - def test_operation_status_result_list(self, resource_group): - response = self.client.operation_status_result.list( - resource_group_name=resource_group.name, - resource_name="str", - ) - result = [r for r in response] - # please add some check logic here by yourself - # ... - - @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) - @recorded_by_proxy - def test_operation_status_result_get(self, resource_group): - response = self.client.operation_status_result.get( - resource_group_name=resource_group.name, - resource_name="str", - operation_id="str", - ) - - # please add some check logic here by yourself - # ... diff --git a/sdk/containerservice/azure-mgmt-containerservice/generated_tests/test_container_service_operation_status_result_operations_async.py b/sdk/containerservice/azure-mgmt-containerservice/generated_tests/test_container_service_operation_status_result_operations_async.py deleted file mode 100644 index 1ca784249fbe..000000000000 --- a/sdk/containerservice/azure-mgmt-containerservice/generated_tests/test_container_service_operation_status_result_operations_async.py +++ /dev/null @@ -1,56 +0,0 @@ -# coding=utf-8 -# -------------------------------------------------------------------------- -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT License. See License.txt in the project root for license information. -# Code generated by Microsoft (R) Python Code Generator. -# Changes may cause incorrect behavior and will be lost if the code is regenerated. -# -------------------------------------------------------------------------- -import pytest -from azure.mgmt.containerservice.aio import ContainerServiceClient - -from devtools_testutils import AzureMgmtRecordedTestCase, RandomNameResourceGroupPreparer -from devtools_testutils.aio import recorded_by_proxy_async - -AZURE_LOCATION = "eastus" - - -@pytest.mark.skip("you may need to update the auto-generated test case before run it") -class TestContainerServiceOperationStatusResultOperationsAsync(AzureMgmtRecordedTestCase): - def setup_method(self, method): - self.client = self.create_mgmt_client(ContainerServiceClient, is_async=True) - - @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) - @recorded_by_proxy_async - async def test_operation_status_result_get_by_agent_pool(self, resource_group): - response = await self.client.operation_status_result.get_by_agent_pool( - resource_group_name=resource_group.name, - resource_name="str", - agent_pool_name="str", - operation_id="str", - ) - - # please add some check logic here by yourself - # ... - - @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) - @recorded_by_proxy_async - async def test_operation_status_result_list(self, resource_group): - response = self.client.operation_status_result.list( - resource_group_name=resource_group.name, - resource_name="str", - ) - result = [r async for r in response] - # please add some check logic here by yourself - # ... - - @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) - @recorded_by_proxy_async - async def test_operation_status_result_get(self, resource_group): - response = await self.client.operation_status_result.get( - resource_group_name=resource_group.name, - resource_name="str", - operation_id="str", - ) - - # please add some check logic here by yourself - # ... diff --git a/sdk/containerservice/azure-mgmt-containerservice/generated_tests/test_container_service_vm_skus_operations.py b/sdk/containerservice/azure-mgmt-containerservice/generated_tests/test_container_service_vm_skus_operations.py deleted file mode 100644 index a4936ed3c7e4..000000000000 --- a/sdk/containerservice/azure-mgmt-containerservice/generated_tests/test_container_service_vm_skus_operations.py +++ /dev/null @@ -1,29 +0,0 @@ -# coding=utf-8 -# -------------------------------------------------------------------------- -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT License. See License.txt in the project root for license information. -# Code generated by Microsoft (R) Python Code Generator. -# Changes may cause incorrect behavior and will be lost if the code is regenerated. -# -------------------------------------------------------------------------- -import pytest -from azure.mgmt.containerservice import ContainerServiceClient - -from devtools_testutils import AzureMgmtRecordedTestCase, RandomNameResourceGroupPreparer, recorded_by_proxy - -AZURE_LOCATION = "eastus" - - -@pytest.mark.skip("you may need to update the auto-generated test case before run it") -class TestContainerServiceVmSkusOperations(AzureMgmtRecordedTestCase): - def setup_method(self, method): - self.client = self.create_mgmt_client(ContainerServiceClient) - - @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) - @recorded_by_proxy - def test_vm_skus_list(self, resource_group): - response = self.client.vm_skus.list( - location="str", - ) - result = [r for r in response] - # please add some check logic here by yourself - # ... diff --git a/sdk/containerservice/azure-mgmt-containerservice/generated_tests/test_container_service_vm_skus_operations_async.py b/sdk/containerservice/azure-mgmt-containerservice/generated_tests/test_container_service_vm_skus_operations_async.py deleted file mode 100644 index 0b59f282b641..000000000000 --- a/sdk/containerservice/azure-mgmt-containerservice/generated_tests/test_container_service_vm_skus_operations_async.py +++ /dev/null @@ -1,30 +0,0 @@ -# coding=utf-8 -# -------------------------------------------------------------------------- -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT License. See License.txt in the project root for license information. -# Code generated by Microsoft (R) Python Code Generator. -# Changes may cause incorrect behavior and will be lost if the code is regenerated. -# -------------------------------------------------------------------------- -import pytest -from azure.mgmt.containerservice.aio import ContainerServiceClient - -from devtools_testutils import AzureMgmtRecordedTestCase, RandomNameResourceGroupPreparer -from devtools_testutils.aio import recorded_by_proxy_async - -AZURE_LOCATION = "eastus" - - -@pytest.mark.skip("you may need to update the auto-generated test case before run it") -class TestContainerServiceVmSkusOperationsAsync(AzureMgmtRecordedTestCase): - def setup_method(self, method): - self.client = self.create_mgmt_client(ContainerServiceClient, is_async=True) - - @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) - @recorded_by_proxy_async - async def test_vm_skus_list(self, resource_group): - response = self.client.vm_skus.list( - location="str", - ) - result = [r async for r in response] - # please add some check logic here by yourself - # ... diff --git a/sdk/containerservice/azure-mgmt-containerservice/pyproject.toml b/sdk/containerservice/azure-mgmt-containerservice/pyproject.toml index e73a285bb3be..b52335eb91e1 100644 --- a/sdk/containerservice/azure-mgmt-containerservice/pyproject.toml +++ b/sdk/containerservice/azure-mgmt-containerservice/pyproject.toml @@ -13,7 +13,7 @@ authors = [ description = "Microsoft Azure Containerservice Management Client Library for Python" license = "MIT" classifiers = [ - "Development Status :: 4 - Beta", + "Development Status :: 5 - Production/Stable", "Programming Language :: Python", "Programming Language :: Python :: 3 :: Only", "Programming Language :: Python :: 3", @@ -77,7 +77,7 @@ verifytypes = false package_name = "azure-mgmt-containerservice" package_pprint_name = "Container Service Management" package_doc_id = "container-service" -is_stable = false +is_stable = true sample_link = "" title = "ContainerServiceClient" package_nspkg = "azure-mgmt-nspkg" diff --git a/sdk/containerservice/azure-mgmt-containerservice/tsp-location.yaml b/sdk/containerservice/azure-mgmt-containerservice/tsp-location.yaml index 442d7469ada8..0d0d1074da69 100644 --- a/sdk/containerservice/azure-mgmt-containerservice/tsp-location.yaml +++ b/sdk/containerservice/azure-mgmt-containerservice/tsp-location.yaml @@ -1,4 +1,4 @@ directory: specification/containerservice/resource-manager/Microsoft.ContainerService/aks -commit: 736baa6d7d8bec3c6aaf1f16e77e78846eda4871 +commit: 532545feb236d55064e4fa922f3fa38517857ba8 repo: Azure/azure-rest-api-specs additionalDirectories: