From c837cd560389fd6e1a875cc9be978f9b24ee827a Mon Sep 17 00:00:00 2001 From: Bharath Griddaluru Date: Thu, 11 Jun 2026 23:10:15 -0700 Subject: [PATCH 01/18] Add upgradeassessment resource type --- .../upgradeAssessments/UpgradeAssessment.tsp | 94 +++ .../GetUpgradeAssessments.json | 121 ++++ .../ListUpgradeAssessments.json | 71 +++ .../upgradeAssessments/main.tsp | 33 ++ .../upgradeAssessments/models.tsp | 208 +++++++ .../examples/GetUpgradeAssessments.json | 121 ++++ .../examples/ListUpgradeAssessments.json | 71 +++ .../upgradeAssessments.json | 541 ++++++++++++++++++ .../upgradeAssessments/tspconfig.yaml | 50 ++ 9 files changed, 1310 insertions(+) create mode 100644 specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/upgradeAssessments/UpgradeAssessment.tsp create mode 100644 specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/upgradeAssessments/examples/2026-06-15-preview/GetUpgradeAssessments.json create mode 100644 specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/upgradeAssessments/examples/2026-06-15-preview/ListUpgradeAssessments.json create mode 100644 specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/upgradeAssessments/main.tsp create mode 100644 specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/upgradeAssessments/models.tsp create mode 100644 specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/upgradeAssessments/preview/2026-06-15-preview/examples/GetUpgradeAssessments.json create mode 100644 specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/upgradeAssessments/preview/2026-06-15-preview/examples/ListUpgradeAssessments.json create mode 100644 specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/upgradeAssessments/preview/2026-06-15-preview/upgradeAssessments.json create mode 100644 specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/upgradeAssessments/tspconfig.yaml diff --git a/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/upgradeAssessments/UpgradeAssessment.tsp b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/upgradeAssessments/UpgradeAssessment.tsp new file mode 100644 index 000000000000..e256a4e4a308 --- /dev/null +++ b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/upgradeAssessments/UpgradeAssessment.tsp @@ -0,0 +1,94 @@ +import "@azure-tools/typespec-azure-core"; +import "@azure-tools/typespec-azure-resource-manager"; +import "@typespec/rest"; +import "./models.tsp"; + +using TypeSpec.Rest; +using Azure.Core; +using Azure.ResourceManager; +using Azure.ResourceManager.Foundations; +using TypeSpec.Http; + +namespace Microsoft.KubernetesConfiguration; + +/** + * ARM resource representing a Kubernetes cluster upgrade assessment. + */ +model UpgradeAssessment + is Azure.ResourceManager.ProxyResource { + ...ResourceNameParameter< + Resource = UpgradeAssessment, + KeyName = "upgradeAssessmentName", + SegmentName = "upgradeAssessments", + NamePattern = "^[a-z]([a-z0-9._-]{0,126}[a-z0-9])?$" + >; +} + +/** + * Operations alias for UpgradeAssessments using the cluster extension routing pattern. + * Generates URLs of the form: + * /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{clusterRp}/{clusterResourceName}/{clusterName}/providers/Microsoft.KubernetesConfiguration/upgradeAssessments[/{upgradeAssessmentName}] + */ +alias UpgradeAssessmentOps = Azure.ResourceManager.Legacy.ExtensionOperations< + { + ...ApiVersionParameter; + ...SubscriptionIdParameter; + ...ResourceGroupParameter; + + /** + * The Kubernetes cluster RP - i.e. Microsoft.ContainerService, Microsoft.Kubernetes, + * Microsoft.HybridContainerService, Microsoft.KubernetesConfiguration. + */ + @path + @segment("providers") + @key + @pattern("^Microsoft\\.(ContainerService|Kubernetes|HybridContainerService|KubernetesConfiguration)$") + clusterRp: string; + + /** + * The Kubernetes cluster resource name - i.e. managedClusters, connectedClusters, + * provisionedClusters, appliances. + */ + @key + @path + @pattern("^[a-zA-Z]+$") + clusterResourceName: string; + + /** + * The name of the kubernetes cluster. + */ + @key + @path + @pattern("^[a-zA-Z0-9][a-zA-Z0-9-_.]{0,62}$") + clusterName: string; + }, + { + ...Azure.ResourceManager.Extension.ExtensionProviderNamespace; + ...ParentKeysOf; + }, + { + ...Azure.ResourceManager.Extension.ExtensionProviderNamespace; + ...KeysOf; + } +>; + +@armResourceOperations(#{ allowStaticRoutes: true, omitTags: true }) +interface UpgradeAssessments { + /** + * Get the upgrade assessment for a cluster. + */ + @tag("UpgradeAssessments") + get is UpgradeAssessmentOps.Read; + + /** + * List upgrade assessments for the cluster. + */ + @tag("UpgradeAssessments") + list is UpgradeAssessmentOps.List; +} + +@@doc(UpgradeAssessment.name, "Name of the UpgradeAssessments resource."); +@@doc( + UpgradeAssessment.properties, + "Properties of the UpgradeAssessments resource." +); diff --git a/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/upgradeAssessments/examples/2026-06-15-preview/GetUpgradeAssessments.json b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/upgradeAssessments/examples/2026-06-15-preview/GetUpgradeAssessments.json new file mode 100644 index 000000000000..f6118b78ef00 --- /dev/null +++ b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/upgradeAssessments/examples/2026-06-15-preview/GetUpgradeAssessments.json @@ -0,0 +1,121 @@ +{ + "title": "Get Upgrade Assessment", + "operationId": "UpgradeAssessments_Get", + "parameters": { + "subscriptionId": "00000000-0000-0000-0000-000000000001", + "resourceGroupName": "rg1", + "clusterRp": "Microsoft.Kubernetes", + "clusterResourceName": "connectedClusters", + "clusterName": "clusterName1", + "upgradeAssessmentName": "default", + "api-version": "2026-06-15-preview" + }, + "responses": { + "200": { + "body": { + "id": "/subscriptions/00000000-0000-0000-0000-000000000001/resourceGroups/rg1/providers/Microsoft.Kubernetes/connectedClusters/clusterName1/providers/Microsoft.KubernetesConfiguration/upgradeAssessments/default", + "name": "default", + "type": "Microsoft.KubernetesConfiguration/upgradeAssessments", + "systemData": { + "createdBy": "string", + "createdByType": "Application", + "createdAt": "2026-06-02T10:15:00.000Z", + "lastModifiedBy": "string", + "lastModifiedByType": "Application", + "lastModifiedAt": "2026-06-02T10:15:00.000Z" + }, + "properties": { + "currentKubernetesVersion": "1.27.9", + "targetKubernetesVersion": "1.30.0", + "assessmentTime": "2026-06-02T10:15:00Z", + "overallSeverity": "Critical", + "componentCompatibility": [ + { + "name": "kube-proxy", + "version": "1.27.9", + "compatibilityStatus": "Compatible", + "severity": "Pass" + }, + { + "name": "coredns", + "version": "1.10.1", + "compatibilityStatus": "Compatible", + "severity": "Pass" + }, + { + "name": "cert-manager", + "version": "1.8.0", + "compatibilityStatus": "Incompatible", + "severity": "Critical", + "minCompatibleVersion": "1.12.0", + "notes": "cert-manager v1.8.0 does not support Kubernetes 1.30+. Upgrade to >= 1.12.0." + }, + { + "name": "ingress-nginx", + "version": "1.2.1", + "compatibilityStatus": "Incompatible", + "severity": "Critical", + "minCompatibleVersion": "1.9.0", + "notes": "ingress-nginx v1.2.1 uses networking.k8s.io/v1beta1 which is removed in Kubernetes 1.29. Upgrade to >= 1.9.0." + } + ], + "deprecatedApis": [ + { + "group": "networking.k8s.io", + "version": "v1beta1", + "resource": "ingresses", + "removedRelease": "1.22", + "usageMetrics": { + "get": 142, + "list": 89, + "watch": 512, + "post": 3, + "put": 7 + }, + "lastUsageObservedAt": "2026-06-02T09:58:34Z", + "severity": "Critical" + }, + { + "group": "policy", + "version": "v1beta1", + "resource": "poddisruptionbudgets", + "removedRelease": "1.25", + "usageMetrics": { + "get": 54, + "list": 31, + "watch": 210 + }, + "lastUsageObservedAt": "2026-06-02T10:01:12Z", + "severity": "Critical" + } + ], + "readinessChecks": [ + { + "category": "APIServerHealth", + "severity": "Pass", + "details": "API server /healthz and /readyz endpoints responded successfully." + }, + { + "category": "NodeStatus", + "name": "aks-nodepool1-12345678-vmss000000", + "severity": "Pass", + "details": "Node is Ready. Kubelet version: v1.27.9." + }, + { + "category": "NodeStatus", + "name": "aks-nodepool1-12345678-vmss000001", + "severity": "Pass", + "details": "Node is Ready. Kubelet version: v1.27.9." + }, + { + "category": "PodDisruptionBudget", + "name": "default/my-app", + "severity": "Warning", + "details": "PodDisruptionBudget 'my-app' in namespace 'default' may block node drain during upgrade." + } + ] + } + } + } + } +} diff --git a/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/upgradeAssessments/examples/2026-06-15-preview/ListUpgradeAssessments.json b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/upgradeAssessments/examples/2026-06-15-preview/ListUpgradeAssessments.json new file mode 100644 index 000000000000..11105254b318 --- /dev/null +++ b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/upgradeAssessments/examples/2026-06-15-preview/ListUpgradeAssessments.json @@ -0,0 +1,71 @@ +{ + "title": "List Upgrade Assessments", + "operationId": "UpgradeAssessments_List", + "parameters": { + "subscriptionId": "00000000-0000-0000-0000-000000000001", + "resourceGroupName": "rg1", + "clusterRp": "Microsoft.Kubernetes", + "clusterResourceName": "connectedClusters", + "clusterName": "clusterName1", + "api-version": "2026-06-15-preview" + }, + "responses": { + "200": { + "body": { + "value": [ + { + "id": "/subscriptions/00000000-0000-0000-0000-000000000001/resourceGroups/rg1/providers/Microsoft.Kubernetes/connectedClusters/clusterName1/providers/Microsoft.KubernetesConfiguration/upgradeAssessments/default", + "name": "default", + "type": "Microsoft.KubernetesConfiguration/upgradeAssessments", + "systemData": { + "createdBy": "string", + "createdByType": "Application", + "createdAt": "2026-06-02T10:15:00.000Z", + "lastModifiedBy": "string", + "lastModifiedByType": "Application", + "lastModifiedAt": "2026-06-02T10:15:00.000Z" + }, + "properties": { + "currentKubernetesVersion": "1.27.9", + "targetKubernetesVersion": "1.30.0", + "assessmentTime": "2026-06-02T10:15:00Z", + "overallSeverity": "Critical", + "componentCompatibility": [ + { + "name": "kube-proxy", + "version": "1.27.9", + "compatibilityStatus": "Compatible", + "severity": "Pass" + }, + { + "name": "cert-manager", + "version": "1.8.0", + "compatibilityStatus": "Incompatible", + "severity": "Critical", + "minCompatibleVersion": "1.12.0", + "notes": "cert-manager v1.8.0 does not support Kubernetes 1.30+. Upgrade to >= 1.12.0." + } + ], + "deprecatedApis": [ + { + "group": "networking.k8s.io", + "version": "v1beta1", + "resource": "ingresses", + "removedRelease": "1.22", + "severity": "Critical" + } + ], + "readinessChecks": [ + { + "category": "APIServerHealth", + "severity": "Pass", + "details": "API server /healthz and /readyz endpoints responded successfully." + } + ] + } + } + ] + } + } + } +} diff --git a/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/upgradeAssessments/main.tsp b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/upgradeAssessments/main.tsp new file mode 100644 index 000000000000..23a6f8ae333c --- /dev/null +++ b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/upgradeAssessments/main.tsp @@ -0,0 +1,33 @@ +import "@typespec/rest"; +import "@typespec/versioning"; +import "@azure-tools/typespec-azure-core"; +import "@azure-tools/typespec-azure-resource-manager"; +import "./models.tsp"; +import "./UpgradeAssessment.tsp"; + +using TypeSpec.Rest; +using TypeSpec.Http; +using Azure.ResourceManager.Foundations; +using Azure.Core; +using Azure.ResourceManager; +using TypeSpec.Versioning; + +/** + * APIs for cluster upgrade assessment resources under Microsoft.KubernetesConfiguration. + */ +#suppress "@azure-tools/typespec-azure-resource-manager/missing-operations-endpoint" "UpgradeAssessments is a proxy resource provider under Microsoft.Kubernetes; no independent operations endpoint is registered." +@armProviderNamespace +@service(#{ title: "UpgradeAssessmentsClient" }) +@versioned(Versions) +@armCommonTypesVersion(Azure.ResourceManager.CommonTypes.Versions.v6) +namespace Microsoft.KubernetesConfiguration; + +/** + * The available API versions. + */ +enum Versions { + /** + * The 2026-06-15-preview API version. + */ + v2026_06_15_preview: "2026-06-15-preview", +} diff --git a/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/upgradeAssessments/models.tsp b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/upgradeAssessments/models.tsp new file mode 100644 index 000000000000..b53f1519386c --- /dev/null +++ b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/upgradeAssessments/models.tsp @@ -0,0 +1,208 @@ +import "@typespec/rest"; +import "@typespec/http"; +import "@typespec/versioning"; +import "@azure-tools/typespec-azure-resource-manager"; +import "@azure-tools/typespec-azure-core"; + +using TypeSpec.Rest; +using TypeSpec.Http; +using TypeSpec.Versioning; +using Azure.Core; +using Azure.ResourceManager; +using Azure.ResourceManager.Foundations; + +namespace Microsoft.KubernetesConfiguration; + +// ─── UpgradeAssessment enums ────────────────────────────────────────────────── + +/** Severity of an upgrade-assessment finding or readiness check. */ +union Severity { + string, + + /** No issues found. */ + Pass: "Pass", + + /** Non-blocking issues found; upgrade is possible but action is recommended. */ + Warning: "Warning", + + /** Blocking issues found; upgrade should not proceed without remediation. */ + Critical: "Critical", + + /** Severity could not be determined. */ + Unknown: "Unknown", +} + +/** Compatibility status of a cluster component with the target Kubernetes version. */ +union CompatibilityStatus { + string, + + /** Component is compatible with the target version. */ + Compatible: "Compatible", + + /** Compatibility with the target version has not been tested. */ + Untested: "Untested", + + /** Component is incompatible with the target version. */ + Incompatible: "Incompatible", + + /** Compatibility status is unknown. */ + Unknown: "Unknown", +} + +/** Category of a cluster readiness check. */ +union ReadinessCategory { + string, + + /** Node status check. */ + NodeStatus: "NodeStatus", + + /** API server health check. */ + APIServerHealth: "APIServerHealth", + + /** Pod disruption budget check. */ + PodDisruptionBudget: "PodDisruptionBudget", + + /** Addon compatibility check. */ + Addon: "Addon", + + /** Storage compatibility check. */ + Storage: "Storage", + + /** Networking compatibility check. */ + Networking: "Networking", +} + +// ─── UpgradeAssessment sub-models ───────────────────────────────────────────── + +/** Compatibility status of a single cluster component with the target Kubernetes version. */ +model ComponentCompatibility { + /** Component name (e.g., 'containerd', 'calico'). */ + name: string; + + /** Installed component version. */ + version: string; + + /** Compatibility of the component with the target Kubernetes version. */ + compatibilityStatus: CompatibilityStatus; + + /** Severity associated with this compatibility result. */ + severity: Severity; + + /** Minimum component version known to be compatible with targetKubernetesVersion. */ + minCompatibleVersion?: string; + + /** Additional notes about compatibility. */ + notes?: string; +} + +/** Observed call counts per HTTP verb for a deprecated Kubernetes API. */ +model HttpVerbUsageMetrics { + /** Number of GET requests observed. */ + get?: int64; + + /** Number of LIST requests observed. */ + list?: int64; + + /** Number of POST (create) requests observed. */ + post?: int64; + + /** Number of PUT (replace) requests observed. */ + put?: int64; + + /** Number of PATCH requests observed. */ + patch?: int64; + + /** Number of DELETE requests observed. */ + delete?: int64; + + /** Number of WATCH requests observed. */ + watch?: int64; +} + +/** A deprecated Kubernetes API still in use in the cluster. */ +model DeprecatedApiUsage { + /** API group (e.g., 'flowcontrol.apiserver.k8s.io'). */ + group: string; + + /** API version (e.g., 'v1beta3'). */ + version: string; + + /** Resource plural name (e.g., 'flowschemas'). */ + resource: string; + + /** Kubernetes release in which this API is removed (e.g., '1.32'). */ + removedRelease?: string; + + /** HTTP verb call counts observed for this deprecated API. */ + usageMetrics?: HttpVerbUsageMetrics; + + /** UTC timestamp of the last observed usage. */ + lastUsageObservedAt?: utcDateTime; + + /** Severity of continued use of this deprecated API. */ + severity: Severity; +} + +/** A single cluster readiness check result. */ +model ReadinessCheck { + /** Category of the readiness check. */ + category: ReadinessCategory; + + /** + * Subject of the check (node name, workload namespace/name, etc.). + * Optional for cluster-wide checks. + */ + name?: string; + + /** Severity of the check result. */ + severity: Severity; + + /** Human-readable reason when severity is not 'pass'. */ + details?: string; +} + +// ─── ARM resource properties ────────────────────────────────────────────────── + +/** Properties of a single UpgradeAssessment ARM resource. */ +#suppress "@azure-tools/typespec-azure-resource-manager/arm-resource-provisioning-state" "This resource does not have a provisioning state per the original Swagger design" +model UpgradeAssessmentProperties { + /** Current Kubernetes version running on the cluster (e.g., '1.29'). */ + @visibility(Lifecycle.Read) + currentKubernetesVersion?: string; + + /** Target Kubernetes version to evaluate for upgrade (e.g., '1.30'). */ + targetKubernetesVersion?: string; + + /** + * UTC timestamp when the in-cluster agent last computed this assessment. + */ + @visibility(Lifecycle.Read) + assessmentTime?: utcDateTime; + + /** + * Rolled-up severity across all checks; highest severity wins. + */ + @visibility(Lifecycle.Read) + overallSeverity?: Severity; + + /** + * Per-component compatibility results with the target Kubernetes version. + */ + @visibility(Lifecycle.Read) + @identifiers(#[]) + componentCompatibility?: ComponentCompatibility[]; + + /** + * Deprecated Kubernetes APIs still in use in the cluster. + */ + @visibility(Lifecycle.Read) + @identifiers(#[]) + deprecatedApis?: DeprecatedApiUsage[]; + + /** + * Cluster readiness check results. + */ + @visibility(Lifecycle.Read) + @identifiers(#[]) + readinessChecks?: ReadinessCheck[]; +} diff --git a/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/upgradeAssessments/preview/2026-06-15-preview/examples/GetUpgradeAssessments.json b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/upgradeAssessments/preview/2026-06-15-preview/examples/GetUpgradeAssessments.json new file mode 100644 index 000000000000..f6118b78ef00 --- /dev/null +++ b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/upgradeAssessments/preview/2026-06-15-preview/examples/GetUpgradeAssessments.json @@ -0,0 +1,121 @@ +{ + "title": "Get Upgrade Assessment", + "operationId": "UpgradeAssessments_Get", + "parameters": { + "subscriptionId": "00000000-0000-0000-0000-000000000001", + "resourceGroupName": "rg1", + "clusterRp": "Microsoft.Kubernetes", + "clusterResourceName": "connectedClusters", + "clusterName": "clusterName1", + "upgradeAssessmentName": "default", + "api-version": "2026-06-15-preview" + }, + "responses": { + "200": { + "body": { + "id": "/subscriptions/00000000-0000-0000-0000-000000000001/resourceGroups/rg1/providers/Microsoft.Kubernetes/connectedClusters/clusterName1/providers/Microsoft.KubernetesConfiguration/upgradeAssessments/default", + "name": "default", + "type": "Microsoft.KubernetesConfiguration/upgradeAssessments", + "systemData": { + "createdBy": "string", + "createdByType": "Application", + "createdAt": "2026-06-02T10:15:00.000Z", + "lastModifiedBy": "string", + "lastModifiedByType": "Application", + "lastModifiedAt": "2026-06-02T10:15:00.000Z" + }, + "properties": { + "currentKubernetesVersion": "1.27.9", + "targetKubernetesVersion": "1.30.0", + "assessmentTime": "2026-06-02T10:15:00Z", + "overallSeverity": "Critical", + "componentCompatibility": [ + { + "name": "kube-proxy", + "version": "1.27.9", + "compatibilityStatus": "Compatible", + "severity": "Pass" + }, + { + "name": "coredns", + "version": "1.10.1", + "compatibilityStatus": "Compatible", + "severity": "Pass" + }, + { + "name": "cert-manager", + "version": "1.8.0", + "compatibilityStatus": "Incompatible", + "severity": "Critical", + "minCompatibleVersion": "1.12.0", + "notes": "cert-manager v1.8.0 does not support Kubernetes 1.30+. Upgrade to >= 1.12.0." + }, + { + "name": "ingress-nginx", + "version": "1.2.1", + "compatibilityStatus": "Incompatible", + "severity": "Critical", + "minCompatibleVersion": "1.9.0", + "notes": "ingress-nginx v1.2.1 uses networking.k8s.io/v1beta1 which is removed in Kubernetes 1.29. Upgrade to >= 1.9.0." + } + ], + "deprecatedApis": [ + { + "group": "networking.k8s.io", + "version": "v1beta1", + "resource": "ingresses", + "removedRelease": "1.22", + "usageMetrics": { + "get": 142, + "list": 89, + "watch": 512, + "post": 3, + "put": 7 + }, + "lastUsageObservedAt": "2026-06-02T09:58:34Z", + "severity": "Critical" + }, + { + "group": "policy", + "version": "v1beta1", + "resource": "poddisruptionbudgets", + "removedRelease": "1.25", + "usageMetrics": { + "get": 54, + "list": 31, + "watch": 210 + }, + "lastUsageObservedAt": "2026-06-02T10:01:12Z", + "severity": "Critical" + } + ], + "readinessChecks": [ + { + "category": "APIServerHealth", + "severity": "Pass", + "details": "API server /healthz and /readyz endpoints responded successfully." + }, + { + "category": "NodeStatus", + "name": "aks-nodepool1-12345678-vmss000000", + "severity": "Pass", + "details": "Node is Ready. Kubelet version: v1.27.9." + }, + { + "category": "NodeStatus", + "name": "aks-nodepool1-12345678-vmss000001", + "severity": "Pass", + "details": "Node is Ready. Kubelet version: v1.27.9." + }, + { + "category": "PodDisruptionBudget", + "name": "default/my-app", + "severity": "Warning", + "details": "PodDisruptionBudget 'my-app' in namespace 'default' may block node drain during upgrade." + } + ] + } + } + } + } +} diff --git a/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/upgradeAssessments/preview/2026-06-15-preview/examples/ListUpgradeAssessments.json b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/upgradeAssessments/preview/2026-06-15-preview/examples/ListUpgradeAssessments.json new file mode 100644 index 000000000000..11105254b318 --- /dev/null +++ b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/upgradeAssessments/preview/2026-06-15-preview/examples/ListUpgradeAssessments.json @@ -0,0 +1,71 @@ +{ + "title": "List Upgrade Assessments", + "operationId": "UpgradeAssessments_List", + "parameters": { + "subscriptionId": "00000000-0000-0000-0000-000000000001", + "resourceGroupName": "rg1", + "clusterRp": "Microsoft.Kubernetes", + "clusterResourceName": "connectedClusters", + "clusterName": "clusterName1", + "api-version": "2026-06-15-preview" + }, + "responses": { + "200": { + "body": { + "value": [ + { + "id": "/subscriptions/00000000-0000-0000-0000-000000000001/resourceGroups/rg1/providers/Microsoft.Kubernetes/connectedClusters/clusterName1/providers/Microsoft.KubernetesConfiguration/upgradeAssessments/default", + "name": "default", + "type": "Microsoft.KubernetesConfiguration/upgradeAssessments", + "systemData": { + "createdBy": "string", + "createdByType": "Application", + "createdAt": "2026-06-02T10:15:00.000Z", + "lastModifiedBy": "string", + "lastModifiedByType": "Application", + "lastModifiedAt": "2026-06-02T10:15:00.000Z" + }, + "properties": { + "currentKubernetesVersion": "1.27.9", + "targetKubernetesVersion": "1.30.0", + "assessmentTime": "2026-06-02T10:15:00Z", + "overallSeverity": "Critical", + "componentCompatibility": [ + { + "name": "kube-proxy", + "version": "1.27.9", + "compatibilityStatus": "Compatible", + "severity": "Pass" + }, + { + "name": "cert-manager", + "version": "1.8.0", + "compatibilityStatus": "Incompatible", + "severity": "Critical", + "minCompatibleVersion": "1.12.0", + "notes": "cert-manager v1.8.0 does not support Kubernetes 1.30+. Upgrade to >= 1.12.0." + } + ], + "deprecatedApis": [ + { + "group": "networking.k8s.io", + "version": "v1beta1", + "resource": "ingresses", + "removedRelease": "1.22", + "severity": "Critical" + } + ], + "readinessChecks": [ + { + "category": "APIServerHealth", + "severity": "Pass", + "details": "API server /healthz and /readyz endpoints responded successfully." + } + ] + } + } + ] + } + } + } +} diff --git a/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/upgradeAssessments/preview/2026-06-15-preview/upgradeAssessments.json b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/upgradeAssessments/preview/2026-06-15-preview/upgradeAssessments.json new file mode 100644 index 000000000000..645442d2e72f --- /dev/null +++ b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/upgradeAssessments/preview/2026-06-15-preview/upgradeAssessments.json @@ -0,0 +1,541 @@ +{ + "swagger": "2.0", + "info": { + "title": "UpgradeAssessmentsClient", + "version": "2026-06-15-preview", + "description": "APIs for cluster upgrade assessment resources under Microsoft.KubernetesConfiguration.", + "x-typespec-generated": [ + { + "emitter": "@azure-tools/typespec-autorest" + } + ] + }, + "schemes": [ + "https" + ], + "host": "management.azure.com", + "produces": [ + "application/json" + ], + "consumes": [ + "application/json" + ], + "security": [ + { + "azure_auth": [ + "user_impersonation" + ] + } + ], + "securityDefinitions": { + "azure_auth": { + "type": "oauth2", + "description": "Azure Active Directory OAuth2 Flow.", + "flow": "implicit", + "authorizationUrl": "https://login.microsoftonline.com/common/oauth2/authorize", + "scopes": { + "user_impersonation": "impersonate your user account" + } + } + }, + "tags": [ + { + "name": "UpgradeAssessments" + } + ], + "paths": { + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{clusterRp}/{clusterResourceName}/{clusterName}/providers/Microsoft.KubernetesConfiguration/upgradeAssessments": { + "get": { + "operationId": "UpgradeAssessments_List", + "tags": [ + "UpgradeAssessments" + ], + "description": "List upgrade assessments for the cluster.", + "parameters": [ + { + "$ref": "../../../../../../common-types/resource-management/v6/types.json#/parameters/ApiVersionParameter" + }, + { + "$ref": "../../../../../../common-types/resource-management/v6/types.json#/parameters/SubscriptionIdParameter" + }, + { + "$ref": "../../../../../../common-types/resource-management/v6/types.json#/parameters/ResourceGroupNameParameter" + }, + { + "name": "clusterRp", + "in": "path", + "description": "The Kubernetes cluster RP - i.e. Microsoft.ContainerService, Microsoft.Kubernetes,\nMicrosoft.HybridContainerService, Microsoft.KubernetesConfiguration.", + "required": true, + "type": "string", + "pattern": "^Microsoft\\.(ContainerService|Kubernetes|HybridContainerService|KubernetesConfiguration)$" + }, + { + "name": "clusterResourceName", + "in": "path", + "description": "The Kubernetes cluster resource name - i.e. managedClusters, connectedClusters,\nprovisionedClusters, appliances.", + "required": true, + "type": "string", + "pattern": "^[a-zA-Z]+$" + }, + { + "name": "clusterName", + "in": "path", + "description": "The name of the kubernetes cluster.", + "required": true, + "type": "string", + "pattern": "^[a-zA-Z0-9][a-zA-Z0-9-_.]{0,62}$" + } + ], + "responses": { + "200": { + "description": "Azure operation completed successfully.", + "schema": { + "$ref": "#/definitions/UpgradeAssessmentListResult" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "../../../../../../common-types/resource-management/v6/types.json#/definitions/ErrorResponse" + } + } + }, + "x-ms-examples": { + "List Upgrade Assessments": { + "$ref": "./examples/ListUpgradeAssessments.json" + } + }, + "x-ms-pageable": { + "nextLinkName": "nextLink" + } + } + }, + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{clusterRp}/{clusterResourceName}/{clusterName}/providers/Microsoft.KubernetesConfiguration/upgradeAssessments/{upgradeAssessmentName}": { + "get": { + "operationId": "UpgradeAssessments_Get", + "tags": [ + "UpgradeAssessments" + ], + "description": "Get the upgrade assessment for a cluster.", + "parameters": [ + { + "$ref": "../../../../../../common-types/resource-management/v6/types.json#/parameters/ApiVersionParameter" + }, + { + "$ref": "../../../../../../common-types/resource-management/v6/types.json#/parameters/SubscriptionIdParameter" + }, + { + "$ref": "../../../../../../common-types/resource-management/v6/types.json#/parameters/ResourceGroupNameParameter" + }, + { + "name": "clusterRp", + "in": "path", + "description": "The Kubernetes cluster RP - i.e. Microsoft.ContainerService, Microsoft.Kubernetes,\nMicrosoft.HybridContainerService, Microsoft.KubernetesConfiguration.", + "required": true, + "type": "string", + "pattern": "^Microsoft\\.(ContainerService|Kubernetes|HybridContainerService|KubernetesConfiguration)$" + }, + { + "name": "clusterResourceName", + "in": "path", + "description": "The Kubernetes cluster resource name - i.e. managedClusters, connectedClusters,\nprovisionedClusters, appliances.", + "required": true, + "type": "string", + "pattern": "^[a-zA-Z]+$" + }, + { + "name": "clusterName", + "in": "path", + "description": "The name of the kubernetes cluster.", + "required": true, + "type": "string", + "pattern": "^[a-zA-Z0-9][a-zA-Z0-9-_.]{0,62}$" + }, + { + "name": "upgradeAssessmentName", + "in": "path", + "description": "Name of the UpgradeAssessments resource.", + "required": true, + "type": "string", + "pattern": "^[a-z]([a-z0-9._-]{0,126}[a-z0-9])?$" + } + ], + "responses": { + "200": { + "description": "Azure operation completed successfully.", + "schema": { + "$ref": "#/definitions/UpgradeAssessment" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "../../../../../../common-types/resource-management/v6/types.json#/definitions/ErrorResponse" + } + } + }, + "x-ms-examples": { + "Get Upgrade Assessment": { + "$ref": "./examples/GetUpgradeAssessments.json" + } + } + } + } + }, + "definitions": { + "CompatibilityStatus": { + "type": "string", + "description": "Compatibility status of a cluster component with the target Kubernetes version.", + "enum": [ + "Compatible", + "Untested", + "Incompatible", + "Unknown" + ], + "x-ms-enum": { + "name": "CompatibilityStatus", + "modelAsString": true, + "values": [ + { + "name": "Compatible", + "value": "Compatible", + "description": "Component is compatible with the target version." + }, + { + "name": "Untested", + "value": "Untested", + "description": "Compatibility with the target version has not been tested." + }, + { + "name": "Incompatible", + "value": "Incompatible", + "description": "Component is incompatible with the target version." + }, + { + "name": "Unknown", + "value": "Unknown", + "description": "Compatibility status is unknown." + } + ] + } + }, + "ComponentCompatibility": { + "type": "object", + "description": "Compatibility status of a single cluster component with the target Kubernetes version.", + "properties": { + "name": { + "type": "string", + "description": "Component name (e.g., 'containerd', 'calico')." + }, + "version": { + "type": "string", + "description": "Installed component version." + }, + "compatibilityStatus": { + "$ref": "#/definitions/CompatibilityStatus", + "description": "Compatibility of the component with the target Kubernetes version." + }, + "severity": { + "$ref": "#/definitions/Severity", + "description": "Severity associated with this compatibility result." + }, + "minCompatibleVersion": { + "type": "string", + "description": "Minimum component version known to be compatible with targetKubernetesVersion." + }, + "notes": { + "type": "string", + "description": "Additional notes about compatibility." + } + }, + "required": [ + "name", + "version", + "compatibilityStatus", + "severity" + ] + }, + "DeprecatedApiUsage": { + "type": "object", + "description": "A deprecated Kubernetes API still in use in the cluster.", + "properties": { + "group": { + "type": "string", + "description": "API group (e.g., 'flowcontrol.apiserver.k8s.io')." + }, + "version": { + "type": "string", + "description": "API version (e.g., 'v1beta3')." + }, + "resource": { + "type": "string", + "description": "Resource plural name (e.g., 'flowschemas')." + }, + "removedRelease": { + "type": "string", + "description": "Kubernetes release in which this API is removed (e.g., '1.32')." + }, + "usageMetrics": { + "$ref": "#/definitions/HttpVerbUsageMetrics", + "description": "HTTP verb call counts observed for this deprecated API." + }, + "lastUsageObservedAt": { + "type": "string", + "format": "date-time", + "description": "UTC timestamp of the last observed usage." + }, + "severity": { + "$ref": "#/definitions/Severity", + "description": "Severity of continued use of this deprecated API." + } + }, + "required": [ + "group", + "version", + "resource", + "severity" + ] + }, + "HttpVerbUsageMetrics": { + "type": "object", + "description": "Observed call counts per HTTP verb for a deprecated Kubernetes API.", + "properties": { + "get": { + "type": "integer", + "format": "int64", + "description": "Number of GET requests observed." + }, + "list": { + "type": "integer", + "format": "int64", + "description": "Number of LIST requests observed." + }, + "post": { + "type": "integer", + "format": "int64", + "description": "Number of POST (create) requests observed." + }, + "put": { + "type": "integer", + "format": "int64", + "description": "Number of PUT (replace) requests observed." + }, + "patch": { + "type": "integer", + "format": "int64", + "description": "Number of PATCH requests observed." + }, + "delete": { + "type": "integer", + "format": "int64", + "description": "Number of DELETE requests observed." + }, + "watch": { + "type": "integer", + "format": "int64", + "description": "Number of WATCH requests observed." + } + } + }, + "ReadinessCategory": { + "type": "string", + "description": "Category of a cluster readiness check.", + "enum": [ + "NodeStatus", + "APIServerHealth", + "PodDisruptionBudget", + "Addon", + "Storage", + "Networking" + ], + "x-ms-enum": { + "name": "ReadinessCategory", + "modelAsString": true, + "values": [ + { + "name": "NodeStatus", + "value": "NodeStatus", + "description": "Node status check." + }, + { + "name": "APIServerHealth", + "value": "APIServerHealth", + "description": "API server health check." + }, + { + "name": "PodDisruptionBudget", + "value": "PodDisruptionBudget", + "description": "Pod disruption budget check." + }, + { + "name": "Addon", + "value": "Addon", + "description": "Addon compatibility check." + }, + { + "name": "Storage", + "value": "Storage", + "description": "Storage compatibility check." + }, + { + "name": "Networking", + "value": "Networking", + "description": "Networking compatibility check." + } + ] + } + }, + "ReadinessCheck": { + "type": "object", + "description": "A single cluster readiness check result.", + "properties": { + "category": { + "$ref": "#/definitions/ReadinessCategory", + "description": "Category of the readiness check." + }, + "name": { + "type": "string", + "description": "Subject of the check (node name, workload namespace/name, etc.).\nOptional for cluster-wide checks." + }, + "severity": { + "$ref": "#/definitions/Severity", + "description": "Severity of the check result." + }, + "details": { + "type": "string", + "description": "Human-readable reason when severity is not 'pass'." + } + }, + "required": [ + "category", + "severity" + ] + }, + "Severity": { + "type": "string", + "description": "Severity of an upgrade-assessment finding or readiness check.", + "enum": [ + "Pass", + "Warning", + "Critical", + "Unknown" + ], + "x-ms-enum": { + "name": "Severity", + "modelAsString": true, + "values": [ + { + "name": "Pass", + "value": "Pass", + "description": "No issues found." + }, + { + "name": "Warning", + "value": "Warning", + "description": "Non-blocking issues found; upgrade is possible but action is recommended." + }, + { + "name": "Critical", + "value": "Critical", + "description": "Blocking issues found; upgrade should not proceed without remediation." + }, + { + "name": "Unknown", + "value": "Unknown", + "description": "Severity could not be determined." + } + ] + } + }, + "UpgradeAssessment": { + "type": "object", + "description": "ARM resource representing a Kubernetes cluster upgrade assessment.", + "properties": { + "properties": { + "$ref": "#/definitions/UpgradeAssessmentProperties", + "description": "Properties of the UpgradeAssessments resource." + } + }, + "allOf": [ + { + "$ref": "../../../../../../common-types/resource-management/v6/types.json#/definitions/ProxyResource" + } + ] + }, + "UpgradeAssessmentListResult": { + "type": "object", + "description": "The response of a UpgradeAssessment list operation.", + "properties": { + "value": { + "type": "array", + "description": "The UpgradeAssessment items on this page", + "items": { + "$ref": "#/definitions/UpgradeAssessment" + } + }, + "nextLink": { + "type": "string", + "format": "uri", + "description": "The link to the next page of items" + } + }, + "required": [ + "value" + ] + }, + "UpgradeAssessmentProperties": { + "type": "object", + "description": "Properties of a single UpgradeAssessment ARM resource.", + "properties": { + "currentKubernetesVersion": { + "type": "string", + "description": "Current Kubernetes version running on the cluster (e.g., '1.29').", + "readOnly": true + }, + "targetKubernetesVersion": { + "type": "string", + "description": "Target Kubernetes version to evaluate for upgrade (e.g., '1.30')." + }, + "assessmentTime": { + "type": "string", + "format": "date-time", + "description": "UTC timestamp when the in-cluster agent last computed this assessment.", + "readOnly": true + }, + "overallSeverity": { + "$ref": "#/definitions/Severity", + "description": "Rolled-up severity across all checks; highest severity wins.", + "readOnly": true + }, + "componentCompatibility": { + "type": "array", + "description": "Per-component compatibility results with the target Kubernetes version.", + "items": { + "$ref": "#/definitions/ComponentCompatibility" + }, + "readOnly": true, + "x-ms-identifiers": [] + }, + "deprecatedApis": { + "type": "array", + "description": "Deprecated Kubernetes APIs still in use in the cluster.", + "items": { + "$ref": "#/definitions/DeprecatedApiUsage" + }, + "readOnly": true, + "x-ms-identifiers": [] + }, + "readinessChecks": { + "type": "array", + "description": "Cluster readiness check results.", + "items": { + "$ref": "#/definitions/ReadinessCheck" + }, + "readOnly": true, + "x-ms-identifiers": [] + } + } + } + }, + "parameters": {} +} diff --git a/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/upgradeAssessments/tspconfig.yaml b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/upgradeAssessments/tspconfig.yaml new file mode 100644 index 000000000000..0f8b481df84c --- /dev/null +++ b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/upgradeAssessments/tspconfig.yaml @@ -0,0 +1,50 @@ +parameters: + "service-dir": + default: "sdk/upgradeassessments" +emit: + - "@azure-tools/typespec-autorest" +options: + "@azure-tools/typespec-autorest": + omit-unreachable-types: false + emitter-output-dir: "{project-root}" + output-file: "{version-status}/{version}/upgradeAssessments.json" + arm-types-dir: "{project-root}/../../../../common-types/resource-management" + emit-lro-options: "all" + examples-dir: "{project-root}/examples" + "@azure-tools/typespec-python": + service-dir: sdk/kubernetesconfiguration + emitter-output-dir: "{output-dir}/{service-dir}/azure-mgmt-kubernetesconfiguration-upgradeassessments" + namespace: "azure.mgmt.kubernetesconfiguration.upgradeassessments" + generate-test: true + generate-sample: true + flavor: "azure" + "@azure-tools/typespec-java": + service-dir: sdk/kubernetesconfiguration + emitter-output-dir: "{output-dir}/{service-dir}/azure-resourcemanager-kubernetesconfiguration-upgradeassessments" + namespace: "com.azure.resourcemanager.kubernetesconfiguration.upgradeassessments" + service-name: "UpgradeAssessments" + flavor: azure + "@azure-tools/typespec-ts": + service-dir: sdk/kubernetesconfiguration + emitter-output-dir: "{output-dir}/{service-dir}/arm-kubernetesconfiguration-upgradeassessments" + flavor: "azure" + compatibility-lro: true + experimental-extensible-enums: true + package-details: + name: "@azure/arm-kubernetesconfiguration-upgradeassessments" + "@azure-tools/typespec-go": + service-dir: "sdk/resourcemanager/kubernetesconfiguration" + emitter-output-dir: "{output-dir}/{service-dir}/armupgradeassessments" + module: "github.com/Azure/azure-sdk-for-go/{service-dir}/armupgradeassessments" + fix-const-stuttering: true + flavor: "azure" + generate-samples: true + generate-fakes: true + head-as-boolean: true + inject-spans: true + "@azure-typespec/http-client-csharp-mgmt": + namespace: "Azure.ResourceManager.KubernetesConfiguration.UpgradeAssessments" + emitter-output-dir: "{output-dir}/sdk/kubernetesconfiguration/{namespace}" +linter: + extends: + - "@azure-tools/typespec-azure-rulesets/resource-manager" From 9a633049413b13f9732a83510d0cebccb550b368 Mon Sep 17 00:00:00 2001 From: Bharath Griddaluru Date: Thu, 11 Jun 2026 23:11:24 -0700 Subject: [PATCH 02/18] Update operations for new api version --- .../ListAsyncOperationStatus.json | 35 +++ .../2026-06-15-preview/OperationsList.json | 158 ++++++++++ .../operations/main.tsp | 6 + .../examples/ListAsyncOperationStatus.json | 35 +++ .../examples/OperationsList.json | 158 ++++++++++ .../2026-06-15-preview/operations.json | 275 ++++++++++++++++++ .../operations/readme.md | 26 +- 7 files changed, 692 insertions(+), 1 deletion(-) create mode 100644 specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/operations/examples/2026-06-15-preview/ListAsyncOperationStatus.json create mode 100644 specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/operations/examples/2026-06-15-preview/OperationsList.json create mode 100644 specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/operations/preview/2026-06-15-preview/examples/ListAsyncOperationStatus.json create mode 100644 specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/operations/preview/2026-06-15-preview/examples/OperationsList.json create mode 100644 specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/operations/preview/2026-06-15-preview/operations.json diff --git a/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/operations/examples/2026-06-15-preview/ListAsyncOperationStatus.json b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/operations/examples/2026-06-15-preview/ListAsyncOperationStatus.json new file mode 100644 index 000000000000..533e3d878416 --- /dev/null +++ b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/operations/examples/2026-06-15-preview/ListAsyncOperationStatus.json @@ -0,0 +1,35 @@ +{ + "parameters": { + "api-version": "2026-06-15-preview", + "clusterName": "clusterName1", + "clusterResourceName": "connectedClusters", + "clusterRp": "Microsoft.Kubernetes", + "resourceGroupName": "rg1", + "subscriptionId": "subId1" + }, + "responses": { + "200": { + "body": { + "nextLink": null, + "value": [ + { + "name": "99999999-9999-9999-9999-999999999999", + "error": null, + "id": "/subscriptions/subId1/resourceGroups/rg1/providers/Microsoft.Kubernetes/connectedClusters/clusterName1/providers/Microsoft.KubernetesConfiguration/extensions/ClusterMonitor/operations/99999999-9999-9999-9999-999999999999", + "properties": {}, + "status": "Deleting" + }, + { + "name": "88888888-8888-8888-8888-888888888888", + "error": null, + "id": "/subscriptions/subId1/resourceGroups/rg1/providers/Microsoft.Kubernetes/connectedClusters/clusterName1/providers/Microsoft.KubernetesConfiguration/extensions/cassandraExtension1/operations/88888888-8888-8888-8888-888888888888", + "properties": {}, + "status": "Creating" + } + ] + } + } + }, + "operationId": "OperationStatus_List", + "title": "AsyncOperationStatus List" +} diff --git a/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/operations/examples/2026-06-15-preview/OperationsList.json b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/operations/examples/2026-06-15-preview/OperationsList.json new file mode 100644 index 000000000000..15b1a8175789 --- /dev/null +++ b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/operations/examples/2026-06-15-preview/OperationsList.json @@ -0,0 +1,158 @@ +{ + "parameters": { + "api-version": "2026-06-15-preview" + }, + "responses": { + "200": { + "body": { + "value": [ + { + "name": "Microsoft.KubernetesConfiguration/sourceControlConfigurations/write", + "display": { + "description": "Creates or updates source control configuration.", + "operation": "Microsoft.KubernetesConfiguration/sourceControlConfigurations/write", + "provider": "Microsoft Kubernetes Configuration", + "resource": "Microsoft.KubernetesConfiguration/sourceControlConfigurations" + }, + "isDataAction": false, + "origin": "user,system" + }, + { + "name": "Microsoft.KubernetesConfiguration/sourceControlConfigurations/read", + "display": { + "description": "Gets source control configuration.", + "operation": "Microsoft.KubernetesConfiguration/sourceControlConfigurations/read", + "provider": "Microsoft Kubernetes Configuration", + "resource": "Microsoft.KubernetesConfiguration/sourceControlConfigurations" + }, + "isDataAction": false, + "origin": "user,system" + }, + { + "name": "Microsoft.KubernetesConfiguration/sourceControlConfigurations/delete", + "display": { + "description": "Deletes source control configuration.", + "operation": "Microsoft.KubernetesConfiguration/sourceControlConfigurations/delete", + "provider": "Microsoft Kubernetes Configuration", + "resource": "Microsoft.KubernetesConfiguration/sourceControlConfigurations" + }, + "isDataAction": false, + "origin": "user,system" + }, + { + "name": "Microsoft.KubernetesConfiguration/extensions/read", + "display": { + "description": "Get the specified Extension.", + "operation": "Get extension", + "provider": "Microsoft KubernetesConfiguration", + "resource": "extensions" + }, + "isDataAction": false, + "origin": "user,system" + }, + { + "name": "Microsoft.KubernetesConfiguration/extensions/write", + "display": { + "description": "Create the Extension specified.", + "operation": "Create a Extension", + "provider": "Microsoft KubernetesConfiguration", + "resource": "extensions" + }, + "isDataAction": false, + "origin": "user,system" + }, + { + "name": "Microsoft.KubernetesConfiguration/extensions/delete", + "display": { + "description": "Delete the specified Extension.", + "operation": "Delete Extension", + "provider": "Microsoft KubernetesConfiguration", + "resource": "extensions" + }, + "isDataAction": false, + "origin": "user,system" + }, + { + "name": "Microsoft.KubernetesConfiguration/extensions/operations/read", + "display": { + "description": "Get the Status of the Extension Async Operation.", + "operation": "Get Extension Async Operation Status", + "provider": "Microsoft KubernetesConfiguration", + "resource": "extensions" + }, + "isDataAction": false, + "origin": "user,system" + }, + { + "name": "Microsoft.KubernetesConfiguration/fluxConfigurations/read", + "display": { + "description": "Get the specified Flux Configuration.", + "operation": "Get fluxConfiguration", + "provider": "Microsoft KubernetesConfiguration", + "resource": "fluxConfigurations" + }, + "isDataAction": false, + "origin": "user,system" + }, + { + "name": "Microsoft.KubernetesConfiguration/fluxConfigurations/write", + "display": { + "description": "Create the Flux Configuration specified.", + "operation": "Create a fluxConfiguration", + "provider": "Microsoft KubernetesConfiguration", + "resource": "fluxConfigurations" + }, + "isDataAction": false, + "origin": "user,system" + }, + { + "name": "Microsoft.KubernetesConfiguration/fluxConfigurations/delete", + "display": { + "description": "Delete the specified Flux Configuration.", + "operation": "Delete Flux Configuration", + "provider": "Microsoft KubernetesConfiguration", + "resource": "fluxConfigurations" + }, + "isDataAction": false, + "origin": "user,system" + }, + { + "name": "Microsoft.KubernetesConfiguration/fluxConfigurations/operations/read", + "display": { + "description": "Get the Status of the Flux Configuration Async Operation.", + "operation": "Get Flux Configuration Async Operation Status", + "provider": "Microsoft KubernetesConfiguration", + "resource": "fluxConfigurations" + }, + "isDataAction": false, + "origin": "user,system" + }, + { + "name": "Microsoft.KubernetesConfiguration/register/action", + "display": { + "description": "Registers subscription to Microsoft.KubernetesConfiguration resource provider.", + "operation": "Microsoft.KubernetesConfiguration/register/action", + "provider": "Microsoft Kubernetes Configuration", + "resource": "Register" + }, + "isDataAction": false, + "origin": "user,system" + }, + { + "name": "Microsoft.KubernetesConfiguration/extensionTypes/read", + "display": { + "description": "Get Kubernetes Configuration Available Extensions", + "operation": "Microsoft.KubernetesConfiguration/extensionTypes/read", + "provider": "Microsoft KubernetesConfiguration", + "resource": "extensionTypes" + }, + "isDataAction": false, + "origin": "user,system" + } + ] + } + } + }, + "operationId": "Operations_List", + "title": "BatchAccountDelete" +} diff --git a/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/operations/main.tsp b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/operations/main.tsp index c51a9ccc7b1e..fa5734dfacc9 100644 --- a/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/operations/main.tsp +++ b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/operations/main.tsp @@ -44,6 +44,12 @@ enum Versions { * The 2025-04-01 API version. */ v2025_04_01: "2025-04-01", + + /** + * The 2026-06-15-preview API version. + */ + @Azure.Core.previewVersion + v2026_06_15_preview: "2026-06-15-preview", } interface Operations diff --git a/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/operations/preview/2026-06-15-preview/examples/ListAsyncOperationStatus.json b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/operations/preview/2026-06-15-preview/examples/ListAsyncOperationStatus.json new file mode 100644 index 000000000000..533e3d878416 --- /dev/null +++ b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/operations/preview/2026-06-15-preview/examples/ListAsyncOperationStatus.json @@ -0,0 +1,35 @@ +{ + "parameters": { + "api-version": "2026-06-15-preview", + "clusterName": "clusterName1", + "clusterResourceName": "connectedClusters", + "clusterRp": "Microsoft.Kubernetes", + "resourceGroupName": "rg1", + "subscriptionId": "subId1" + }, + "responses": { + "200": { + "body": { + "nextLink": null, + "value": [ + { + "name": "99999999-9999-9999-9999-999999999999", + "error": null, + "id": "/subscriptions/subId1/resourceGroups/rg1/providers/Microsoft.Kubernetes/connectedClusters/clusterName1/providers/Microsoft.KubernetesConfiguration/extensions/ClusterMonitor/operations/99999999-9999-9999-9999-999999999999", + "properties": {}, + "status": "Deleting" + }, + { + "name": "88888888-8888-8888-8888-888888888888", + "error": null, + "id": "/subscriptions/subId1/resourceGroups/rg1/providers/Microsoft.Kubernetes/connectedClusters/clusterName1/providers/Microsoft.KubernetesConfiguration/extensions/cassandraExtension1/operations/88888888-8888-8888-8888-888888888888", + "properties": {}, + "status": "Creating" + } + ] + } + } + }, + "operationId": "OperationStatus_List", + "title": "AsyncOperationStatus List" +} diff --git a/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/operations/preview/2026-06-15-preview/examples/OperationsList.json b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/operations/preview/2026-06-15-preview/examples/OperationsList.json new file mode 100644 index 000000000000..15b1a8175789 --- /dev/null +++ b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/operations/preview/2026-06-15-preview/examples/OperationsList.json @@ -0,0 +1,158 @@ +{ + "parameters": { + "api-version": "2026-06-15-preview" + }, + "responses": { + "200": { + "body": { + "value": [ + { + "name": "Microsoft.KubernetesConfiguration/sourceControlConfigurations/write", + "display": { + "description": "Creates or updates source control configuration.", + "operation": "Microsoft.KubernetesConfiguration/sourceControlConfigurations/write", + "provider": "Microsoft Kubernetes Configuration", + "resource": "Microsoft.KubernetesConfiguration/sourceControlConfigurations" + }, + "isDataAction": false, + "origin": "user,system" + }, + { + "name": "Microsoft.KubernetesConfiguration/sourceControlConfigurations/read", + "display": { + "description": "Gets source control configuration.", + "operation": "Microsoft.KubernetesConfiguration/sourceControlConfigurations/read", + "provider": "Microsoft Kubernetes Configuration", + "resource": "Microsoft.KubernetesConfiguration/sourceControlConfigurations" + }, + "isDataAction": false, + "origin": "user,system" + }, + { + "name": "Microsoft.KubernetesConfiguration/sourceControlConfigurations/delete", + "display": { + "description": "Deletes source control configuration.", + "operation": "Microsoft.KubernetesConfiguration/sourceControlConfigurations/delete", + "provider": "Microsoft Kubernetes Configuration", + "resource": "Microsoft.KubernetesConfiguration/sourceControlConfigurations" + }, + "isDataAction": false, + "origin": "user,system" + }, + { + "name": "Microsoft.KubernetesConfiguration/extensions/read", + "display": { + "description": "Get the specified Extension.", + "operation": "Get extension", + "provider": "Microsoft KubernetesConfiguration", + "resource": "extensions" + }, + "isDataAction": false, + "origin": "user,system" + }, + { + "name": "Microsoft.KubernetesConfiguration/extensions/write", + "display": { + "description": "Create the Extension specified.", + "operation": "Create a Extension", + "provider": "Microsoft KubernetesConfiguration", + "resource": "extensions" + }, + "isDataAction": false, + "origin": "user,system" + }, + { + "name": "Microsoft.KubernetesConfiguration/extensions/delete", + "display": { + "description": "Delete the specified Extension.", + "operation": "Delete Extension", + "provider": "Microsoft KubernetesConfiguration", + "resource": "extensions" + }, + "isDataAction": false, + "origin": "user,system" + }, + { + "name": "Microsoft.KubernetesConfiguration/extensions/operations/read", + "display": { + "description": "Get the Status of the Extension Async Operation.", + "operation": "Get Extension Async Operation Status", + "provider": "Microsoft KubernetesConfiguration", + "resource": "extensions" + }, + "isDataAction": false, + "origin": "user,system" + }, + { + "name": "Microsoft.KubernetesConfiguration/fluxConfigurations/read", + "display": { + "description": "Get the specified Flux Configuration.", + "operation": "Get fluxConfiguration", + "provider": "Microsoft KubernetesConfiguration", + "resource": "fluxConfigurations" + }, + "isDataAction": false, + "origin": "user,system" + }, + { + "name": "Microsoft.KubernetesConfiguration/fluxConfigurations/write", + "display": { + "description": "Create the Flux Configuration specified.", + "operation": "Create a fluxConfiguration", + "provider": "Microsoft KubernetesConfiguration", + "resource": "fluxConfigurations" + }, + "isDataAction": false, + "origin": "user,system" + }, + { + "name": "Microsoft.KubernetesConfiguration/fluxConfigurations/delete", + "display": { + "description": "Delete the specified Flux Configuration.", + "operation": "Delete Flux Configuration", + "provider": "Microsoft KubernetesConfiguration", + "resource": "fluxConfigurations" + }, + "isDataAction": false, + "origin": "user,system" + }, + { + "name": "Microsoft.KubernetesConfiguration/fluxConfigurations/operations/read", + "display": { + "description": "Get the Status of the Flux Configuration Async Operation.", + "operation": "Get Flux Configuration Async Operation Status", + "provider": "Microsoft KubernetesConfiguration", + "resource": "fluxConfigurations" + }, + "isDataAction": false, + "origin": "user,system" + }, + { + "name": "Microsoft.KubernetesConfiguration/register/action", + "display": { + "description": "Registers subscription to Microsoft.KubernetesConfiguration resource provider.", + "operation": "Microsoft.KubernetesConfiguration/register/action", + "provider": "Microsoft Kubernetes Configuration", + "resource": "Register" + }, + "isDataAction": false, + "origin": "user,system" + }, + { + "name": "Microsoft.KubernetesConfiguration/extensionTypes/read", + "display": { + "description": "Get Kubernetes Configuration Available Extensions", + "operation": "Microsoft.KubernetesConfiguration/extensionTypes/read", + "provider": "Microsoft KubernetesConfiguration", + "resource": "extensionTypes" + }, + "isDataAction": false, + "origin": "user,system" + } + ] + } + } + }, + "operationId": "Operations_List", + "title": "BatchAccountDelete" +} diff --git a/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/operations/preview/2026-06-15-preview/operations.json b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/operations/preview/2026-06-15-preview/operations.json new file mode 100644 index 000000000000..f870eb6ed8cb --- /dev/null +++ b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/operations/preview/2026-06-15-preview/operations.json @@ -0,0 +1,275 @@ +{ + "swagger": "2.0", + "info": { + "title": "OperationsClient", + "version": "2026-06-15-preview", + "description": "Use these APIs to create extension resources through ARM, for Kubernetes Clusters.", + "x-typespec-generated": [ + { + "emitter": "@azure-tools/typespec-autorest" + } + ] + }, + "schemes": [ + "https" + ], + "host": "management.azure.com", + "produces": [ + "application/json" + ], + "consumes": [ + "application/json" + ], + "security": [ + { + "azure_auth": [ + "user_impersonation" + ] + } + ], + "securityDefinitions": { + "azure_auth": { + "type": "oauth2", + "description": "Azure Active Directory OAuth2 Flow.", + "flow": "implicit", + "authorizationUrl": "https://login.microsoftonline.com/common/oauth2/authorize", + "scopes": { + "user_impersonation": "impersonate your user account" + } + } + }, + "tags": [ + { + "name": "Operations" + }, + { + "name": "Operations in a Cluster" + } + ], + "paths": { + "/providers/Microsoft.KubernetesConfiguration/operations": { + "get": { + "operationId": "Operations_List", + "tags": [ + "Operations" + ], + "description": "List all the available operations the KubernetesConfiguration resource provider supports.", + "parameters": [ + { + "$ref": "../../../../../../common-types/resource-management/v3/types.json#/parameters/ApiVersionParameter" + } + ], + "responses": { + "200": { + "description": "Azure operation completed successfully.", + "schema": { + "$ref": "#/definitions/ResourceProviderOperationList" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "../../../../../../common-types/resource-management/v3/types.json#/definitions/ErrorResponse" + } + } + }, + "x-ms-examples": { + "BatchAccountDelete": { + "$ref": "./examples/OperationsList.json" + } + }, + "x-ms-pageable": { + "nextLinkName": "nextLink" + } + } + }, + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{clusterRp}/{clusterResourceName}/{clusterName}/providers/Microsoft.KubernetesConfiguration/operations": { + "get": { + "operationId": "OperationStatus_List", + "tags": [ + "Operations in a Cluster" + ], + "description": "List Async Operations, currently in progress, in a cluster", + "parameters": [ + { + "$ref": "../../../../../../common-types/resource-management/v3/types.json#/parameters/ApiVersionParameter" + }, + { + "$ref": "../../../../../../common-types/resource-management/v3/types.json#/parameters/SubscriptionIdParameter" + }, + { + "$ref": "../../../../../../common-types/resource-management/v3/types.json#/parameters/ResourceGroupNameParameter" + }, + { + "name": "clusterRp", + "in": "path", + "description": "The Kubernetes cluster RP - i.e. Microsoft.ContainerService, Microsoft.Kubernetes, Microsoft.HybridContainerService.", + "required": true, + "type": "string" + }, + { + "name": "clusterResourceName", + "in": "path", + "description": "The Kubernetes cluster resource name - i.e. managedClusters, connectedClusters, provisionedClusters, appliances.", + "required": true, + "type": "string" + }, + { + "name": "clusterName", + "in": "path", + "description": "The name of the kubernetes cluster.", + "required": true, + "type": "string" + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "schema": { + "$ref": "#/definitions/OperationStatusList" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "../../../../../../common-types/resource-management/v3/types.json#/definitions/ErrorResponse" + } + } + }, + "x-ms-examples": { + "AsyncOperationStatus List": { + "$ref": "./examples/ListAsyncOperationStatus.json" + } + }, + "x-ms-pageable": { + "nextLinkName": "nextLink" + } + } + } + }, + "definitions": { + "OperationStatusList": { + "type": "object", + "description": "The async operations in progress, in the cluster.", + "properties": { + "value": { + "type": "array", + "description": "List of async operations in progress, in the cluster.", + "items": { + "$ref": "#/definitions/OperationStatusResult" + }, + "readOnly": true + }, + "nextLink": { + "type": "string", + "description": "URL to get the next set of Operation Result objects, if any.", + "readOnly": true + } + } + }, + "OperationStatusResult": { + "type": "object", + "description": "The current status of an async operation.", + "properties": { + "id": { + "type": "string", + "description": "Fully qualified ID for the async operation." + }, + "name": { + "type": "string", + "description": "Name of the async operation." + }, + "status": { + "type": "string", + "description": "Operation status." + }, + "properties": { + "type": "object", + "description": "Additional information, if available.", + "x-nullable": true, + "additionalProperties": { + "type": "string" + } + }, + "error": { + "$ref": "../../../../../../common-types/resource-management/v3/types.json#/definitions/ErrorDetail", + "description": "If present, details of the operation error.", + "x-nullable": true, + "readOnly": true + } + }, + "required": [ + "status" + ] + }, + "ResourceProviderOperation": { + "type": "object", + "description": "Supported operation of this resource provider.", + "properties": { + "name": { + "type": "string", + "description": "Operation name, in format of {provider}/{resource}/{operation}" + }, + "display": { + "$ref": "#/definitions/ResourceProviderOperationDisplay", + "description": "Display metadata associated with the operation." + }, + "isDataAction": { + "type": "boolean", + "description": "The flag that indicates whether the operation applies to data plane.", + "readOnly": true + }, + "origin": { + "type": "string", + "description": "Origin of the operation", + "readOnly": true + } + } + }, + "ResourceProviderOperationDisplay": { + "type": "object", + "description": "Display metadata associated with the operation.", + "properties": { + "provider": { + "type": "string", + "description": "Resource provider: Microsoft KubernetesConfiguration." + }, + "resource": { + "type": "string", + "description": "Resource on which the operation is performed." + }, + "operation": { + "type": "string", + "description": "Type of operation: get, read, delete, etc." + }, + "description": { + "type": "string", + "description": "Description of this operation." + } + } + }, + "ResourceProviderOperationList": { + "type": "object", + "description": "Result of the request to list operations.", + "properties": { + "value": { + "type": "array", + "description": "List of operations supported by this resource provider.", + "items": { + "$ref": "#/definitions/ResourceProviderOperation" + }, + "readOnly": true, + "x-ms-identifiers": [ + "name" + ] + }, + "nextLink": { + "type": "string", + "description": "URL to the next set of results, if any.", + "readOnly": true + } + } + } + }, + "parameters": {} +} diff --git a/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/operations/readme.md b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/operations/readme.md index 343cf7d7893e..2580a5567fd2 100644 --- a/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/operations/readme.md +++ b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/operations/readme.md @@ -28,7 +28,31 @@ These are the global settings for the operations in KubernetesConfiguration. title: OperationsClient description: Operations Client openapi-type: arm -tag: package-2025-04 +tag: package-2026-06-preview +``` + +--- + +### Tag: package-2026-06-preview + +These settings apply only when `--tag=package-2026-06-preview` is specified on the command line. + +``` yaml $(tag) == 'package-2026-06-preview' +input-file: + - preview/2026-06-15-preview/operations.json +suppressions: + - code: OperationsApiSchemaUsesCommonTypes + from: operations.json + reason: Existing service contract needs to be backward compatible. + - code: OperationsApiTenantLevelOnly + from: operations.json + reason: Existing service contract needs to be backward compatible. + - code: ResourceNameRestriction + from: operations.json + reason: Existing service contract needs to be backward compatible. + - code: OperationsApiResponseSchema + from: operations.json + reason: Existing service contract needs to be backward compatible. ``` --- From c522f800e110a7971aa3b6344adaa5b138f496da Mon Sep 17 00:00:00 2001 From: Bharath Griddaluru Date: Thu, 11 Jun 2026 23:22:40 -0700 Subject: [PATCH 03/18] Add readme for upgrade assessments --- .../upgradeAssessments/readme.md | 49 +++++++++++++++++++ 1 file changed, 49 insertions(+) create mode 100644 specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/upgradeAssessments/readme.md diff --git a/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/upgradeAssessments/readme.md b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/upgradeAssessments/readme.md new file mode 100644 index 000000000000..cab1d9647293 --- /dev/null +++ b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/upgradeAssessments/readme.md @@ -0,0 +1,49 @@ +# kubernetesconfiguration + +> see https://aka.ms/autorest + +This is the AutoRest configuration file for KubernetesConfiguration. + +## Getting Started + +To build the SDKs for UpgradeAssessments in KubernetesConfiguration, simply install AutoRest via `npm` (`npm install -g autorest`) and then run: + +> `autorest readme.md` + +To see additional help and options, run: + +> `autorest --help` + +For other options on installation see [Installing AutoRest](https://aka.ms/autorest/install) on the AutoRest github page. + +--- + +## Configuration + +### Basic Information + +These are the global settings for the UpgradeAssessments in KubernetesConfiguration. + +``` yaml +title: UpgradeAssessmentsClient +description: APIs for cluster upgrade assessment resources under Microsoft.KubernetesConfiguration. +openapi-type: arm +tag: package-2026-06-preview +``` + +--- + +### Tag: package-2026-06-preview + +These settings apply only when `--tag=package-2026-06-preview` is specified on the command line. + +``` yaml $(tag) == 'package-2026-06-preview' +input-file: + - preview/2026-06-15-preview/upgradeAssessments.json +suppressions: + - code: ResourceNameRestriction + from: upgradeAssessments.json + reason: Existing service contract needs to be backward compatible. +``` + +--- From 0b5c1bcddccc1b7be4defc3beb26710eee6c28d8 Mon Sep 17 00:00:00 2001 From: Bharath Griddaluru Date: Thu, 11 Jun 2026 23:42:34 -0700 Subject: [PATCH 04/18] Add upgrade assessment example in operation --- .../examples/2026-06-15-preview/OperationsList.json | 11 +++++++++++ .../2026-06-15-preview/examples/OperationsList.json | 11 +++++++++++ .../upgradeAssessments/readme.md | 3 +++ 3 files changed, 25 insertions(+) diff --git a/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/operations/examples/2026-06-15-preview/OperationsList.json b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/operations/examples/2026-06-15-preview/OperationsList.json index 15b1a8175789..087d95d24be2 100644 --- a/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/operations/examples/2026-06-15-preview/OperationsList.json +++ b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/operations/examples/2026-06-15-preview/OperationsList.json @@ -148,6 +148,17 @@ }, "isDataAction": false, "origin": "user,system" + }, + { + "name": "Microsoft.KubernetesConfiguration/upgradeAssessments/read", + "display": { + "description": "Get the specified Upgrade Assessment.", + "operation": "Get Upgrade Assessment", + "provider": "Microsoft KubernetesConfiguration", + "resource": "upgradeAssessments" + }, + "isDataAction": false, + "origin": "user,system" } ] } diff --git a/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/operations/preview/2026-06-15-preview/examples/OperationsList.json b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/operations/preview/2026-06-15-preview/examples/OperationsList.json index 15b1a8175789..087d95d24be2 100644 --- a/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/operations/preview/2026-06-15-preview/examples/OperationsList.json +++ b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/operations/preview/2026-06-15-preview/examples/OperationsList.json @@ -148,6 +148,17 @@ }, "isDataAction": false, "origin": "user,system" + }, + { + "name": "Microsoft.KubernetesConfiguration/upgradeAssessments/read", + "display": { + "description": "Get the specified Upgrade Assessment.", + "operation": "Get Upgrade Assessment", + "provider": "Microsoft KubernetesConfiguration", + "resource": "upgradeAssessments" + }, + "isDataAction": false, + "origin": "user,system" } ] } diff --git a/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/upgradeAssessments/readme.md b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/upgradeAssessments/readme.md index cab1d9647293..b2daf8aa6884 100644 --- a/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/upgradeAssessments/readme.md +++ b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/upgradeAssessments/readme.md @@ -41,6 +41,9 @@ These settings apply only when `--tag=package-2026-06-preview` is specified on t input-file: - preview/2026-06-15-preview/upgradeAssessments.json suppressions: + - code: OperationsAPIImplementation + from: upgradeAssessments.json + reason: Operations API is implemented as a separate service. - code: ResourceNameRestriction from: upgradeAssessments.json reason: Existing service contract needs to be backward compatible. From 15bc7b6901817793a20d3e6f3737de30188709ee Mon Sep 17 00:00:00 2001 From: Bharath Griddaluru Date: Mon, 15 Jun 2026 15:23:50 -0700 Subject: [PATCH 05/18] Add readmes --- .../upgradeAssessments/main.tsp | 1 + .../upgradeAssessments/readme.csharp.md | 15 +++++++ .../upgradeAssessments/readme.go.md | 11 +++++ .../upgradeAssessments/readme.md | 40 +++++++++++++++++++ .../upgradeAssessments/readme.python.md | 19 +++++++++ .../upgradeAssessments/readme.ruby.md | 19 +++++++++ .../upgradeAssessments/readme.typescript.md | 13 ++++++ 7 files changed, 118 insertions(+) create mode 100644 specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/upgradeAssessments/readme.csharp.md create mode 100644 specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/upgradeAssessments/readme.go.md create mode 100644 specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/upgradeAssessments/readme.python.md create mode 100644 specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/upgradeAssessments/readme.ruby.md create mode 100644 specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/upgradeAssessments/readme.typescript.md diff --git a/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/upgradeAssessments/main.tsp b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/upgradeAssessments/main.tsp index 23a6f8ae333c..cb2c6e11eb0d 100644 --- a/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/upgradeAssessments/main.tsp +++ b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/upgradeAssessments/main.tsp @@ -29,5 +29,6 @@ enum Versions { /** * The 2026-06-15-preview API version. */ + @Azure.Core.previewVersion v2026_06_15_preview: "2026-06-15-preview", } diff --git a/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/upgradeAssessments/readme.csharp.md b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/upgradeAssessments/readme.csharp.md new file mode 100644 index 000000000000..f6f5fb362136 --- /dev/null +++ b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/upgradeAssessments/readme.csharp.md @@ -0,0 +1,15 @@ +## C# + +These settings apply only when `--csharp` is specified on the command line. +Please also specify `--csharp-sdks-folder=`. + +```yaml $(csharp) +csharp: + azure-arm: true + license-header: MICROSOFT_MIT_NO_VERSION + payload-flattening-threshold: 1 + clear-output-folder: true + client-side-validation: false + namespace: Microsoft.Azure.Management.KubernetesConfiguration.UpgradeAssessments + output-folder: $(csharp-sdks-folder)/kubernetesconfiguration/Microsoft.Azure.Management.KubernetesConfiguration.UpgradeAssessments/src/Generated +``` diff --git a/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/upgradeAssessments/readme.go.md b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/upgradeAssessments/readme.go.md new file mode 100644 index 000000000000..c1a6e8b5a35c --- /dev/null +++ b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/upgradeAssessments/readme.go.md @@ -0,0 +1,11 @@ +## Go + +These settings apply only when `--go` is specified on the command line. + +``` yaml $(go) && $(track2) +license-header: MICROSOFT_MIT_NO_VERSION +module-name: sdk/resourcemanager/kubernetesconfiguration/armupgradeassessments +module: github.com/Azure/azure-sdk-for-go/$(module-name) +output-folder: $(go-sdk-folder)/$(module-name) +azure-arm: true +``` diff --git a/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/upgradeAssessments/readme.md b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/upgradeAssessments/readme.md index b2daf8aa6884..27c2312346c4 100644 --- a/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/upgradeAssessments/readme.md +++ b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/upgradeAssessments/readme.md @@ -50,3 +50,43 @@ suppressions: ``` --- + +# Code Generation + +## Swagger to SDK + +This section describes what SDK should be generated by the automatic system. +This is not used by Autorest itself. + +``` yaml $(swagger-to-sdk) +swagger-to-sdk: + - repo: azure-sdk-for-python + - repo: azure-sdk-for-java + - repo: azure-sdk-for-go + - repo: azure-sdk-for-js + - repo: azure-sdk-for-ruby + after_scripts: + - bundle install && rake arm:regen_all_profiles['azure_mgmt_kubernetesconfiguration'] + - repo: azure-resource-manager-schemas + - repo: azure-powershell +``` + +## Go + +See configuration in [readme.go.md](./readme.go.md) + +## Python + +See configuration in [readme.python.md](./readme.python.md) + +## Ruby + +See configuration in [readme.ruby.md](./readme.ruby.md) + +## TypeScript + +See configuration in [readme.typescript.md](./readme.typescript.md) + +## CSharp + +See configuration in [readme.csharp.md](./readme.csharp.md) diff --git a/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/upgradeAssessments/readme.python.md b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/upgradeAssessments/readme.python.md new file mode 100644 index 000000000000..3c024c8e46e4 --- /dev/null +++ b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/upgradeAssessments/readme.python.md @@ -0,0 +1,19 @@ +## Python + +These settings apply only when `--python` is specified on the command line. +Please also specify `--python-sdks-folder=`. + +``` yaml $(python) +title: UpgradeAssessmentsMgmtClient +azure-arm: true +license-header: MICROSOFT_MIT_NO_VERSION +package-name: azure-mgmt-kubernetesconfiguration-upgradeassessments +namespace: azure.mgmt.kubernetesconfiguration.upgradeassessments +package-version: 1.0.0b1 +clear-output-folder: true +``` + +``` yaml $(python) +no-namespace-folders: true +output-folder: $(python-sdks-folder)/kubernetesconfiguration/azure-mgmt-kubernetesconfiguration-upgradeassessments/azure/mgmt/kubernetesconfiguration/upgradeassessments +``` diff --git a/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/upgradeAssessments/readme.ruby.md b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/upgradeAssessments/readme.ruby.md new file mode 100644 index 000000000000..eec6b132752b --- /dev/null +++ b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/upgradeAssessments/readme.ruby.md @@ -0,0 +1,19 @@ +## Ruby + +These settings apply only when `--ruby` is specified on the command line. + +```yaml +package-name: azure_mgmt_kubernetesconfiguration_upgradeassessments +package-version: "0.1.0" +azure-arm: true +``` + +### Tag: package-2026-06-preview and ruby + +These settings apply only when `--tag=package-2026-06-preview --ruby` is specified on the command line. +Please also specify `--ruby-sdks-folder=`. + +```yaml $(tag) == 'package-2026-06-preview' && $(ruby) +namespace: "Azure::KubernetesConfiguration::UpgradeAssessments::Mgmt::V2026_06_15_preview" +output-folder: $(ruby-sdks-folder)/management/azure_mgmt_kubernetesconfiguration/lib +``` diff --git a/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/upgradeAssessments/readme.typescript.md b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/upgradeAssessments/readme.typescript.md new file mode 100644 index 000000000000..10ca9625decf --- /dev/null +++ b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/upgradeAssessments/readme.typescript.md @@ -0,0 +1,13 @@ +## TypeScript + +These settings apply only when `--typescript` is specified on the command line. +Please also specify `--typescript-sdks-folder=`. + +```yaml $(typescript) +typescript: + azure-arm: true + package-name: "@azure/arm-kubernetesconfiguration-upgradeassessments" + output-folder: "$(typescript-sdks-folder)/sdk/kubernetesconfiguration/arm-kubernetesconfiguration-upgradeassessments" + override-client-name: UpgradeAssessmentsClient + generate-metadata: true +``` From 324e99b98b15bf8f41952ac697d50b65e2385cad Mon Sep 17 00:00:00 2001 From: Bharath Griddaluru Date: Tue, 23 Jun 2026 13:22:57 -0700 Subject: [PATCH 06/18] Fix review comments --- .../GetUpgradeAssessments.json | 10 +++--- .../ListUpgradeAssessments.json | 4 +-- .../upgradeAssessments/models.tsp | 17 +++------- .../examples/GetUpgradeAssessments.json | 10 +++--- .../examples/ListUpgradeAssessments.json | 4 +-- .../upgradeAssessments.json | 34 ++++--------------- 6 files changed, 25 insertions(+), 54 deletions(-) diff --git a/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/upgradeAssessments/examples/2026-06-15-preview/GetUpgradeAssessments.json b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/upgradeAssessments/examples/2026-06-15-preview/GetUpgradeAssessments.json index f6118b78ef00..2a42e0f71ade 100644 --- a/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/upgradeAssessments/examples/2026-06-15-preview/GetUpgradeAssessments.json +++ b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/upgradeAssessments/examples/2026-06-15-preview/GetUpgradeAssessments.json @@ -34,13 +34,13 @@ "name": "kube-proxy", "version": "1.27.9", "compatibilityStatus": "Compatible", - "severity": "Pass" + "severity": "None" }, { "name": "coredns", "version": "1.10.1", "compatibilityStatus": "Compatible", - "severity": "Pass" + "severity": "None" }, { "name": "cert-manager", @@ -92,19 +92,19 @@ "readinessChecks": [ { "category": "APIServerHealth", - "severity": "Pass", + "severity": "None", "details": "API server /healthz and /readyz endpoints responded successfully." }, { "category": "NodeStatus", "name": "aks-nodepool1-12345678-vmss000000", - "severity": "Pass", + "severity": "None", "details": "Node is Ready. Kubelet version: v1.27.9." }, { "category": "NodeStatus", "name": "aks-nodepool1-12345678-vmss000001", - "severity": "Pass", + "severity": "None", "details": "Node is Ready. Kubelet version: v1.27.9." }, { diff --git a/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/upgradeAssessments/examples/2026-06-15-preview/ListUpgradeAssessments.json b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/upgradeAssessments/examples/2026-06-15-preview/ListUpgradeAssessments.json index 11105254b318..5d8d882df231 100644 --- a/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/upgradeAssessments/examples/2026-06-15-preview/ListUpgradeAssessments.json +++ b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/upgradeAssessments/examples/2026-06-15-preview/ListUpgradeAssessments.json @@ -35,7 +35,7 @@ "name": "kube-proxy", "version": "1.27.9", "compatibilityStatus": "Compatible", - "severity": "Pass" + "severity": "None" }, { "name": "cert-manager", @@ -58,7 +58,7 @@ "readinessChecks": [ { "category": "APIServerHealth", - "severity": "Pass", + "severity": "None", "details": "API server /healthz and /readyz endpoints responded successfully." } ] diff --git a/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/upgradeAssessments/models.tsp b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/upgradeAssessments/models.tsp index b53f1519386c..03c385f0edc5 100644 --- a/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/upgradeAssessments/models.tsp +++ b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/upgradeAssessments/models.tsp @@ -20,7 +20,7 @@ union Severity { string, /** No issues found. */ - Pass: "Pass", + None: "None", /** Non-blocking issues found; upgrade is possible but action is recommended. */ Warning: "Warning", @@ -45,7 +45,7 @@ union CompatibilityStatus { /** Component is incompatible with the target version. */ Incompatible: "Incompatible", - /** Compatibility status is unknown. */ + /** Compatibility could not be determined due to insufficient information. */ Unknown: "Unknown", } @@ -61,15 +61,6 @@ union ReadinessCategory { /** Pod disruption budget check. */ PodDisruptionBudget: "PodDisruptionBudget", - - /** Addon compatibility check. */ - Addon: "Addon", - - /** Storage compatibility check. */ - Storage: "Storage", - - /** Networking compatibility check. */ - Networking: "Networking", } // ─── UpgradeAssessment sub-models ───────────────────────────────────────────── @@ -140,7 +131,7 @@ model DeprecatedApiUsage { lastUsageObservedAt?: utcDateTime; /** Severity of continued use of this deprecated API. */ - severity: Severity; + severity?: Severity; } /** A single cluster readiness check result. */ @@ -155,7 +146,7 @@ model ReadinessCheck { name?: string; /** Severity of the check result. */ - severity: Severity; + severity?: Severity; /** Human-readable reason when severity is not 'pass'. */ details?: string; diff --git a/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/upgradeAssessments/preview/2026-06-15-preview/examples/GetUpgradeAssessments.json b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/upgradeAssessments/preview/2026-06-15-preview/examples/GetUpgradeAssessments.json index f6118b78ef00..2a42e0f71ade 100644 --- a/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/upgradeAssessments/preview/2026-06-15-preview/examples/GetUpgradeAssessments.json +++ b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/upgradeAssessments/preview/2026-06-15-preview/examples/GetUpgradeAssessments.json @@ -34,13 +34,13 @@ "name": "kube-proxy", "version": "1.27.9", "compatibilityStatus": "Compatible", - "severity": "Pass" + "severity": "None" }, { "name": "coredns", "version": "1.10.1", "compatibilityStatus": "Compatible", - "severity": "Pass" + "severity": "None" }, { "name": "cert-manager", @@ -92,19 +92,19 @@ "readinessChecks": [ { "category": "APIServerHealth", - "severity": "Pass", + "severity": "None", "details": "API server /healthz and /readyz endpoints responded successfully." }, { "category": "NodeStatus", "name": "aks-nodepool1-12345678-vmss000000", - "severity": "Pass", + "severity": "None", "details": "Node is Ready. Kubelet version: v1.27.9." }, { "category": "NodeStatus", "name": "aks-nodepool1-12345678-vmss000001", - "severity": "Pass", + "severity": "None", "details": "Node is Ready. Kubelet version: v1.27.9." }, { diff --git a/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/upgradeAssessments/preview/2026-06-15-preview/examples/ListUpgradeAssessments.json b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/upgradeAssessments/preview/2026-06-15-preview/examples/ListUpgradeAssessments.json index 11105254b318..5d8d882df231 100644 --- a/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/upgradeAssessments/preview/2026-06-15-preview/examples/ListUpgradeAssessments.json +++ b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/upgradeAssessments/preview/2026-06-15-preview/examples/ListUpgradeAssessments.json @@ -35,7 +35,7 @@ "name": "kube-proxy", "version": "1.27.9", "compatibilityStatus": "Compatible", - "severity": "Pass" + "severity": "None" }, { "name": "cert-manager", @@ -58,7 +58,7 @@ "readinessChecks": [ { "category": "APIServerHealth", - "severity": "Pass", + "severity": "None", "details": "API server /healthz and /readyz endpoints responded successfully." } ] diff --git a/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/upgradeAssessments/preview/2026-06-15-preview/upgradeAssessments.json b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/upgradeAssessments/preview/2026-06-15-preview/upgradeAssessments.json index 645442d2e72f..df6cf23b457b 100644 --- a/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/upgradeAssessments/preview/2026-06-15-preview/upgradeAssessments.json +++ b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/upgradeAssessments/preview/2026-06-15-preview/upgradeAssessments.json @@ -214,7 +214,7 @@ { "name": "Unknown", "value": "Unknown", - "description": "Compatibility status is unknown." + "description": "Compatibility could not be determined due to insufficient information." } ] } @@ -292,8 +292,7 @@ "required": [ "group", "version", - "resource", - "severity" + "resource" ] }, "HttpVerbUsageMetrics": { @@ -343,10 +342,7 @@ "enum": [ "NodeStatus", "APIServerHealth", - "PodDisruptionBudget", - "Addon", - "Storage", - "Networking" + "PodDisruptionBudget" ], "x-ms-enum": { "name": "ReadinessCategory", @@ -366,21 +362,6 @@ "name": "PodDisruptionBudget", "value": "PodDisruptionBudget", "description": "Pod disruption budget check." - }, - { - "name": "Addon", - "value": "Addon", - "description": "Addon compatibility check." - }, - { - "name": "Storage", - "value": "Storage", - "description": "Storage compatibility check." - }, - { - "name": "Networking", - "value": "Networking", - "description": "Networking compatibility check." } ] } @@ -407,15 +388,14 @@ } }, "required": [ - "category", - "severity" + "category" ] }, "Severity": { "type": "string", "description": "Severity of an upgrade-assessment finding or readiness check.", "enum": [ - "Pass", + "None", "Warning", "Critical", "Unknown" @@ -425,8 +405,8 @@ "modelAsString": true, "values": [ { - "name": "Pass", - "value": "Pass", + "name": "None", + "value": "None", "description": "No issues found." }, { From d5706da05f506cc81fdc35f213681687749e6b3c Mon Sep 17 00:00:00 2001 From: Bharath Griddaluru Date: Tue, 23 Jun 2026 13:36:21 -0700 Subject: [PATCH 07/18] Add provisioning state to reduce suppressions --- .../upgradeAssessments/models.tsp | 7 +++- .../upgradeAssessments.json | 35 +++++++++++++++++++ .../upgradeAssessments/readme.md | 3 -- 3 files changed, 41 insertions(+), 4 deletions(-) diff --git a/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/upgradeAssessments/models.tsp b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/upgradeAssessments/models.tsp index 03c385f0edc5..76e2bb2740ca 100644 --- a/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/upgradeAssessments/models.tsp +++ b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/upgradeAssessments/models.tsp @@ -155,8 +155,13 @@ model ReadinessCheck { // ─── ARM resource properties ────────────────────────────────────────────────── /** Properties of a single UpgradeAssessment ARM resource. */ -#suppress "@azure-tools/typespec-azure-resource-manager/arm-resource-provisioning-state" "This resource does not have a provisioning state per the original Swagger design" model UpgradeAssessmentProperties { + /** + * Provisioning state of the UpgradeAssessment. + */ + @visibility(Lifecycle.Read) + provisioningState?: ResourceProvisioningState; + /** Current Kubernetes version running on the cluster (e.g., '1.29'). */ @visibility(Lifecycle.Read) currentKubernetesVersion?: string; diff --git a/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/upgradeAssessments/preview/2026-06-15-preview/upgradeAssessments.json b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/upgradeAssessments/preview/2026-06-15-preview/upgradeAssessments.json index df6cf23b457b..00046a9faec8 100644 --- a/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/upgradeAssessments/preview/2026-06-15-preview/upgradeAssessments.json +++ b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/upgradeAssessments/preview/2026-06-15-preview/upgradeAssessments.json @@ -183,6 +183,36 @@ } }, "definitions": { + "Azure.ResourceManager.ResourceProvisioningState": { + "type": "string", + "description": "The provisioning state of a resource type.", + "enum": [ + "Succeeded", + "Failed", + "Canceled" + ], + "x-ms-enum": { + "name": "ResourceProvisioningState", + "modelAsString": true, + "values": [ + { + "name": "Succeeded", + "value": "Succeeded", + "description": "Resource has been created." + }, + { + "name": "Failed", + "value": "Failed", + "description": "Resource creation failed." + }, + { + "name": "Canceled", + "value": "Canceled", + "description": "Resource creation was canceled." + } + ] + } + }, "CompatibilityStatus": { "type": "string", "description": "Compatibility status of a cluster component with the target Kubernetes version.", @@ -467,6 +497,11 @@ "type": "object", "description": "Properties of a single UpgradeAssessment ARM resource.", "properties": { + "provisioningState": { + "$ref": "#/definitions/Azure.ResourceManager.ResourceProvisioningState", + "description": "Provisioning state of the UpgradeAssessment.", + "readOnly": true + }, "currentKubernetesVersion": { "type": "string", "description": "Current Kubernetes version running on the cluster (e.g., '1.29').", diff --git a/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/upgradeAssessments/readme.md b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/upgradeAssessments/readme.md index 27c2312346c4..86c175398a7d 100644 --- a/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/upgradeAssessments/readme.md +++ b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/upgradeAssessments/readme.md @@ -44,9 +44,6 @@ suppressions: - code: OperationsAPIImplementation from: upgradeAssessments.json reason: Operations API is implemented as a separate service. - - code: ResourceNameRestriction - from: upgradeAssessments.json - reason: Existing service contract needs to be backward compatible. ``` --- From 2bd8fb12a7c1208608bbf294c62a44cc50a92c89 Mon Sep 17 00:00:00 2001 From: Bharath Griddaluru Date: Tue, 23 Jun 2026 13:56:13 -0700 Subject: [PATCH 08/18] Add provisioning state to reduce suppressions --- .../upgradeAssessments/models.tsp | 16 ++++- .../upgradeAssessments.json | 62 +++++++++---------- 2 files changed, 46 insertions(+), 32 deletions(-) diff --git a/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/upgradeAssessments/models.tsp b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/upgradeAssessments/models.tsp index 76e2bb2740ca..fb379d6a566b 100644 --- a/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/upgradeAssessments/models.tsp +++ b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/upgradeAssessments/models.tsp @@ -15,6 +15,20 @@ namespace Microsoft.KubernetesConfiguration; // ─── UpgradeAssessment enums ────────────────────────────────────────────────── +/** Provisioning state of a resource. */ +union ProvisioningState { + string, + + /** Resource is active. */ + Succeeded: "Succeeded", + + /** Resource provisioning has failed. */ + Failed: "Failed", + + /** Resource is being deleted. */ + Canceled: "Canceled", +} + /** Severity of an upgrade-assessment finding or readiness check. */ union Severity { string, @@ -160,7 +174,7 @@ model UpgradeAssessmentProperties { * Provisioning state of the UpgradeAssessment. */ @visibility(Lifecycle.Read) - provisioningState?: ResourceProvisioningState; + provisioningState?: ProvisioningState; /** Current Kubernetes version running on the cluster (e.g., '1.29'). */ @visibility(Lifecycle.Read) diff --git a/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/upgradeAssessments/preview/2026-06-15-preview/upgradeAssessments.json b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/upgradeAssessments/preview/2026-06-15-preview/upgradeAssessments.json index 00046a9faec8..0f2ef61c483d 100644 --- a/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/upgradeAssessments/preview/2026-06-15-preview/upgradeAssessments.json +++ b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/upgradeAssessments/preview/2026-06-15-preview/upgradeAssessments.json @@ -183,36 +183,6 @@ } }, "definitions": { - "Azure.ResourceManager.ResourceProvisioningState": { - "type": "string", - "description": "The provisioning state of a resource type.", - "enum": [ - "Succeeded", - "Failed", - "Canceled" - ], - "x-ms-enum": { - "name": "ResourceProvisioningState", - "modelAsString": true, - "values": [ - { - "name": "Succeeded", - "value": "Succeeded", - "description": "Resource has been created." - }, - { - "name": "Failed", - "value": "Failed", - "description": "Resource creation failed." - }, - { - "name": "Canceled", - "value": "Canceled", - "description": "Resource creation was canceled." - } - ] - } - }, "CompatibilityStatus": { "type": "string", "description": "Compatibility status of a cluster component with the target Kubernetes version.", @@ -366,6 +336,36 @@ } } }, + "ProvisioningState": { + "type": "string", + "description": "Provisioning state of a resource.", + "enum": [ + "Succeeded", + "Failed", + "Canceled" + ], + "x-ms-enum": { + "name": "ProvisioningState", + "modelAsString": true, + "values": [ + { + "name": "Succeeded", + "value": "Succeeded", + "description": "Resource is active." + }, + { + "name": "Failed", + "value": "Failed", + "description": "Resource provisioning has failed." + }, + { + "name": "Canceled", + "value": "Canceled", + "description": "Resource is being deleted." + } + ] + } + }, "ReadinessCategory": { "type": "string", "description": "Category of a cluster readiness check.", @@ -498,7 +498,7 @@ "description": "Properties of a single UpgradeAssessment ARM resource.", "properties": { "provisioningState": { - "$ref": "#/definitions/Azure.ResourceManager.ResourceProvisioningState", + "$ref": "#/definitions/ProvisioningState", "description": "Provisioning state of the UpgradeAssessment.", "readOnly": true }, From e6b73b612ab6026436e24798dfb88f11bbf31803 Mon Sep 17 00:00:00 2001 From: Bharath Griddaluru Date: Tue, 23 Jun 2026 14:26:25 -0700 Subject: [PATCH 09/18] Remove Provisioning state --- .../upgradeAssessments/models.tsp | 21 +---------- .../upgradeAssessments.json | 35 ------------------- 2 files changed, 1 insertion(+), 55 deletions(-) diff --git a/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/upgradeAssessments/models.tsp b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/upgradeAssessments/models.tsp index fb379d6a566b..e133e744332d 100644 --- a/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/upgradeAssessments/models.tsp +++ b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/upgradeAssessments/models.tsp @@ -15,20 +15,6 @@ namespace Microsoft.KubernetesConfiguration; // ─── UpgradeAssessment enums ────────────────────────────────────────────────── -/** Provisioning state of a resource. */ -union ProvisioningState { - string, - - /** Resource is active. */ - Succeeded: "Succeeded", - - /** Resource provisioning has failed. */ - Failed: "Failed", - - /** Resource is being deleted. */ - Canceled: "Canceled", -} - /** Severity of an upgrade-assessment finding or readiness check. */ union Severity { string, @@ -169,13 +155,8 @@ model ReadinessCheck { // ─── ARM resource properties ────────────────────────────────────────────────── /** Properties of a single UpgradeAssessment ARM resource. */ +#suppress "@azure-tools/typespec-azure-resource-manager/arm-resource-provisioning-state" "This is a read-only resource and doesn't " model UpgradeAssessmentProperties { - /** - * Provisioning state of the UpgradeAssessment. - */ - @visibility(Lifecycle.Read) - provisioningState?: ProvisioningState; - /** Current Kubernetes version running on the cluster (e.g., '1.29'). */ @visibility(Lifecycle.Read) currentKubernetesVersion?: string; diff --git a/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/upgradeAssessments/preview/2026-06-15-preview/upgradeAssessments.json b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/upgradeAssessments/preview/2026-06-15-preview/upgradeAssessments.json index 0f2ef61c483d..df6cf23b457b 100644 --- a/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/upgradeAssessments/preview/2026-06-15-preview/upgradeAssessments.json +++ b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/upgradeAssessments/preview/2026-06-15-preview/upgradeAssessments.json @@ -336,36 +336,6 @@ } } }, - "ProvisioningState": { - "type": "string", - "description": "Provisioning state of a resource.", - "enum": [ - "Succeeded", - "Failed", - "Canceled" - ], - "x-ms-enum": { - "name": "ProvisioningState", - "modelAsString": true, - "values": [ - { - "name": "Succeeded", - "value": "Succeeded", - "description": "Resource is active." - }, - { - "name": "Failed", - "value": "Failed", - "description": "Resource provisioning has failed." - }, - { - "name": "Canceled", - "value": "Canceled", - "description": "Resource is being deleted." - } - ] - } - }, "ReadinessCategory": { "type": "string", "description": "Category of a cluster readiness check.", @@ -497,11 +467,6 @@ "type": "object", "description": "Properties of a single UpgradeAssessment ARM resource.", "properties": { - "provisioningState": { - "$ref": "#/definitions/ProvisioningState", - "description": "Provisioning state of the UpgradeAssessment.", - "readOnly": true - }, "currentKubernetesVersion": { "type": "string", "description": "Current Kubernetes version running on the cluster (e.g., '1.29').", From 8ccd7d0e0f89834e00135f377fd8e3fe23980624 Mon Sep 17 00:00:00 2001 From: Bharath Griddaluru Date: Tue, 23 Jun 2026 15:15:38 -0700 Subject: [PATCH 10/18] Add java read me --- .../upgradeAssessments/readme.java.md | 17 +++++++++++++++++ .../upgradeAssessments/readme.md | 4 ++++ 2 files changed, 21 insertions(+) create mode 100644 specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/upgradeAssessments/readme.java.md diff --git a/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/upgradeAssessments/readme.java.md b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/upgradeAssessments/readme.java.md new file mode 100644 index 000000000000..28b3d6cde402 --- /dev/null +++ b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/upgradeAssessments/readme.java.md @@ -0,0 +1,17 @@ +## Java + +These settings apply only when `--java` is specified on the command line. +Please also specify `--azure-libraries-for-java-folder=`. + +### Tag: package-2026-06-preview and java + +These settings apply only when `--tag=package-2026-06-preview --java` is specified on the command line. +Please also specify `--azure-libraries-for-java-folder=`. + +``` yaml $(tag) == 'package-2026-06-preview' && $(java) +java: + namespace: com.microsoft.azure.management.kubernetesconfiguration.upgradeassessments.v2026_06_15_preview + output-folder: $(azure-libraries-for-java-folder)/sdk/kubernetesconfiguration/mgmt-v2026_06_15_preview + regenerate-manager: true + generate-interface: true +``` \ No newline at end of file diff --git a/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/upgradeAssessments/readme.md b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/upgradeAssessments/readme.md index 86c175398a7d..ebffe08464f6 100644 --- a/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/upgradeAssessments/readme.md +++ b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/upgradeAssessments/readme.md @@ -72,6 +72,10 @@ swagger-to-sdk: See configuration in [readme.go.md](./readme.go.md) +## Java + +See configuration in [readme.java.md](./readme.java.md) + ## Python See configuration in [readme.python.md](./readme.python.md) From 38d4ea87b3cfcc08c7c29c69888047096e14f796 Mon Sep 17 00:00:00 2001 From: Bharath Griddaluru Date: Tue, 23 Jun 2026 15:20:37 -0700 Subject: [PATCH 11/18] Fix java file --- .../upgradeAssessments/readme.java.md | 14 +++----------- 1 file changed, 3 insertions(+), 11 deletions(-) diff --git a/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/upgradeAssessments/readme.java.md b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/upgradeAssessments/readme.java.md index 28b3d6cde402..cd2933326c2c 100644 --- a/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/upgradeAssessments/readme.java.md +++ b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/upgradeAssessments/readme.java.md @@ -3,15 +3,7 @@ These settings apply only when `--java` is specified on the command line. Please also specify `--azure-libraries-for-java-folder=`. -### Tag: package-2026-06-preview and java - -These settings apply only when `--tag=package-2026-06-preview --java` is specified on the command line. -Please also specify `--azure-libraries-for-java-folder=`. - -``` yaml $(tag) == 'package-2026-06-preview' && $(java) -java: - namespace: com.microsoft.azure.management.kubernetesconfiguration.upgradeassessments.v2026_06_15_preview - output-folder: $(azure-libraries-for-java-folder)/sdk/kubernetesconfiguration/mgmt-v2026_06_15_preview - regenerate-manager: true - generate-interface: true +``` yaml $(java) +title: UpgradeAssessmentsClient +namespace: com.microsoft.azure.management.kubernetesconfiguration.upgradeassessments ``` \ No newline at end of file From dea23f9afefec52f0999d53e76132e2c5fdfd996 Mon Sep 17 00:00:00 2001 From: Bharath Griddaluru Date: Thu, 25 Jun 2026 16:33:47 -0700 Subject: [PATCH 12/18] Use tspconfig.yaml for code generation --- .../upgradeAssessments/readme.csharp.md | 15 ------ .../upgradeAssessments/readme.go.md | 11 ----- .../upgradeAssessments/readme.java.md | 9 ---- .../upgradeAssessments/readme.md | 48 +------------------ .../upgradeAssessments/readme.python.md | 19 -------- .../upgradeAssessments/readme.ruby.md | 19 -------- .../upgradeAssessments/readme.typescript.md | 13 ----- 7 files changed, 1 insertion(+), 133 deletions(-) delete mode 100644 specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/upgradeAssessments/readme.csharp.md delete mode 100644 specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/upgradeAssessments/readme.go.md delete mode 100644 specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/upgradeAssessments/readme.java.md delete mode 100644 specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/upgradeAssessments/readme.python.md delete mode 100644 specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/upgradeAssessments/readme.ruby.md delete mode 100644 specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/upgradeAssessments/readme.typescript.md diff --git a/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/upgradeAssessments/readme.csharp.md b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/upgradeAssessments/readme.csharp.md deleted file mode 100644 index f6f5fb362136..000000000000 --- a/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/upgradeAssessments/readme.csharp.md +++ /dev/null @@ -1,15 +0,0 @@ -## C# - -These settings apply only when `--csharp` is specified on the command line. -Please also specify `--csharp-sdks-folder=`. - -```yaml $(csharp) -csharp: - azure-arm: true - license-header: MICROSOFT_MIT_NO_VERSION - payload-flattening-threshold: 1 - clear-output-folder: true - client-side-validation: false - namespace: Microsoft.Azure.Management.KubernetesConfiguration.UpgradeAssessments - output-folder: $(csharp-sdks-folder)/kubernetesconfiguration/Microsoft.Azure.Management.KubernetesConfiguration.UpgradeAssessments/src/Generated -``` diff --git a/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/upgradeAssessments/readme.go.md b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/upgradeAssessments/readme.go.md deleted file mode 100644 index c1a6e8b5a35c..000000000000 --- a/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/upgradeAssessments/readme.go.md +++ /dev/null @@ -1,11 +0,0 @@ -## Go - -These settings apply only when `--go` is specified on the command line. - -``` yaml $(go) && $(track2) -license-header: MICROSOFT_MIT_NO_VERSION -module-name: sdk/resourcemanager/kubernetesconfiguration/armupgradeassessments -module: github.com/Azure/azure-sdk-for-go/$(module-name) -output-folder: $(go-sdk-folder)/$(module-name) -azure-arm: true -``` diff --git a/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/upgradeAssessments/readme.java.md b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/upgradeAssessments/readme.java.md deleted file mode 100644 index cd2933326c2c..000000000000 --- a/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/upgradeAssessments/readme.java.md +++ /dev/null @@ -1,9 +0,0 @@ -## Java - -These settings apply only when `--java` is specified on the command line. -Please also specify `--azure-libraries-for-java-folder=`. - -``` yaml $(java) -title: UpgradeAssessmentsClient -namespace: com.microsoft.azure.management.kubernetesconfiguration.upgradeassessments -``` \ No newline at end of file diff --git a/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/upgradeAssessments/readme.md b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/upgradeAssessments/readme.md index ebffe08464f6..895d47e4eacf 100644 --- a/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/upgradeAssessments/readme.md +++ b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/upgradeAssessments/readme.md @@ -44,50 +44,4 @@ suppressions: - code: OperationsAPIImplementation from: upgradeAssessments.json reason: Operations API is implemented as a separate service. -``` - ---- - -# Code Generation - -## Swagger to SDK - -This section describes what SDK should be generated by the automatic system. -This is not used by Autorest itself. - -``` yaml $(swagger-to-sdk) -swagger-to-sdk: - - repo: azure-sdk-for-python - - repo: azure-sdk-for-java - - repo: azure-sdk-for-go - - repo: azure-sdk-for-js - - repo: azure-sdk-for-ruby - after_scripts: - - bundle install && rake arm:regen_all_profiles['azure_mgmt_kubernetesconfiguration'] - - repo: azure-resource-manager-schemas - - repo: azure-powershell -``` - -## Go - -See configuration in [readme.go.md](./readme.go.md) - -## Java - -See configuration in [readme.java.md](./readme.java.md) - -## Python - -See configuration in [readme.python.md](./readme.python.md) - -## Ruby - -See configuration in [readme.ruby.md](./readme.ruby.md) - -## TypeScript - -See configuration in [readme.typescript.md](./readme.typescript.md) - -## CSharp - -See configuration in [readme.csharp.md](./readme.csharp.md) +``` \ No newline at end of file diff --git a/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/upgradeAssessments/readme.python.md b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/upgradeAssessments/readme.python.md deleted file mode 100644 index 3c024c8e46e4..000000000000 --- a/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/upgradeAssessments/readme.python.md +++ /dev/null @@ -1,19 +0,0 @@ -## Python - -These settings apply only when `--python` is specified on the command line. -Please also specify `--python-sdks-folder=`. - -``` yaml $(python) -title: UpgradeAssessmentsMgmtClient -azure-arm: true -license-header: MICROSOFT_MIT_NO_VERSION -package-name: azure-mgmt-kubernetesconfiguration-upgradeassessments -namespace: azure.mgmt.kubernetesconfiguration.upgradeassessments -package-version: 1.0.0b1 -clear-output-folder: true -``` - -``` yaml $(python) -no-namespace-folders: true -output-folder: $(python-sdks-folder)/kubernetesconfiguration/azure-mgmt-kubernetesconfiguration-upgradeassessments/azure/mgmt/kubernetesconfiguration/upgradeassessments -``` diff --git a/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/upgradeAssessments/readme.ruby.md b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/upgradeAssessments/readme.ruby.md deleted file mode 100644 index eec6b132752b..000000000000 --- a/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/upgradeAssessments/readme.ruby.md +++ /dev/null @@ -1,19 +0,0 @@ -## Ruby - -These settings apply only when `--ruby` is specified on the command line. - -```yaml -package-name: azure_mgmt_kubernetesconfiguration_upgradeassessments -package-version: "0.1.0" -azure-arm: true -``` - -### Tag: package-2026-06-preview and ruby - -These settings apply only when `--tag=package-2026-06-preview --ruby` is specified on the command line. -Please also specify `--ruby-sdks-folder=`. - -```yaml $(tag) == 'package-2026-06-preview' && $(ruby) -namespace: "Azure::KubernetesConfiguration::UpgradeAssessments::Mgmt::V2026_06_15_preview" -output-folder: $(ruby-sdks-folder)/management/azure_mgmt_kubernetesconfiguration/lib -``` diff --git a/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/upgradeAssessments/readme.typescript.md b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/upgradeAssessments/readme.typescript.md deleted file mode 100644 index 10ca9625decf..000000000000 --- a/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/upgradeAssessments/readme.typescript.md +++ /dev/null @@ -1,13 +0,0 @@ -## TypeScript - -These settings apply only when `--typescript` is specified on the command line. -Please also specify `--typescript-sdks-folder=`. - -```yaml $(typescript) -typescript: - azure-arm: true - package-name: "@azure/arm-kubernetesconfiguration-upgradeassessments" - output-folder: "$(typescript-sdks-folder)/sdk/kubernetesconfiguration/arm-kubernetesconfiguration-upgradeassessments" - override-client-name: UpgradeAssessmentsClient - generate-metadata: true -``` From b0af85a7023542ba0076b7b0777b5c4a274b365d Mon Sep 17 00:00:00 2001 From: Bharath Griddaluru Date: Fri, 26 Jun 2026 14:47:10 -0700 Subject: [PATCH 13/18] Fix review comments --- .../operations/preview/2026-06-15-preview/operations.json | 2 +- .../upgradeAssessments/models.tsp | 5 +++-- .../preview/2026-06-15-preview/upgradeAssessments.json | 7 +++++-- 3 files changed, 9 insertions(+), 5 deletions(-) diff --git a/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/operations/preview/2026-06-15-preview/operations.json b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/operations/preview/2026-06-15-preview/operations.json index f870eb6ed8cb..f4cd254ed5ba 100644 --- a/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/operations/preview/2026-06-15-preview/operations.json +++ b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/operations/preview/2026-06-15-preview/operations.json @@ -74,7 +74,7 @@ } }, "x-ms-examples": { - "BatchAccountDelete": { + "List Operations": { "$ref": "./examples/OperationsList.json" } }, diff --git a/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/upgradeAssessments/models.tsp b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/upgradeAssessments/models.tsp index e133e744332d..d7331135eb06 100644 --- a/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/upgradeAssessments/models.tsp +++ b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/upgradeAssessments/models.tsp @@ -155,13 +155,14 @@ model ReadinessCheck { // ─── ARM resource properties ────────────────────────────────────────────────── /** Properties of a single UpgradeAssessment ARM resource. */ -#suppress "@azure-tools/typespec-azure-resource-manager/arm-resource-provisioning-state" "This is a read-only resource and doesn't " +#suppress "@azure-tools/typespec-azure-resource-manager/arm-resource-provisioning-state" "UpgradeAssessment is a read-only resource (GET/LIST only, no PUT) with no provisioning lifecycle, so provisioningState is intentionally omitted." model UpgradeAssessmentProperties { /** Current Kubernetes version running on the cluster (e.g., '1.29'). */ @visibility(Lifecycle.Read) currentKubernetesVersion?: string; /** Target Kubernetes version to evaluate for upgrade (e.g., '1.30'). */ + @visibility(Lifecycle.Read) targetKubernetesVersion?: string; /** @@ -180,7 +181,7 @@ model UpgradeAssessmentProperties { * Per-component compatibility results with the target Kubernetes version. */ @visibility(Lifecycle.Read) - @identifiers(#[]) + @identifiers(#["name"]) componentCompatibility?: ComponentCompatibility[]; /** diff --git a/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/upgradeAssessments/preview/2026-06-15-preview/upgradeAssessments.json b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/upgradeAssessments/preview/2026-06-15-preview/upgradeAssessments.json index df6cf23b457b..ef8a5805131b 100644 --- a/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/upgradeAssessments/preview/2026-06-15-preview/upgradeAssessments.json +++ b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/upgradeAssessments/preview/2026-06-15-preview/upgradeAssessments.json @@ -474,7 +474,8 @@ }, "targetKubernetesVersion": { "type": "string", - "description": "Target Kubernetes version to evaluate for upgrade (e.g., '1.30')." + "description": "Target Kubernetes version to evaluate for upgrade (e.g., '1.30').", + "readOnly": true }, "assessmentTime": { "type": "string", @@ -494,7 +495,9 @@ "$ref": "#/definitions/ComponentCompatibility" }, "readOnly": true, - "x-ms-identifiers": [] + "x-ms-identifiers": [ + "name" + ] }, "deprecatedApis": { "type": "array", From 4a402d20651387bf30ddd6375142a5bc5bd72088 Mon Sep 17 00:00:00 2001 From: Bharath Griddaluru Date: Fri, 26 Jun 2026 14:59:31 -0700 Subject: [PATCH 14/18] Fix example name --- .../operations/examples/2026-06-15-preview/OperationsList.json | 2 +- .../preview/2026-06-15-preview/examples/OperationsList.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/operations/examples/2026-06-15-preview/OperationsList.json b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/operations/examples/2026-06-15-preview/OperationsList.json index 087d95d24be2..f9d001b10025 100644 --- a/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/operations/examples/2026-06-15-preview/OperationsList.json +++ b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/operations/examples/2026-06-15-preview/OperationsList.json @@ -165,5 +165,5 @@ } }, "operationId": "Operations_List", - "title": "BatchAccountDelete" + "title": "List Operations" } diff --git a/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/operations/preview/2026-06-15-preview/examples/OperationsList.json b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/operations/preview/2026-06-15-preview/examples/OperationsList.json index 087d95d24be2..f9d001b10025 100644 --- a/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/operations/preview/2026-06-15-preview/examples/OperationsList.json +++ b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/operations/preview/2026-06-15-preview/examples/OperationsList.json @@ -165,5 +165,5 @@ } }, "operationId": "Operations_List", - "title": "BatchAccountDelete" + "title": "List Operations" } From 9f295caa8b5baff2a93e12358adf3900a8dd782d Mon Sep 17 00:00:00 2001 From: Bharath Griddaluru Date: Fri, 26 Jun 2026 16:20:20 -0700 Subject: [PATCH 15/18] Fix review comments from AI agent --- .../upgradeAssessments/UpgradeAssessment.tsp | 24 +++++++++---- .../upgradeAssessments.json | 36 +++++++++++++++++-- .../upgradeAssessments/readme.md | 2 +- 3 files changed, 52 insertions(+), 10 deletions(-) diff --git a/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/upgradeAssessments/UpgradeAssessment.tsp b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/upgradeAssessments/UpgradeAssessment.tsp index e256a4e4a308..6177074804c1 100644 --- a/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/upgradeAssessments/UpgradeAssessment.tsp +++ b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/upgradeAssessments/UpgradeAssessment.tsp @@ -11,17 +11,24 @@ using TypeSpec.Http; namespace Microsoft.KubernetesConfiguration; +/** Allowed instance name for the upgrade assessment singleton. */ +union UpgradeAssessmentName { + string, + + /** The only valid instance; one assessment per cluster. */ + default: "default", +} + /** * ARM resource representing a Kubernetes cluster upgrade assessment. */ model UpgradeAssessment is Azure.ResourceManager.ProxyResource { - ...ResourceNameParameter< - Resource = UpgradeAssessment, - KeyName = "upgradeAssessmentName", - SegmentName = "upgradeAssessments", - NamePattern = "^[a-z]([a-z0-9._-]{0,126}[a-z0-9])?$" - >; + @path + @key("upgradeAssessmentName") + @segment("upgradeAssessments") + @pattern("^default$") + name: UpgradeAssessmentName; } /** @@ -87,7 +94,10 @@ interface UpgradeAssessments { list is UpgradeAssessmentOps.List; } -@@doc(UpgradeAssessment.name, "Name of the UpgradeAssessments resource."); +@@doc( + UpgradeAssessment.name, + "Name of the upgrade assessment. Must be 'default'; only one upgrade assessment exists per cluster." +); @@doc( UpgradeAssessment.properties, "Properties of the UpgradeAssessments resource." diff --git a/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/upgradeAssessments/preview/2026-06-15-preview/upgradeAssessments.json b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/upgradeAssessments/preview/2026-06-15-preview/upgradeAssessments.json index ef8a5805131b..9323fed9c5e3 100644 --- a/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/upgradeAssessments/preview/2026-06-15-preview/upgradeAssessments.json +++ b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/upgradeAssessments/preview/2026-06-15-preview/upgradeAssessments.json @@ -154,10 +154,24 @@ { "name": "upgradeAssessmentName", "in": "path", - "description": "Name of the UpgradeAssessments resource.", + "description": "Name of the upgrade assessment. Must be 'default'; only one upgrade assessment exists per cluster.", "required": true, "type": "string", - "pattern": "^[a-z]([a-z0-9._-]{0,126}[a-z0-9])?$" + "pattern": "^default$", + "enum": [ + "default" + ], + "x-ms-enum": { + "name": "UpgradeAssessmentName", + "modelAsString": true, + "values": [ + { + "name": "default", + "value": "default", + "description": "The only valid instance; one assessment per cluster." + } + ] + } } ], "responses": { @@ -463,6 +477,24 @@ "value" ] }, + "UpgradeAssessmentName": { + "type": "string", + "description": "Allowed instance name for the upgrade assessment singleton.", + "enum": [ + "default" + ], + "x-ms-enum": { + "name": "UpgradeAssessmentName", + "modelAsString": true, + "values": [ + { + "name": "default", + "value": "default", + "description": "The only valid instance; one assessment per cluster." + } + ] + } + }, "UpgradeAssessmentProperties": { "type": "object", "description": "Properties of a single UpgradeAssessment ARM resource.", diff --git a/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/upgradeAssessments/readme.md b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/upgradeAssessments/readme.md index 895d47e4eacf..a2558dd30f63 100644 --- a/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/upgradeAssessments/readme.md +++ b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/upgradeAssessments/readme.md @@ -44,4 +44,4 @@ suppressions: - code: OperationsAPIImplementation from: upgradeAssessments.json reason: Operations API is implemented as a separate service. -``` \ No newline at end of file +``` From 07c28497ce4c3f45fa654dcc577f229dac2dd5cc Mon Sep 17 00:00:00 2001 From: Bharath Griddaluru Date: Mon, 29 Jun 2026 14:12:39 -0700 Subject: [PATCH 16/18] Update suppression reason --- .../operations/readme.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/operations/readme.md b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/operations/readme.md index 2580a5567fd2..ba8c46bcb7a7 100644 --- a/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/operations/readme.md +++ b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/operations/readme.md @@ -43,16 +43,16 @@ input-file: suppressions: - code: OperationsApiSchemaUsesCommonTypes from: operations.json - reason: Existing service contract needs to be backward compatible. + reason: Existing service contract needs to be backward compatible. This is for existing operations endpoint at resource level. - code: OperationsApiTenantLevelOnly from: operations.json - reason: Existing service contract needs to be backward compatible. + reason: Existing service contract needs to be backward compatible. This is for existing operations endpoint at resource level. - code: ResourceNameRestriction from: operations.json - reason: Existing service contract needs to be backward compatible. + reason: Existing service contract needs to be backward compatible.This is for existing operations endpoint at resource level. - code: OperationsApiResponseSchema from: operations.json - reason: Existing service contract needs to be backward compatible. + reason: Existing service contract needs to be backward compatible.This is for existing operations endpoint at resource level. ``` --- From 4c48298734fba5c16bc3a6dcbacad58e2f6ea09d Mon Sep 17 00:00:00 2001 From: Bharath Griddaluru Date: Mon, 29 Jun 2026 14:32:37 -0700 Subject: [PATCH 17/18] Update suppression reason --- .../operations/readme.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/operations/readme.md b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/operations/readme.md index ba8c46bcb7a7..844bc36b9366 100644 --- a/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/operations/readme.md +++ b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/operations/readme.md @@ -43,16 +43,16 @@ input-file: suppressions: - code: OperationsApiSchemaUsesCommonTypes from: operations.json - reason: Existing service contract needs to be backward compatible. This is for existing operations endpoint at resource level. + reason: This is for existing operation status endpoint at resource level and not operations endpoint. So it doesn't follow the schema. - code: OperationsApiTenantLevelOnly from: operations.json - reason: Existing service contract needs to be backward compatible. This is for existing operations endpoint at resource level. + reason: This is for existing operation status endpoint at resource level and not operations endpoint. So it doesn't follow the schema. - code: ResourceNameRestriction from: operations.json - reason: Existing service contract needs to be backward compatible.This is for existing operations endpoint at resource level. + reason: This is for existing operation status endpoint at resource level and not operations endpoint. So it doesn't follow the schema. - code: OperationsApiResponseSchema from: operations.json - reason: Existing service contract needs to be backward compatible.This is for existing operations endpoint at resource level. + reason: This is for existing operation status endpoint at resource level and not operations endpoint. So it doesn't follow the schema. ``` --- From 6fdddc3a0dcec2f4d4ea142a1307b9264050aef1 Mon Sep 17 00:00:00 2001 From: Bharath Griddaluru Date: Mon, 6 Jul 2026 14:38:42 -0700 Subject: [PATCH 18/18] Fix review comments --- .../upgradeAssessments/UpgradeAssessment.tsp | 4 ++-- .../upgradeAssessments/models.tsp | 2 +- .../preview/2026-06-15-preview/upgradeAssessments.json | 10 +++++----- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/upgradeAssessments/UpgradeAssessment.tsp b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/upgradeAssessments/UpgradeAssessment.tsp index 6177074804c1..cd91d25092a6 100644 --- a/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/upgradeAssessments/UpgradeAssessment.tsp +++ b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/upgradeAssessments/UpgradeAssessment.tsp @@ -44,12 +44,12 @@ alias UpgradeAssessmentOps = Azure.ResourceManager.Legacy.ExtensionOperations< /** * The Kubernetes cluster RP - i.e. Microsoft.ContainerService, Microsoft.Kubernetes, - * Microsoft.HybridContainerService, Microsoft.KubernetesConfiguration. + * Microsoft.HybridContainerService. */ @path @segment("providers") @key - @pattern("^Microsoft\\.(ContainerService|Kubernetes|HybridContainerService|KubernetesConfiguration)$") + @pattern("^Microsoft\\.(ContainerService|Kubernetes|HybridContainerService)$") clusterRp: string; /** diff --git a/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/upgradeAssessments/models.tsp b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/upgradeAssessments/models.tsp index d7331135eb06..dd2d3e52cef9 100644 --- a/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/upgradeAssessments/models.tsp +++ b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/upgradeAssessments/models.tsp @@ -148,7 +148,7 @@ model ReadinessCheck { /** Severity of the check result. */ severity?: Severity; - /** Human-readable reason when severity is not 'pass'. */ + /** Human-readable reason when severity is not 'None'. */ details?: string; } diff --git a/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/upgradeAssessments/preview/2026-06-15-preview/upgradeAssessments.json b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/upgradeAssessments/preview/2026-06-15-preview/upgradeAssessments.json index 9323fed9c5e3..d8171685e661 100644 --- a/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/upgradeAssessments/preview/2026-06-15-preview/upgradeAssessments.json +++ b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/upgradeAssessments/preview/2026-06-15-preview/upgradeAssessments.json @@ -64,10 +64,10 @@ { "name": "clusterRp", "in": "path", - "description": "The Kubernetes cluster RP - i.e. Microsoft.ContainerService, Microsoft.Kubernetes,\nMicrosoft.HybridContainerService, Microsoft.KubernetesConfiguration.", + "description": "The Kubernetes cluster RP - i.e. Microsoft.ContainerService, Microsoft.Kubernetes,\nMicrosoft.HybridContainerService.", "required": true, "type": "string", - "pattern": "^Microsoft\\.(ContainerService|Kubernetes|HybridContainerService|KubernetesConfiguration)$" + "pattern": "^Microsoft\\.(ContainerService|Kubernetes|HybridContainerService)$" }, { "name": "clusterResourceName", @@ -130,10 +130,10 @@ { "name": "clusterRp", "in": "path", - "description": "The Kubernetes cluster RP - i.e. Microsoft.ContainerService, Microsoft.Kubernetes,\nMicrosoft.HybridContainerService, Microsoft.KubernetesConfiguration.", + "description": "The Kubernetes cluster RP - i.e. Microsoft.ContainerService, Microsoft.Kubernetes,\nMicrosoft.HybridContainerService.", "required": true, "type": "string", - "pattern": "^Microsoft\\.(ContainerService|Kubernetes|HybridContainerService|KubernetesConfiguration)$" + "pattern": "^Microsoft\\.(ContainerService|Kubernetes|HybridContainerService)$" }, { "name": "clusterResourceName", @@ -398,7 +398,7 @@ }, "details": { "type": "string", - "description": "Human-readable reason when severity is not 'pass'." + "description": "Human-readable reason when severity is not 'None'." } }, "required": [