diff --git a/custom-words.txt b/custom-words.txt index 736ef2052a35..37bfa2d2457a 100644 --- a/custom-words.txt +++ b/custom-words.txt @@ -519,6 +519,7 @@ connectionstrings conntrack consistencygroup consumergroups +containerd containerid containerinstance containerlogs diff --git a/specification/containerservice/Fleet.Management/.gitignore b/specification/containerservice/Fleet.Management/.gitignore new file mode 100644 index 000000000000..a8d238821718 --- /dev/null +++ b/specification/containerservice/Fleet.Management/.gitignore @@ -0,0 +1,4 @@ +node_modules +output +package.json +package-lock.json \ No newline at end of file diff --git a/specification/containerservice/Fleet.Management/README.md b/specification/containerservice/Fleet.Management/README.md new file mode 100644 index 000000000000..5b016419d7e3 --- /dev/null +++ b/specification/containerservice/Fleet.Management/README.md @@ -0,0 +1,24 @@ +# Fleet service cadl project + +## Getting started + +- environment setup: https://microsoft.github.io/typespec/introduction/installation + +## Generate fleet swagger + +## NPM registry authentication + +We have to use the Central Feed Service for NPM to fetch the typespec dependencies. +The `.npmrc` file configures the folder accordingly for CI. + +in development, you can tell npm to use the standard public registry by specifying it: + +`npm install --registry https://registry.npmjs.org` + +then: + +`tsp compile .` + +## Development + +Always edit `tsp` files, and generate swagger, never edit the swagger directly. diff --git a/specification/containerservice/Fleet.Management/examples/2022-09-02-preview/Fleets_PatchTags.json b/specification/containerservice/Fleet.Management/examples/2022-09-02-preview/Fleets_PatchTags.json index fa097d7b944c..82ef0dd65960 100644 --- a/specification/containerservice/Fleet.Management/examples/2022-09-02-preview/Fleets_PatchTags.json +++ b/specification/containerservice/Fleet.Management/examples/2022-09-02-preview/Fleets_PatchTags.json @@ -46,6 +46,12 @@ "provisioningState": "Succeeded" } } + }, + "202": { + "headers": { + "Retry-After": "20", + "Location": "https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup/providers/Microsoft.ContainerService/locations/eastus/operations/00000000-0000-0000-0000-000000000000?api-version=2022-02-01" + } } } } diff --git a/specification/containerservice/Fleet.Management/examples/2023-03-15-preview/FleetMembers_Update.json b/specification/containerservice/Fleet.Management/examples/2023-03-15-preview/FleetMembers_Update.json index d97d675a02af..f3e474283a0a 100644 --- a/specification/containerservice/Fleet.Management/examples/2023-03-15-preview/FleetMembers_Update.json +++ b/specification/containerservice/Fleet.Management/examples/2023-03-15-preview/FleetMembers_Update.json @@ -37,6 +37,12 @@ "provisioningState": "Succeeded" } } + }, + "202": { + "headers": { + "Retry-After": "20", + "Location": "https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup/providers/Microsoft.ContainerService/locations/eastus/operations/00000000-0000-0000-0000-000000000000?api-version=2022-02-01" + } } } } diff --git a/specification/containerservice/Fleet.Management/examples/2023-03-15-preview/Fleets_PatchTags.json b/specification/containerservice/Fleet.Management/examples/2023-03-15-preview/Fleets_PatchTags.json index 455ebc78a602..ddb7e8f16dec 100644 --- a/specification/containerservice/Fleet.Management/examples/2023-03-15-preview/Fleets_PatchTags.json +++ b/specification/containerservice/Fleet.Management/examples/2023-03-15-preview/Fleets_PatchTags.json @@ -46,6 +46,12 @@ "provisioningState": "Succeeded" } } + }, + "202": { + "headers": { + "Retry-After": "20", + "Location": "https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup/providers/Microsoft.ContainerService/locations/eastus/operations/00000000-0000-0000-0000-000000000000?api-version=2022-02-01" + } } } } diff --git a/specification/containerservice/Fleet.Management/examples/2023-06-15-preview/FleetMembers_Create.json b/specification/containerservice/Fleet.Management/examples/2023-06-15-preview/FleetMembers_Create.json new file mode 100644 index 000000000000..3d402f557ff7 --- /dev/null +++ b/specification/containerservice/Fleet.Management/examples/2023-06-15-preview/FleetMembers_Create.json @@ -0,0 +1,68 @@ +{ + "operationId": "FleetMembers_Create", + "title": "Creates a FleetMember resource with a long running operation.", + "parameters": { + "api-version": "2023-06-15-preview", + "subscriptionId": "subid1", + "resourceGroupName": "rg1", + "fleetName": "fleet1", + "fleetMemberName": "member-1", + "resource": { + "properties": { + "clusterResourceId": "/subscriptions/subid1/resourcegroups/rg1/providers/Microsoft.ContainerService/managedClusters/cluster-1" + } + } + }, + "responses": { + "201": { + "headers": { + "ETag": "23ujdflewrj3=", + "Location": "https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup/providers/Microsoft.ContainerService/locations/eastus/operations/00000000-0000-0000-0000-000000000000?api-version=2022-02-01", + "Azure-AsyncOperation": "https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup/providers/Microsoft.ContainerService/locations/eastus/operationResults/00000000-0000-0000-0000-000000000000?api-version=2022-02-01" + }, + "body": { + "id": "/subscriptions/subid1/resourcegroups/rg1/providers/Microsoft.ContainerService/fleets/fleet-1/members/member-1", + "name": "member-1", + "type": "Microsoft.ContainerService/fleets/members", + "systemData": { + "createdBy": "someUser", + "createdByType": "User", + "createdAt": "2022-03-23T05:40:40.657Z", + "lastModifiedBy": "someOtherUser", + "lastModifiedByType": "User", + "lastModifiedAt": "2022-03-23T05:40:40.657Z" + }, + "eTag": "23ujdflewrj3=", + "properties": { + "clusterResourceId": "/subscriptions/subid1/resourcegroups/rg1/providers/Microsoft.ContainerService/managedClusters/cluster-1", + "provisioningState": "Succeeded" + } + } + }, + "200": { + "headers": { + "ETag": "23ujdflewrj3=", + "Location": "https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup/providers/Microsoft.ContainerService/locations/eastus/operations/00000000-0000-0000-0000-000000000000?api-version=2022-02-01", + "Azure-AsyncOperation": "https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup/providers/Microsoft.ContainerService/locations/eastus/operationResults/00000000-0000-0000-0000-000000000000?api-version=2022-02-01" + }, + "body": { + "id": "/subscriptions/subid1/resourcegroups/rg1/providers/Microsoft.ContainerService/fleets/fleet-1/members/member-1", + "name": "member-1", + "type": "Microsoft.ContainerService/fleets/members", + "systemData": { + "createdBy": "someUser", + "createdByType": "User", + "createdAt": "2022-03-23T05:40:40.657Z", + "lastModifiedBy": "someOtherUser", + "lastModifiedByType": "User", + "lastModifiedAt": "2022-03-23T05:40:40.657Z" + }, + "eTag": "23ujdflewrj3=", + "properties": { + "clusterResourceId": "/subscriptions/subid1/resourcegroups/rg1/providers/Microsoft.ContainerService/managedClusters/cluster-1", + "provisioningState": "Succeeded" + } + } + } + } +} diff --git a/specification/containerservice/Fleet.Management/examples/2023-06-15-preview/FleetMembers_Delete.json b/specification/containerservice/Fleet.Management/examples/2023-06-15-preview/FleetMembers_Delete.json new file mode 100644 index 000000000000..b637d8a2ebb3 --- /dev/null +++ b/specification/containerservice/Fleet.Management/examples/2023-06-15-preview/FleetMembers_Delete.json @@ -0,0 +1,21 @@ +{ + "operationId": "FleetMembers_Delete", + "title": "Deletes a FleetMember resource asynchronously with a long running operation.", + "parameters": { + "api-version": "2023-06-15-preview", + "subscriptionId": "subid1", + "resourceGroupName": "rg1", + "fleetName": "fleet1", + "fleetMemberName": "member-1" + }, + "responses": { + "202": { + "headers": { + "Location": "https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup/providers/Microsoft.ContainerService/locations/eastus/operations/00000000-0000-0000-0000-000000000000?api-version=2022-02-01", + "Azure-AsyncOperation": "https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup/providers/Microsoft.ContainerService/locations/eastus/operationResults/00000000-0000-0000-0000-000000000000?api-version=2022-02-01" + } + }, + "200": {}, + "204": {} + } +} diff --git a/specification/containerservice/Fleet.Management/examples/2023-06-15-preview/FleetMembers_Get.json b/specification/containerservice/Fleet.Management/examples/2023-06-15-preview/FleetMembers_Get.json new file mode 100644 index 000000000000..6fb8aebf4fd0 --- /dev/null +++ b/specification/containerservice/Fleet.Management/examples/2023-06-15-preview/FleetMembers_Get.json @@ -0,0 +1,36 @@ +{ + "operationId": "FleetMembers_Get", + "title": "Gets a FleetMember resource.", + "parameters": { + "api-version": "2023-06-15-preview", + "subscriptionId": "subid1", + "resourceGroupName": "rg1", + "fleetName": "fleet1", + "fleetMemberName": "member-1" + }, + "responses": { + "200": { + "headers": { + "ETag": "kd30rkdfo49=" + }, + "body": { + "id": "/subscriptions/subid1/resourcegroups/rg1/providers/Microsoft.ContainerService/fleets/fleet-1/members/member-1", + "name": "member-1", + "type": "Microsoft.ContainerService/fleets/members", + "systemData": { + "createdBy": "someUser", + "createdByType": "User", + "createdAt": "2022-03-23T05:40:40.657Z", + "lastModifiedBy": "someOtherUser", + "lastModifiedByType": "User", + "lastModifiedAt": "2022-03-23T05:40:40.657Z" + }, + "eTag": "kd30rkdfo49=", + "properties": { + "clusterResourceId": "/subscriptions/subid1/resourcegroups/rg1/providers/Microsoft.ContainerService/managedClusters/cluster-1", + "provisioningState": "Succeeded" + } + } + } + } +} diff --git a/specification/containerservice/Fleet.Management/examples/2023-06-15-preview/FleetMembers_ListByFleet.json b/specification/containerservice/Fleet.Management/examples/2023-06-15-preview/FleetMembers_ListByFleet.json new file mode 100644 index 000000000000..cd4d9cfcc07f --- /dev/null +++ b/specification/containerservice/Fleet.Management/examples/2023-06-15-preview/FleetMembers_ListByFleet.json @@ -0,0 +1,37 @@ +{ + "operationId": "FleetMembers_ListByFleet", + "title": "Lists the members of a Fleet.", + "parameters": { + "api-version": "2023-06-15-preview", + "subscriptionId": "subid1", + "resourceGroupName": "rg1", + "fleetName": "fleet1" + }, + "responses": { + "200": { + "body": { + "value": [ + { + "id": "/subscriptions/subid1/resourcegroups/rg1/providers/Microsoft.ContainerService/fleets/fleet-1/members/member-1", + "name": "member-1", + "type": "Microsoft.ContainerService/fleets/members", + "systemData": { + "createdBy": "someUser", + "createdByType": "User", + "createdAt": "2022-03-23T05:40:40.657Z", + "lastModifiedBy": "someOtherUser", + "lastModifiedByType": "User", + "lastModifiedAt": "2022-03-23T05:40:40.657Z" + }, + "eTag": "kd30rkdfo49=", + "properties": { + "clusterResourceId": "/subscriptions/subid1/resourcegroups/rg1/providers/Microsoft.ContainerService/managedClusters/cluster-1", + "provisioningState": "Succeeded" + } + } + ], + "nextLink": null + } + } + } +} diff --git a/specification/containerservice/Fleet.Management/examples/2023-06-15-preview/FleetMembers_Update.json b/specification/containerservice/Fleet.Management/examples/2023-06-15-preview/FleetMembers_Update.json new file mode 100644 index 000000000000..72b60cae9721 --- /dev/null +++ b/specification/containerservice/Fleet.Management/examples/2023-06-15-preview/FleetMembers_Update.json @@ -0,0 +1,48 @@ +{ + "operationId": "FleetMembers_Update", + "title": "Updates a FleetMember resource synchronously.", + "parameters": { + "api-version": "2023-06-15-preview", + "subscriptionId": "subid1", + "resourceGroupName": "rg1", + "fleetName": "fleet1", + "fleetMemberName": "member-1", + "properties": { + "properties": { + "group": "staging" + } + } + }, + "responses": { + "200": { + "headers": { + "ETag": "23ujdflewrj3=" + }, + "body": { + "id": "/subscriptions/subid1/resourcegroups/rg1/providers/Microsoft.ContainerService/fleets/fleet-1/members/member-1", + "name": "member-1", + "type": "Microsoft.ContainerService/fleets/members", + "systemData": { + "createdBy": "someUser", + "createdByType": "User", + "createdAt": "2022-03-23T05:40:40.657Z", + "lastModifiedBy": "someOtherUser", + "lastModifiedByType": "User", + "lastModifiedAt": "2022-03-23T05:40:40.657Z" + }, + "eTag": "23ujdflewrj3=", + "properties": { + "clusterResourceId": "/subscriptions/subid1/resourcegroups/rg1/providers/Microsoft.ContainerService/managedClusters/cluster-1", + "group": "staging", + "provisioningState": "Succeeded" + } + } + }, + "202": { + "headers": { + "Retry-After": "20", + "Location": "https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup/providers/Microsoft.ContainerService/locations/eastus/operations/00000000-0000-0000-0000-000000000000?api-version=2022-02-01" + } + } + } +} diff --git a/specification/containerservice/Fleet.Management/examples/2023-06-15-preview/Fleets_CreateOrUpdate.json b/specification/containerservice/Fleet.Management/examples/2023-06-15-preview/Fleets_CreateOrUpdate.json new file mode 100644 index 000000000000..618182482fe5 --- /dev/null +++ b/specification/containerservice/Fleet.Management/examples/2023-06-15-preview/Fleets_CreateOrUpdate.json @@ -0,0 +1,92 @@ +{ + "operationId": "Fleets_CreateOrUpdate", + "title": "Creates a Fleet resource with a long running operation.", + "parameters": { + "api-version": "2023-06-15-preview", + "subscriptionId": "subid1", + "resourceGroupName": "rg1", + "fleetName": "fleet1", + "resource": { + "tags": { + "tier": "production", + "archv2": "" + }, + "location": "East US", + "properties": { + "hubProfile": { + "dnsPrefix": "dnsprefix1" + } + } + } + }, + "responses": { + "200": { + "headers": { + "ETag": "23ujdflewrj3=", + "Location": "https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup/providers/Microsoft.ContainerService/locations/eastus/operations/00000000-0000-0000-0000-000000000000?api-version=2022-02-01", + "Azure-AsyncOperation": "https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup/providers/Microsoft.ContainerService/locations/eastus/operationResults/00000000-0000-0000-0000-000000000000?api-version=2022-02-01" + }, + "body": { + "id": "/subscriptions/subid1/resourcegroups/rg1/providers/Microsoft.ContainerService/fleets/fleet-1", + "name": "fleet-1", + "type": "Microsoft.ContainerService/fleets", + "systemData": { + "createdBy": "someUser", + "createdByType": "User", + "createdAt": "2022-03-23T05:40:40.657Z", + "lastModifiedBy": "someOtherUser", + "lastModifiedByType": "User", + "lastModifiedAt": "2022-03-23T05:40:40.657Z" + }, + "tags": { + "tier": "production", + "archv2": "" + }, + "location": "East US", + "eTag": "23ujdflewrj3=", + "properties": { + "hubProfile": { + "dnsPrefix": "dnsprefix1", + "fqdn": "dnsprefix1-abcd1234.flt.eastus.azmk8s.io", + "kubernetesVersion": "1.22.4" + }, + "provisioningState": "Updating" + } + } + }, + "201": { + "headers": { + "ETag": "23ujdflewrj3=", + "Location": "https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup/providers/Microsoft.ContainerService/locations/eastus/operations/00000000-0000-0000-0000-000000000000?api-version=2022-02-01", + "Azure-AsyncOperation": "https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup/providers/Microsoft.ContainerService/locations/eastus/operationResults/00000000-0000-0000-0000-000000000000?api-version=2022-02-01" + }, + "body": { + "id": "/subscriptions/subid1/resourcegroups/rg1/providers/Microsoft.ContainerService/fleets/fleet1", + "name": "fleet1", + "type": "Microsoft.ContainerService/fleets", + "systemData": { + "createdBy": "someUser", + "createdByType": "User", + "createdAt": "2022-03-23T05:40:40.657Z", + "lastModifiedBy": "someOtherUser", + "lastModifiedByType": "User", + "lastModifiedAt": "2022-03-23T05:40:40.657Z" + }, + "tags": { + "tier": "production", + "archv2": "" + }, + "location": "East US", + "eTag": "23ujdflewrj3=", + "properties": { + "hubProfile": { + "dnsPrefix": "dnsprefix1", + "fqdn": "dnsprefix1-abcd1234.flt.eastus.azmk8s.io", + "kubernetesVersion": "1.22.4" + }, + "provisioningState": "Creating" + } + } + } + } +} diff --git a/specification/containerservice/Fleet.Management/examples/2023-06-15-preview/Fleets_Delete.json b/specification/containerservice/Fleet.Management/examples/2023-06-15-preview/Fleets_Delete.json new file mode 100644 index 000000000000..a80642d64c39 --- /dev/null +++ b/specification/containerservice/Fleet.Management/examples/2023-06-15-preview/Fleets_Delete.json @@ -0,0 +1,20 @@ +{ + "operationId": "Fleets_Delete", + "title": "Deletes a Fleet resource asynchronously with a long running operation.", + "parameters": { + "api-version": "2023-06-15-preview", + "subscriptionId": "subid1", + "resourceGroupName": "rg1", + "fleetName": "fleet1" + }, + "responses": { + "202": { + "headers": { + "Location": "https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup/providers/Microsoft.ContainerService/locations/eastus/operations/00000000-0000-0000-0000-000000000000?api-version=2022-02-01", + "Azure-AsyncOperation": "https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup/providers/Microsoft.ContainerService/locations/eastus/operationResults/00000000-0000-0000-0000-000000000000?api-version=2022-02-01" + } + }, + "200": {}, + "204": {} + } +} diff --git a/specification/containerservice/Fleet.Management/examples/2023-06-15-preview/Fleets_Get.json b/specification/containerservice/Fleet.Management/examples/2023-06-15-preview/Fleets_Get.json new file mode 100644 index 000000000000..e90c55568ab8 --- /dev/null +++ b/specification/containerservice/Fleet.Management/examples/2023-06-15-preview/Fleets_Get.json @@ -0,0 +1,44 @@ +{ + "operationId": "Fleets_Get", + "title": "Gets a Fleet resource.", + "parameters": { + "api-version": "2023-06-15-preview", + "subscriptionId": "subid1", + "resourceGroupName": "rg1", + "fleetName": "fleet1" + }, + "responses": { + "200": { + "headers": { + "ETag": "23ujdflewrj3=" + }, + "body": { + "id": "/subscriptions/subid1/resourcegroups/rg1/providers/Microsoft.ContainerService/fleets/fleet-1", + "name": "fleet-1", + "type": "Microsoft.ContainerService/fleets", + "systemData": { + "createdBy": "someUser", + "createdByType": "User", + "createdAt": "2022-03-23T05:40:40.657Z", + "lastModifiedBy": "someOtherUser", + "lastModifiedByType": "User", + "lastModifiedAt": "2022-03-23T05:40:40.657Z" + }, + "tags": { + "tier": "production", + "archv2": "" + }, + "location": "East US", + "eTag": "23ujdflewrj3=", + "properties": { + "hubProfile": { + "dnsPrefix": "dnsprefix1", + "fqdn": "dnsprefix1-abcd1234.flt.eastus.azmk8s.io", + "kubernetesVersion": "1.22.4" + }, + "provisioningState": "Succeeded" + } + } + } + } +} diff --git a/specification/containerservice/Fleet.Management/examples/2023-06-15-preview/Fleets_ListByResourceGroup.json b/specification/containerservice/Fleet.Management/examples/2023-06-15-preview/Fleets_ListByResourceGroup.json new file mode 100644 index 000000000000..2afbc4403ea2 --- /dev/null +++ b/specification/containerservice/Fleet.Management/examples/2023-06-15-preview/Fleets_ListByResourceGroup.json @@ -0,0 +1,45 @@ +{ + "operationId": "Fleets_ListByResourceGroup", + "title": "Lists the Fleet resources in a resource group.", + "parameters": { + "api-version": "2023-06-15-preview", + "subscriptionId": "subid1", + "resourceGroupName": "rg1" + }, + "responses": { + "200": { + "body": { + "value": [ + { + "id": "/subscriptions/subid1/resourcegroups/rg1/providers/Microsoft.ContainerService/fleets/fleet-1", + "name": "fleet1", + "type": "Microsoft.ContainerService/fleets", + "systemData": { + "createdBy": "someUser", + "createdByType": "User", + "createdAt": "2022-03-23T05:40:40.657Z", + "lastModifiedBy": "someOtherUser", + "lastModifiedByType": "User", + "lastModifiedAt": "2022-03-23T05:40:40.657Z" + }, + "tags": { + "tier": "production", + "archv2": "" + }, + "location": "East US", + "eTag": "23ujdflewrj3=", + "properties": { + "hubProfile": { + "dnsPrefix": "dnsprefix1", + "fqdn": "dnsprefix1-abcd1234.flt.eastus.azmk8s.io", + "kubernetesVersion": "1.22.4" + }, + "provisioningState": "Succeeded" + } + } + ], + "nextLink": null + } + } + } +} diff --git a/specification/containerservice/Fleet.Management/examples/2023-06-15-preview/Fleets_ListBySub.json b/specification/containerservice/Fleet.Management/examples/2023-06-15-preview/Fleets_ListBySub.json new file mode 100644 index 000000000000..6886d6a6c245 --- /dev/null +++ b/specification/containerservice/Fleet.Management/examples/2023-06-15-preview/Fleets_ListBySub.json @@ -0,0 +1,44 @@ +{ + "operationId": "Fleets_ListBySubscription", + "title": "Lists the Fleet resources in a subscription.", + "parameters": { + "api-version": "2023-06-15-preview", + "subscriptionId": "subid1" + }, + "responses": { + "200": { + "body": { + "value": [ + { + "id": "/subscriptions/subid1/resourcegroups/rg1/providers/Microsoft.ContainerService/fleets/fleet1", + "name": "fleet-1", + "type": "Microsoft.ContainerService/fleets", + "systemData": { + "createdBy": "someUser", + "createdByType": "User", + "createdAt": "2022-03-23T05:40:40.657Z", + "lastModifiedBy": "someOtherUser", + "lastModifiedByType": "User", + "lastModifiedAt": "2022-03-23T05:40:40.657Z" + }, + "tags": { + "tier": "production", + "archv2": "" + }, + "location": "East US", + "eTag": "23ujdflewrj3=", + "properties": { + "hubProfile": { + "dnsPrefix": "dnsprefix1", + "fqdn": "dnsprefix1-abcd1234.flt.eastus.azmk8s.io", + "kubernetesVersion": "1.22.4" + }, + "provisioningState": "Succeeded" + } + } + ], + "nextLink": null + } + } + } +} diff --git a/specification/containerservice/Fleet.Management/examples/2023-06-15-preview/Fleets_ListCredentialsResult.json b/specification/containerservice/Fleet.Management/examples/2023-06-15-preview/Fleets_ListCredentialsResult.json new file mode 100644 index 000000000000..54e94ab65059 --- /dev/null +++ b/specification/containerservice/Fleet.Management/examples/2023-06-15-preview/Fleets_ListCredentialsResult.json @@ -0,0 +1,22 @@ +{ + "operationId": "Fleets_ListCredentials", + "title": "Lists the user credentials of a Fleet.", + "parameters": { + "api-version": "2023-06-15-preview", + "subscriptionId": "subid1", + "resourceGroupName": "rg1", + "fleetName": "fleet" + }, + "responses": { + "200": { + "body": { + "kubeconfigs": [ + { + "name": "credentialName1", + "value": "Y3JlZGVudGlhbFZhbHVlMQ==" + } + ] + } + } + } +} diff --git a/specification/containerservice/Fleet.Management/examples/2023-06-15-preview/Fleets_PatchTags.json b/specification/containerservice/Fleet.Management/examples/2023-06-15-preview/Fleets_PatchTags.json new file mode 100644 index 000000000000..f7a6abfdc625 --- /dev/null +++ b/specification/containerservice/Fleet.Management/examples/2023-06-15-preview/Fleets_PatchTags.json @@ -0,0 +1,57 @@ +{ + "operationId": "Fleets_Update", + "title": "Update a Fleet.", + "parameters": { + "api-version": "2023-06-15-preview", + "subscriptionId": "subid1", + "resourceGroupName": "rg1", + "fleetName": "fleet1", + "If-Match": "dfjkwelr7384", + "properties": { + "tags": { + "tier": "secure", + "env": "prod" + } + } + }, + "responses": { + "200": { + "headers": { + "ETag": "23ujdflewrj3=" + }, + "body": { + "id": "/subscriptions/subid1/resourcegroups/rg1/providers/Microsoft.ContainerService/fleets/fleet-1", + "name": "fleet-1", + "type": "Microsoft.ContainerService/fleets", + "systemData": { + "createdBy": "someUser", + "createdByType": "User", + "createdAt": "2022-03-23T05:40:40.657Z", + "lastModifiedBy": "someOtherUser", + "lastModifiedByType": "User", + "lastModifiedAt": "2022-03-23T05:40:40.657Z" + }, + "tags": { + "tier": "secure", + "env": "prod" + }, + "location": "East US", + "eTag": "23ujdflewrj3=", + "properties": { + "hubProfile": { + "dnsPrefix": "dnsprefix1", + "fqdn": "dnsprefix1-abcd1234.flt.eastus.azmk8s.io", + "kubernetesVersion": "1.22.4" + }, + "provisioningState": "Succeeded" + } + } + }, + "202": { + "headers": { + "Retry-After": "20", + "Location": "https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup/providers/Microsoft.ContainerService/locations/eastus/operations/00000000-0000-0000-0000-000000000000?api-version=2022-02-01" + } + } + } +} diff --git a/specification/containerservice/Fleet.Management/examples/2023-06-15-preview/Operations_List.json b/specification/containerservice/Fleet.Management/examples/2023-06-15-preview/Operations_List.json new file mode 100644 index 000000000000..5441fc7f4d5b --- /dev/null +++ b/specification/containerservice/Fleet.Management/examples/2023-06-15-preview/Operations_List.json @@ -0,0 +1,25 @@ +{ + "operationId": "Operations_List", + "title": "List the operations for the provider.", + "parameters": { + "api-version": "2023-06-15-preview" + }, + "responses": { + "200": { + "body": { + "value": [ + { + "display": { + "description": "Gets the status of an asynchronous operation", + "operation": "Get Operation", + "provider": "Microsoft Container Service", + "resource": "Operation" + }, + "name": "Microsoft.ContainerService/locations/operations/read", + "origin": "user,system" + } + ] + } + } + } +} diff --git a/specification/containerservice/Fleet.Management/examples/2023-06-15-preview/UpdateRuns_CreateOrUpdate.json b/specification/containerservice/Fleet.Management/examples/2023-06-15-preview/UpdateRuns_CreateOrUpdate.json new file mode 100644 index 000000000000..a4819a69426e --- /dev/null +++ b/specification/containerservice/Fleet.Management/examples/2023-06-15-preview/UpdateRuns_CreateOrUpdate.json @@ -0,0 +1,193 @@ +{ + "operationId": "UpdateRuns_CreateOrUpdate", + "title": "Create an UpdateRun.", + "parameters": { + "api-version": "2023-06-15-preview", + "subscriptionId": "00000000-0000-0000-0000-000000000000", + "resourceGroupName": "rg1", + "fleetName": "fleet1", + "updateRunName": "run1", + "resource": { + "properties": { + "strategy": { + "stages": [ + { + "name": "stage1", + "groups": [ + { + "name": "group-a" + } + ], + "afterStageWaitInSeconds": 3600 + } + ] + }, + "managedClusterUpdate": { + "upgrade": { + "type": "Full", + "kubernetesVersion": "1.26.1" + }, + "nodeImageSelection": { + "type": "Latest" + } + } + } + } + }, + "responses": { + "200": { + "body": { + "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/rg1/providers/Microsoft.ContainerService/fleets/myFleet/updateRuns/run1", + "name": "run1", + "type": "Microsoft.ContainerService/fleets/updateRuns", + "systemData": { + "createdBy": "@contoso.com", + "createdByType": "User", + "createdAt": "2023-03-01T01:10:08.395Z", + "lastModifiedBy": "@contoso.com", + "lastModifiedByType": "User", + "lastModifiedAt": "2023-03-01T01:10:08.395Z" + }, + "properties": { + "provisioningState": "Succeeded", + "strategy": { + "stages": [ + { + "name": "stage1", + "groups": [ + { + "name": "group-a" + } + ], + "afterStageWaitInSeconds": 3600 + } + ] + }, + "managedClusterUpdate": { + "upgrade": { + "type": "Full", + "kubernetesVersion": "1.26.1" + }, + "nodeImageSelection": { + "type": "Latest" + } + }, + "status": { + "status": { + "state": "NotStarted" + }, + "stages": [ + { + "status": { + "state": "NotStarted" + }, + "name": "stage1", + "groups": [ + { + "status": { + "state": "NotStarted" + }, + "name": "group-a", + "members": [ + { + "status": { + "state": "NotStarted" + }, + "name": "member-one", + "clusterResourceId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myClusters/providers/Microsoft.ContainerService/managedClusters/myCluster" + } + ] + } + ], + "afterStageWaitStatus": { + "status": { + "state": "NotStarted" + }, + "waitDurationInSeconds": 3600 + } + } + ] + } + }, + "eTag": "\"EtagValue\"" + } + }, + "201": { + "body": { + "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/rg1/providers/Microsoft.ContainerService/fleets/myFleet/updateRuns/run1", + "name": "run1", + "type": "Microsoft.ContainerService/fleets/updateRuns", + "systemData": { + "createdBy": "@contoso.com", + "createdByType": "User", + "createdAt": "2023-03-01T01:10:08.395Z", + "lastModifiedBy": "@contoso.com", + "lastModifiedByType": "User", + "lastModifiedAt": "2023-03-01T01:10:08.395Z" + }, + "properties": { + "provisioningState": "Succeeded", + "strategy": { + "stages": [ + { + "name": "stage1", + "groups": [ + { + "name": "group-a" + } + ], + "afterStageWaitInSeconds": 3600 + } + ] + }, + "managedClusterUpdate": { + "upgrade": { + "type": "Full", + "kubernetesVersion": "1.26.1" + }, + "nodeImageSelection": { + "type": "Latest" + } + }, + "status": { + "status": { + "state": "NotStarted" + }, + "stages": [ + { + "status": { + "state": "NotStarted" + }, + "name": "stage1", + "groups": [ + { + "status": { + "state": "NotStarted" + }, + "name": "group-a", + "members": [ + { + "status": { + "state": "NotStarted" + }, + "name": "member-one", + "clusterResourceId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myClusters/providers/Microsoft.ContainerService/managedClusters/myCluster" + } + ] + } + ], + "afterStageWaitStatus": { + "status": { + "state": "NotStarted" + }, + "waitDurationInSeconds": 3600 + } + } + ] + } + }, + "eTag": "\"EtagValue\"" + } + } + } +} diff --git a/specification/containerservice/Fleet.Management/examples/2023-06-15-preview/UpdateRuns_Delete.json b/specification/containerservice/Fleet.Management/examples/2023-06-15-preview/UpdateRuns_Delete.json new file mode 100644 index 000000000000..811e5a6cef49 --- /dev/null +++ b/specification/containerservice/Fleet.Management/examples/2023-06-15-preview/UpdateRuns_Delete.json @@ -0,0 +1,21 @@ +{ + "operationId": "UpdateRuns_Delete", + "title": "Delete an updateRun resource.", + "parameters": { + "api-version": "2023-06-15-preview", + "subscriptionId": "subid1", + "resourceGroupName": "rg1", + "fleetName": "fleet1", + "updateRunName": "run1" + }, + "responses": { + "202": { + "headers": { + "Location": "https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup/providers/Microsoft.ContainerService/locations/eastus/operations/00000000-0000-0000-0000-000000000000?api-version=2022-09-02-preview", + "Azure-AsyncOperation": "https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup/providers/Microsoft.ContainerService/locations/eastus/operationResults/00000000-0000-0000-0000-000000000000?api-version=2022-09-02-preview" + } + }, + "200": {}, + "204": {} + } +} diff --git a/specification/containerservice/Fleet.Management/examples/2023-06-15-preview/UpdateRuns_Get.json b/specification/containerservice/Fleet.Management/examples/2023-06-15-preview/UpdateRuns_Get.json new file mode 100644 index 000000000000..7562e52deb43 --- /dev/null +++ b/specification/containerservice/Fleet.Management/examples/2023-06-15-preview/UpdateRuns_Get.json @@ -0,0 +1,90 @@ +{ + "operationId": "UpdateRuns_Get", + "title": "Gets an UpdateRun resource.", + "parameters": { + "api-version": "2023-06-15-preview", + "subscriptionId": "00000000-0000-0000-0000-000000000000", + "resourceGroupName": "rg1", + "fleetName": "fleet1", + "updateRunName": "run1" + }, + "responses": { + "200": { + "body": { + "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/rg1/providers/Microsoft.ContainerService/fleets/myFleet/updateRuns/run1", + "name": "run1", + "type": "Microsoft.ContainerService/fleets/updateRuns", + "systemData": { + "createdBy": "@contoso.com", + "createdByType": "User", + "createdAt": "2023-03-01T01:10:08.395Z", + "lastModifiedBy": "@contoso.com", + "lastModifiedByType": "User", + "lastModifiedAt": "2023-03-01T01:10:08.395Z" + }, + "properties": { + "provisioningState": "Succeeded", + "strategy": { + "stages": [ + { + "name": "stage1", + "groups": [ + { + "name": "group-a" + } + ], + "afterStageWaitInSeconds": 3600 + } + ] + }, + "managedClusterUpdate": { + "upgrade": { + "type": "Full", + "kubernetesVersion": "1.26.1" + }, + "nodeImageSelection": { + "type": "Latest" + } + }, + "status": { + "status": { + "state": "NotStarted" + }, + "stages": [ + { + "status": { + "state": "NotStarted" + }, + "name": "stage1", + "groups": [ + { + "status": { + "state": "NotStarted" + }, + "name": "group-a", + "members": [ + { + "status": { + "state": "NotStarted" + }, + "name": "member-one", + "clusterResourceId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myClusters/providers/Microsoft.ContainerService/managedClusters/myCluster" + } + ] + } + ], + "afterStageWaitStatus": { + "status": { + "state": "NotStarted" + }, + "waitDurationInSeconds": 3600 + } + } + ] + } + }, + "eTag": "\"EtagValue\"" + } + } + } +} diff --git a/specification/containerservice/Fleet.Management/examples/2023-06-15-preview/UpdateRuns_ListByFleet.json b/specification/containerservice/Fleet.Management/examples/2023-06-15-preview/UpdateRuns_ListByFleet.json new file mode 100644 index 000000000000..5e299f1c430e --- /dev/null +++ b/specification/containerservice/Fleet.Management/examples/2023-06-15-preview/UpdateRuns_ListByFleet.json @@ -0,0 +1,94 @@ +{ + "operationId": "UpdateRuns_ListByFleet", + "title": "Lists the UpdateRun resources by fleet.", + "parameters": { + "api-version": "2023-06-15-preview", + "subscriptionId": "00000000-0000-0000-0000-000000000000", + "resourceGroupName": "rg1", + "fleetName": "fleet1" + }, + "responses": { + "200": { + "body": { + "value": [ + { + "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/rg1/providers/Microsoft.ContainerService/fleets/myFleet/updateRuns/run1", + "name": "run1", + "type": "Microsoft.ContainerService/fleets/updateRuns", + "systemData": { + "createdBy": "@contoso.com", + "createdByType": "User", + "createdAt": "2023-03-01T01:10:08.395Z", + "lastModifiedBy": "@contoso.com", + "lastModifiedByType": "User", + "lastModifiedAt": "2023-03-01T01:10:08.395Z" + }, + "properties": { + "provisioningState": "Succeeded", + "strategy": { + "stages": [ + { + "name": "stage1", + "groups": [ + { + "name": "group-a" + } + ], + "afterStageWaitInSeconds": 3600 + } + ] + }, + "managedClusterUpdate": { + "upgrade": { + "type": "Full", + "kubernetesVersion": "1.26.1" + }, + "nodeImageSelection": { + "type": "Latest" + } + }, + "status": { + "status": { + "state": "NotStarted" + }, + "stages": [ + { + "status": { + "state": "NotStarted" + }, + "name": "stage1", + "groups": [ + { + "status": { + "state": "NotStarted" + }, + "name": "group-a", + "members": [ + { + "status": { + "state": "NotStarted" + }, + "name": "member-one", + "clusterResourceId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myClusters/providers/Microsoft.ContainerService/managedClusters/myCluster" + } + ] + } + ], + "afterStageWaitStatus": { + "status": { + "state": "NotStarted" + }, + "waitDurationInSeconds": 3600 + } + } + ] + } + }, + "eTag": "\"EtagValue\"" + } + ], + "nextLink": "http://nextlink.contoso.com" + } + } + } +} diff --git a/specification/containerservice/Fleet.Management/examples/2023-06-15-preview/UpdateRuns_Start.json b/specification/containerservice/Fleet.Management/examples/2023-06-15-preview/UpdateRuns_Start.json new file mode 100644 index 000000000000..c069499d18db --- /dev/null +++ b/specification/containerservice/Fleet.Management/examples/2023-06-15-preview/UpdateRuns_Start.json @@ -0,0 +1,99 @@ +{ + "operationId": "UpdateRuns_Start", + "title": "Starts an UpdateRun.", + "parameters": { + "api-version": "2023-06-15-preview", + "subscriptionId": "00000000-0000-0000-0000-000000000000", + "resourceGroupName": "rg1", + "fleetName": "fleet1", + "updateRunName": "run1" + }, + "responses": { + "200": { + "body": { + "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/rg1/providers/Microsoft.ContainerService/fleets/myFleet/updateRuns/run1", + "name": "run1", + "type": "Microsoft.ContainerService/fleets/updateRuns", + "systemData": { + "createdBy": "@contoso.com", + "createdByType": "User", + "createdAt": "2023-03-01T01:09:08.395Z", + "lastModifiedBy": "@contoso.com", + "lastModifiedByType": "User", + "lastModifiedAt": "2023-03-01T01:10:08.395Z" + }, + "properties": { + "provisioningState": "Succeeded", + "strategy": { + "stages": [ + { + "name": "stage1", + "groups": [ + { + "name": "group-a" + } + ], + "afterStageWaitInSeconds": 3600 + } + ] + }, + "managedClusterUpdate": { + "upgrade": { + "type": "Full", + "kubernetesVersion": "1.26.1" + }, + "nodeImageSelection": { + "type": "Latest" + } + }, + "status": { + "status": { + "startTime": "2023-03-01T01:10:08.395Z", + "state": "Running" + }, + "stages": [ + { + "status": { + "startTime": "2023-03-01T01:10:08.395Z", + "state": "Running" + }, + "name": "stage1", + "groups": [ + { + "status": { + "startTime": "2023-03-01T01:10:08.395Z", + "state": "Running" + }, + "name": "group-a", + "members": [ + { + "status": { + "state": "Running" + }, + "name": "member-one", + "clusterResourceId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myClusters/providers/Microsoft.ContainerService/managedClusters/myCluster" + } + ] + } + ], + "afterStageWaitStatus": { + "status": { + "state": "NotStarted" + }, + "waitDurationInSeconds": 3600 + } + } + ] + } + }, + "eTag": "\"EtagValue\"" + } + }, + "202": { + "headers": { + "Azure-AsyncOperation": "https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup/providers/Microsoft.ContainerService/locations/eastus/operationResults/00000000-0000-0000-0000-000000000000?api-version=2022-02-01", + "Location": "https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup/providers/Microsoft.ContainerService/locations/eastus/operationResults/00000000-0000-0000-0000-000000000000?api-version=2022-02-01" + } + } + } +} diff --git a/specification/containerservice/Fleet.Management/examples/2023-06-15-preview/UpdateRuns_Stop.json b/specification/containerservice/Fleet.Management/examples/2023-06-15-preview/UpdateRuns_Stop.json new file mode 100644 index 000000000000..c222ff4da605 --- /dev/null +++ b/specification/containerservice/Fleet.Management/examples/2023-06-15-preview/UpdateRuns_Stop.json @@ -0,0 +1,99 @@ +{ + "operationId": "UpdateRuns_Stop", + "title": "Stops an UpdateRun.", + "parameters": { + "api-version": "2023-06-15-preview", + "subscriptionId": "00000000-0000-0000-0000-000000000000", + "resourceGroupName": "rg1", + "fleetName": "fleet1", + "updateRunName": "run1" + }, + "responses": { + "200": { + "body": { + "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/rg1/providers/Microsoft.ContainerService/fleets/myFleet/updateRuns/run1", + "name": "run1", + "type": "Microsoft.ContainerService/fleets/updateRuns", + "systemData": { + "createdBy": "@contoso.com", + "createdByType": "User", + "createdAt": "2023-03-01T01:09:08.395Z", + "lastModifiedBy": "@contoso.com", + "lastModifiedByType": "User", + "lastModifiedAt": "2023-03-01T01:10:08.395Z" + }, + "properties": { + "provisioningState": "Succeeded", + "strategy": { + "stages": [ + { + "name": "stage1", + "groups": [ + { + "name": "group-a" + } + ], + "afterStageWaitInSeconds": 3600 + } + ] + }, + "managedClusterUpdate": { + "upgrade": { + "type": "Full", + "kubernetesVersion": "1.26.1" + }, + "nodeImageSelection": { + "type": "Latest" + } + }, + "status": { + "status": { + "startTime": "2023-03-01T01:10:08.395Z", + "state": "Stopping" + }, + "stages": [ + { + "status": { + "startTime": "2023-03-01T01:10:08.395Z", + "state": "Stopping" + }, + "name": "stage1", + "groups": [ + { + "status": { + "startTime": "2023-03-01T01:10:08.395Z", + "state": "Stopping" + }, + "name": "group-a", + "members": [ + { + "status": { + "state": "Stopping" + }, + "name": "member-one", + "clusterResourceId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myClusters/providers/Microsoft.ContainerService/managedClusters/myCluster" + } + ] + } + ], + "afterStageWaitStatus": { + "status": { + "state": "NotStarted" + }, + "waitDurationInSeconds": 3600 + } + } + ] + } + }, + "eTag": "\"EtagValue\"" + } + }, + "202": { + "headers": { + "Azure-AsyncOperation": "https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup/providers/Microsoft.ContainerService/locations/eastus/operationResults/00000000-0000-0000-0000-000000000000?api-version=2022-02-01", + "Location": "https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup/providers/Microsoft.ContainerService/locations/eastus/operationResults/00000000-0000-0000-0000-000000000000?api-version=2022-02-01" + } + } + } +} diff --git a/specification/containerservice/Fleet.Management/fleet.tsp b/specification/containerservice/Fleet.Management/fleet.tsp index 1b9fb765e6a4..2006064cf47e 100644 --- a/specification/containerservice/Fleet.Management/fleet.tsp +++ b/specification/containerservice/Fleet.Management/fleet.tsp @@ -29,8 +29,12 @@ model Fleet is TrackedResource { @segment("fleets") @visibility("create", "read") name: string; - ...EntityTag; + + #suppress "@azure-tools/typespec-azure-resource-manager/arm-resource-invalid-envelope-property" "https://github.com/Azure/typespec-azure/issues/2840" + @added(Versions.v2023_06_15_preview) + @doc("Managed identity.") + identity?: Azure.ResourceManager.Foundations.ManagedIdentityProperties; } @doc("Fleet properties.") @@ -56,6 +60,16 @@ model FleetHubProfile { @maxLength(54) dnsPrefix?: string; + @added(Versions.v2023_06_15_preview) + @doc("The access profile for the Fleet hub API server.") + @visibility("read", "create") + apiServerAccessProfile?: APIServerAccessProfile; + + @added(Versions.v2023_06_15_preview) + @doc("The agent profile for the Fleet hub.") + @visibility("read", "create") + agentProfile?: AgentProfile; + @visibility("read") @doc("The FQDN of the Fleet hub.") fqdn?: string; @@ -65,13 +79,45 @@ model FleetHubProfile { kubernetesVersion?: string; } -#suppress "@azure-tools/typespec-azure-core/documentation-required" "MUST fix in next update" +scalar SubnetResourceId + extends Azure.ResourceManager.ResourceIdentifier<[ + { + type: "Microsoft.Network/virtualNetworks/subnets", + } + ]>; + +#suppress "@azure-tools/typespec-azure-core/casing-style" "match existing AKS APIServerAccessProfile" +@doc("Access profile for the Fleet hub API server.") +model APIServerAccessProfile { + @visibility("read", "create") + @doc("Whether to create the Fleet hub as a private cluster or not.") + enablePrivateCluster?: boolean; + + @visibility("read", "create") + @doc("Whether to enable apiserver vnet integration for the Fleet hub or not.") + enableVnetIntegration?: boolean; + + @visibility("read", "create") + @doc("The subnet to be used when apiserver vnet integration is enabled. It is required when creating a new Fleet with BYO vnet.") + subnetId?: SubnetResourceId; +} + +@doc("Agent profile for the Fleet hub.") +model AgentProfile { + @visibility("read", "create") + @doc("The ID of the subnet which the Fleet hub node will join on startup. If this is not specified, a vnet and subnet will be generated and used.") + subnetId?: SubnetResourceId; +} + @lroStatus @doc("The provisioning state of the last accepted operation.") enum FleetProvisioningState { ...ResourceProvisioningState, + @doc("The provisioning state of a fleet being created.") Creating, + @doc("The provisioning state of a fleet being updated.") Updating, + @doc("The provisioning state of a fleet being deleted.") Deleting, } @@ -82,6 +128,11 @@ model FleetPatch { // adding a response header in the model currently impacts the model used in the List result model. // omitting it for now as response headers do not impact SDK generation. // ...EtagResponseEnvelope; + + #suppress "@azure-tools/typespec-azure-resource-manager/arm-resource-invalid-envelope-property" "https://github.com/Azure/typespec-azure/issues/2840" + @added(Versions.v2023_06_15_preview) + @doc("Managed identity.") + identity?: Azure.ResourceManager.Foundations.ManagedIdentityProperties; } @doc("One credential result item.") @@ -109,14 +160,15 @@ interface Fleets { get is ArmResourceRead; @doc("Creates or updates a Fleet.") - createOrUpdate is ArmResourceCreateOrUpdateAsync< + @operationId("Fleets_CreateOrUpdate") + create is ArmResourceCreateOrUpdateAsync< Fleet, BaseParameters & IfMatchParameters & IfNoneMatchParameters >; - update is ArmCustomPatchSync< + update is ArmCustomPatchAsync< Fleet, FleetPatch, BaseParameters & IfMatchParameters @@ -130,6 +182,7 @@ interface Fleets { @doc("Lists fleets in the specified subscription and resource group.") listByResourceGroup is ArmResourceListByParent; + @operationId("Fleets_ListBySubscription") @doc("Lists fleets in the specified subscription.") listBySubscription is ArmListBySubscription; diff --git a/specification/containerservice/Fleet.Management/fleetmember.tsp b/specification/containerservice/Fleet.Management/fleetmember.tsp index d741cda366b6..b44e860cadf1 100644 --- a/specification/containerservice/Fleet.Management/fleetmember.tsp +++ b/specification/containerservice/Fleet.Management/fleetmember.tsp @@ -24,7 +24,6 @@ model FleetMember is ProxyResource { @segment("members") @visibility("create", "read") name: string; - ...EntityTag; } @@ -57,13 +56,15 @@ model FleetMemberProperties { provisioningState?: FleetMemberProvisioningState; } -#suppress "@azure-tools/typespec-azure-core/documentation-required" "MUST fix in next update" @lroStatus @doc("The provisioning state of the last accepted operation.") enum FleetMemberProvisioningState { ...ResourceProvisioningState, + @doc("The provisioning state of a member joining a fleet.") Joining, + @doc("The provisioning state of a member leaving a fleet.") Leaving, + @doc("The provisioning state of a member being updated.") Updating, } @@ -79,18 +80,9 @@ interface FleetMembers { >; @added(Versions.v2023_03_15_preview) - update is ArmResourcePatchSync< - FleetMember, - FleetMemberProperties, - BaseParameters & IfMatchParameters - >; + update is ArmResourcePatchAsync & + IfMatchParameters>; - @extension( - "x-ms-long-running-operation-options", - { - `final-state-via`: "location", - } - ) delete is ArmResourceDeleteAsync< FleetMember, BaseParameters & IfMatchParameters diff --git a/specification/containerservice/Fleet.Management/main.tsp b/specification/containerservice/Fleet.Management/main.tsp index 67948fac613b..c88db8ae9dc1 100644 --- a/specification/containerservice/Fleet.Management/main.tsp +++ b/specification/containerservice/Fleet.Management/main.tsp @@ -19,12 +19,19 @@ namespace Microsoft.ContainerService; interface Operations extends Azure.ResourceManager.Operations {} -#suppress "@azure-tools/typespec-azure-core/documentation-required" "https://github.com/Azure/typespec-azure/issues/3107" +@doc("Azure Kubernetes Fleet Manager api versions.") enum Versions { + @doc("Azure Kubernetes Fleet Manager api version 2022-09-02-preview.") @useDependency(Azure.ResourceManager.Versions.v1_0_Preview_1) v2022_09_02_preview: "2022-09-02-preview", + @doc("Azure Kubernetes Fleet Manager api version 2023-03-15-preview.") @useDependency(Azure.Core.Versions.v1_0_Preview_2) @useDependency(Azure.ResourceManager.Versions.v1_0_Preview_1) v2023_03_15_preview: "2023-03-15-preview", + + @doc("Azure Kubernetes Fleet Manager api version 2023-06-15-preview.") + @useDependency(Azure.Core.Versions.v1_0_Preview_2) + @useDependency(Azure.ResourceManager.Versions.v1_0_Preview_1) + v2023_06_15_preview: "2023-06-15-preview" } diff --git a/specification/containerservice/Fleet.Management/updaterun.tsp b/specification/containerservice/Fleet.Management/updaterun.tsp index ad2f63b4f497..d5dd04777c08 100644 --- a/specification/containerservice/Fleet.Management/updaterun.tsp +++ b/specification/containerservice/Fleet.Management/updaterun.tsp @@ -30,7 +30,6 @@ model UpdateRun is ProxyResource { @path @visibility("create", "read") name: string; - ...EntityTag; } @@ -109,6 +108,29 @@ A group can only appear once across all UpdateStages in the UpdateRun. model ManagedClusterUpdate { @doc("The upgrade to apply to the ManagedClusters.") upgrade: ManagedClusterUpgradeSpec; + + @visibility("create", "read") + @doc("The node image upgrade to be applied to the target nodes in update run.") + @added(Versions.v2023_06_15_preview) + nodeImageSelection?: NodeImageSelection; +} + +@doc("The node image upgrade to be applied to the target nodes in update run.") +@added(Versions.v2023_06_15_preview) +model NodeImageSelection { + @visibility("create", "read") + @doc("The node image upgrade type.") + type: NodeImageSelectionType; +} + +@doc("The node image upgrade type.") +@added(Versions.v2023_06_15_preview) +enum NodeImageSelectionType { + @doc("Use the latest image version when upgrading nodes. Clusters may use different image versions (e.g., 'AKSUbuntu-1804gen2containerd-2021.10.12' and 'AKSUbuntu-1804gen2containerd-2021.10.19') because, for example, the latest available version is different in different regions.") + Latest, + + @doc("The image versions to upgrade nodes to are selected as described below: for each node pool in managed clusters affected by the update run, the system selects the latest image version such that it is available across all other node pools (in all other clusters) of the same image type. As a result, all node pools of the same image type will be upgraded to the same image version. For example, if the latest image version for image type 'AKSUbuntu-1804gen2containerd' is 'AKSUbuntu-1804gen2containerd-2021.10.12' for a node pool in cluster A in region X, and is 'AKSUbuntu-1804gen2containerd-2021.10.17' for a node pool in cluster B in region Y, the system will upgrade both node pools to image version 'AKSUbuntu-1804gen2containerd-2021.10.12'.") + Consistent, } scalar KubernetesVersion extends string; @@ -135,14 +157,23 @@ enum ManagedClusterUpgradeType { NodeImageOnly, } -#suppress "@azure-tools/typespec-azure-core/documentation-required" "MUST fix in next update" @doc("The state of the UpdateRun, UpdateStage, UpdateGroup, or MemberUpdate.") enum UpdateState { + @doc("The state of an UpdateRun/UpdateStage/UpdateGroup/MemberUpdate that has not been started.") NotStarted, + @doc("The state of an UpdateRun/UpdateStage/UpdateGroup/MemberUpdate that is running.") Running, + @doc("The state of an UpdateRun/UpdateStage/UpdateGroup/MemberUpdate that is being stopped.") Stopping, + @doc("The state of an UpdateRun/UpdateStage/UpdateGroup/MemberUpdate that has stopped.") Stopped, + + @added(Versions.v2023_06_15_preview) + @doc("The state of an UpdateRun/UpdateStage/UpdateGroup/MemberUpdate that has been skipped.") + Skipped, + @doc("The state of an UpdateRun/UpdateStage/UpdateGroup/MemberUpdate that has failed.") Failed, + @doc("The state of an UpdateRun/UpdateStage/UpdateGroup/MemberUpdate that has completed.") Completed, } @@ -175,6 +206,28 @@ model UpdateRunStatus { @extension("x-ms-identifiers", ["name"]) @doc("The stages composing an update run. Stages are run sequentially withing an UpdateRun.") stages?: UpdateStageStatus[]; + + @visibility("read") + @doc("The node image upgrade specs for the update run. It is only set in update run when `NodeImageSelection.type` is `Consistent`.") + @added(Versions.v2023_06_15_preview) + nodeImageSelection?: NodeImageSelectionStatus; +} + +@doc("The node image upgrade specs for the update run.") +@added(Versions.v2023_06_15_preview) +model NodeImageSelectionStatus { + @extension("x-ms-identifiers", ["version"]) + @visibility("read") + @doc("The image versions to upgrade the nodes to.") + selectedNodeImageVersions?: NodeImageVersion[]; +} + +@doc("The node upgrade image version.") +@added(Versions.v2023_06_15_preview) +model NodeImageVersion { + @visibility("read") + @doc("The image version to upgrade the nodes to (e.g., 'AKSUbuntu-1804gen2containerd-2022.12.13').") + version?: string; } @doc("The status of a UpdateStage.") @@ -241,6 +294,11 @@ model MemberUpdateStatus { @visibility("read") @doc("The operation resource id of the latest attempt to perform the operation.") operationId?: string; + + @visibility("read") + @doc("The status message after processing the member update operation.") + @added(Versions.v2023_06_15_preview) + message?: string; } @added(Versions.v2023_03_15_preview) @@ -255,12 +313,6 @@ interface UpdateRuns { IfNoneMatchParameters >; - @extension( - "x-ms-long-running-operation-options", - { - `final-state-via`: "location", - } - ) delete is FleetArmResourceDeleteAsync< UpdateRun, BaseParameters & IfMatchParameters diff --git a/specification/containerservice/resource-manager/Microsoft.ContainerService/fleet/preview/2022-09-02-preview/examples/Fleets_PatchTags.json b/specification/containerservice/resource-manager/Microsoft.ContainerService/fleet/preview/2022-09-02-preview/examples/Fleets_PatchTags.json index fa097d7b944c..82ef0dd65960 100644 --- a/specification/containerservice/resource-manager/Microsoft.ContainerService/fleet/preview/2022-09-02-preview/examples/Fleets_PatchTags.json +++ b/specification/containerservice/resource-manager/Microsoft.ContainerService/fleet/preview/2022-09-02-preview/examples/Fleets_PatchTags.json @@ -46,6 +46,12 @@ "provisioningState": "Succeeded" } } + }, + "202": { + "headers": { + "Retry-After": "20", + "Location": "https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup/providers/Microsoft.ContainerService/locations/eastus/operations/00000000-0000-0000-0000-000000000000?api-version=2022-02-01" + } } } } diff --git a/specification/containerservice/resource-manager/Microsoft.ContainerService/fleet/preview/2022-09-02-preview/fleets.json b/specification/containerservice/resource-manager/Microsoft.ContainerService/fleet/preview/2022-09-02-preview/fleets.json index 0c8228d8dd2e..ead0675e555c 100644 --- a/specification/containerservice/resource-manager/Microsoft.ContainerService/fleet/preview/2022-09-02-preview/fleets.json +++ b/specification/containerservice/resource-manager/Microsoft.ContainerService/fleet/preview/2022-09-02-preview/fleets.json @@ -355,6 +355,20 @@ "$ref": "#/definitions/Fleet" } }, + "202": { + "description": "Resource update request accepted.", + "headers": { + "Retry-After": { + "type": "integer", + "format": "int32", + "description": "The Retry-After header can indicate how long the client should wait before polling the operation status." + }, + "Location": { + "type": "string", + "description": "The Location header contains the URL where the status of the long running operation can be checked." + } + } + }, "default": { "description": "An unexpected error response.", "schema": { @@ -366,7 +380,11 @@ "Update a Fleet.": { "$ref": "./examples/Fleets_PatchTags.json" } - } + }, + "x-ms-long-running-operation-options": { + "final-state-via": "location" + }, + "x-ms-long-running-operation": true }, "delete": { "operationId": "Fleets_Delete", @@ -1005,15 +1023,18 @@ }, { "name": "Joining", - "value": "Joining" + "value": "Joining", + "description": "The provisioning state of a member joining a fleet." }, { "name": "Leaving", - "value": "Leaving" + "value": "Leaving", + "description": "The provisioning state of a member leaving a fleet." }, { "name": "Updating", - "value": "Updating" + "value": "Updating", + "description": "The provisioning state of a member being updated." } ] } @@ -1078,15 +1099,18 @@ }, { "name": "Creating", - "value": "Creating" + "value": "Creating", + "description": "The provisioning state of a fleet being created." }, { "name": "Updating", - "value": "Updating" + "value": "Updating", + "description": "The provisioning state of a fleet being updated." }, { "name": "Deleting", - "value": "Deleting" + "value": "Deleting", + "description": "The provisioning state of a fleet being deleted." } ] } diff --git a/specification/containerservice/resource-manager/Microsoft.ContainerService/fleet/preview/2023-03-15-preview/examples/FleetMembers_Update.json b/specification/containerservice/resource-manager/Microsoft.ContainerService/fleet/preview/2023-03-15-preview/examples/FleetMembers_Update.json index d97d675a02af..f3e474283a0a 100644 --- a/specification/containerservice/resource-manager/Microsoft.ContainerService/fleet/preview/2023-03-15-preview/examples/FleetMembers_Update.json +++ b/specification/containerservice/resource-manager/Microsoft.ContainerService/fleet/preview/2023-03-15-preview/examples/FleetMembers_Update.json @@ -37,6 +37,12 @@ "provisioningState": "Succeeded" } } + }, + "202": { + "headers": { + "Retry-After": "20", + "Location": "https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup/providers/Microsoft.ContainerService/locations/eastus/operations/00000000-0000-0000-0000-000000000000?api-version=2022-02-01" + } } } } diff --git a/specification/containerservice/resource-manager/Microsoft.ContainerService/fleet/preview/2023-03-15-preview/examples/Fleets_PatchTags.json b/specification/containerservice/resource-manager/Microsoft.ContainerService/fleet/preview/2023-03-15-preview/examples/Fleets_PatchTags.json index 455ebc78a602..ddb7e8f16dec 100644 --- a/specification/containerservice/resource-manager/Microsoft.ContainerService/fleet/preview/2023-03-15-preview/examples/Fleets_PatchTags.json +++ b/specification/containerservice/resource-manager/Microsoft.ContainerService/fleet/preview/2023-03-15-preview/examples/Fleets_PatchTags.json @@ -46,6 +46,12 @@ "provisioningState": "Succeeded" } } + }, + "202": { + "headers": { + "Retry-After": "20", + "Location": "https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup/providers/Microsoft.ContainerService/locations/eastus/operations/00000000-0000-0000-0000-000000000000?api-version=2022-02-01" + } } } } diff --git a/specification/containerservice/resource-manager/Microsoft.ContainerService/fleet/preview/2023-03-15-preview/fleets.json b/specification/containerservice/resource-manager/Microsoft.ContainerService/fleet/preview/2023-03-15-preview/fleets.json index 415fdbc2001e..1116a74960de 100644 --- a/specification/containerservice/resource-manager/Microsoft.ContainerService/fleet/preview/2023-03-15-preview/fleets.json +++ b/specification/containerservice/resource-manager/Microsoft.ContainerService/fleet/preview/2023-03-15-preview/fleets.json @@ -358,6 +358,20 @@ "$ref": "#/definitions/Fleet" } }, + "202": { + "description": "Resource update request accepted.", + "headers": { + "Retry-After": { + "type": "integer", + "format": "int32", + "description": "The Retry-After header can indicate how long the client should wait before polling the operation status." + }, + "Location": { + "type": "string", + "description": "The Location header contains the URL where the status of the long running operation can be checked." + } + } + }, "default": { "description": "An unexpected error response.", "schema": { @@ -369,7 +383,11 @@ "Update a Fleet.": { "$ref": "./examples/Fleets_PatchTags.json" } - } + }, + "x-ms-long-running-operation-options": { + "final-state-via": "location" + }, + "x-ms-long-running-operation": true }, "delete": { "operationId": "Fleets_Delete", @@ -764,6 +782,20 @@ "$ref": "#/definitions/FleetMember" } }, + "202": { + "description": "Resource update request accepted.", + "headers": { + "Retry-After": { + "type": "integer", + "format": "int32", + "description": "The Retry-After header can indicate how long the client should wait before polling the operation status." + }, + "Location": { + "type": "string", + "description": "The Location header contains the URL where the status of the long running operation can be checked." + } + } + }, "default": { "description": "An unexpected error response.", "schema": { @@ -775,7 +807,11 @@ "Updates a FleetMember resource synchronously.": { "$ref": "./examples/FleetMembers_Update.json" } - } + }, + "x-ms-long-running-operation-options": { + "final-state-via": "location" + }, + "x-ms-long-running-operation": true }, "delete": { "operationId": "FleetMembers_Delete", @@ -1149,7 +1185,7 @@ } }, "x-ms-long-running-operation-options": { - "final-state-via": "location" + "final-state-via": "azure-async-operation" }, "x-ms-long-running-operation": true } @@ -1552,15 +1588,18 @@ }, { "name": "Joining", - "value": "Joining" + "value": "Joining", + "description": "The provisioning state of a member joining a fleet." }, { "name": "Leaving", - "value": "Leaving" + "value": "Leaving", + "description": "The provisioning state of a member leaving a fleet." }, { "name": "Updating", - "value": "Updating" + "value": "Updating", + "description": "The provisioning state of a member being updated." } ] } @@ -1648,15 +1687,18 @@ }, { "name": "Creating", - "value": "Creating" + "value": "Creating", + "description": "The provisioning state of a fleet being created." }, { "name": "Updating", - "value": "Updating" + "value": "Updating", + "description": "The provisioning state of a fleet being updated." }, { "name": "Deleting", - "value": "Deleting" + "value": "Deleting", + "description": "The provisioning state of a fleet being deleted." } ] } @@ -2007,7 +2049,39 @@ ], "x-ms-enum": { "name": "UpdateState", - "modelAsString": true + "modelAsString": true, + "values": [ + { + "name": "NotStarted", + "value": "NotStarted", + "description": "The state of an UpdateRun/UpdateStage/UpdateGroup/MemberUpdate that has not been started." + }, + { + "name": "Running", + "value": "Running", + "description": "The state of an UpdateRun/UpdateStage/UpdateGroup/MemberUpdate that is running." + }, + { + "name": "Stopping", + "value": "Stopping", + "description": "The state of an UpdateRun/UpdateStage/UpdateGroup/MemberUpdate that is being stopped." + }, + { + "name": "Stopped", + "value": "Stopped", + "description": "The state of an UpdateRun/UpdateStage/UpdateGroup/MemberUpdate that has stopped." + }, + { + "name": "Failed", + "value": "Failed", + "description": "The state of an UpdateRun/UpdateStage/UpdateGroup/MemberUpdate that has failed." + }, + { + "name": "Completed", + "value": "Completed", + "description": "The state of an UpdateRun/UpdateStage/UpdateGroup/MemberUpdate that has completed." + } + ] } }, "UpdateStatus": { diff --git a/specification/containerservice/resource-manager/Microsoft.ContainerService/fleet/preview/2023-06-15-preview/examples/FleetMembers_Update.json b/specification/containerservice/resource-manager/Microsoft.ContainerService/fleet/preview/2023-06-15-preview/examples/FleetMembers_Update.json index 23ab31da4bfe..72b60cae9721 100644 --- a/specification/containerservice/resource-manager/Microsoft.ContainerService/fleet/preview/2023-06-15-preview/examples/FleetMembers_Update.json +++ b/specification/containerservice/resource-manager/Microsoft.ContainerService/fleet/preview/2023-06-15-preview/examples/FleetMembers_Update.json @@ -37,6 +37,12 @@ "provisioningState": "Succeeded" } } + }, + "202": { + "headers": { + "Retry-After": "20", + "Location": "https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup/providers/Microsoft.ContainerService/locations/eastus/operations/00000000-0000-0000-0000-000000000000?api-version=2022-02-01" + } } } } diff --git a/specification/containerservice/resource-manager/Microsoft.ContainerService/fleet/preview/2023-06-15-preview/examples/Fleets_PatchTags.json b/specification/containerservice/resource-manager/Microsoft.ContainerService/fleet/preview/2023-06-15-preview/examples/Fleets_PatchTags.json index 61d4dee72a7f..f7a6abfdc625 100644 --- a/specification/containerservice/resource-manager/Microsoft.ContainerService/fleet/preview/2023-06-15-preview/examples/Fleets_PatchTags.json +++ b/specification/containerservice/resource-manager/Microsoft.ContainerService/fleet/preview/2023-06-15-preview/examples/Fleets_PatchTags.json @@ -46,6 +46,12 @@ "provisioningState": "Succeeded" } } + }, + "202": { + "headers": { + "Retry-After": "20", + "Location": "https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup/providers/Microsoft.ContainerService/locations/eastus/operations/00000000-0000-0000-0000-000000000000?api-version=2022-02-01" + } } } } diff --git a/specification/containerservice/resource-manager/Microsoft.ContainerService/fleet/preview/2023-06-15-preview/examples/UpdateRuns_CreateOrUpdate.json b/specification/containerservice/resource-manager/Microsoft.ContainerService/fleet/preview/2023-06-15-preview/examples/UpdateRuns_CreateOrUpdate.json index 8b515cc85f7c..a4819a69426e 100644 --- a/specification/containerservice/resource-manager/Microsoft.ContainerService/fleet/preview/2023-06-15-preview/examples/UpdateRuns_CreateOrUpdate.json +++ b/specification/containerservice/resource-manager/Microsoft.ContainerService/fleet/preview/2023-06-15-preview/examples/UpdateRuns_CreateOrUpdate.json @@ -26,6 +26,9 @@ "upgrade": { "type": "Full", "kubernetesVersion": "1.26.1" + }, + "nodeImageSelection": { + "type": "Latest" } } } @@ -64,6 +67,9 @@ "upgrade": { "type": "Full", "kubernetesVersion": "1.26.1" + }, + "nodeImageSelection": { + "type": "Latest" } }, "status": { @@ -138,6 +144,9 @@ "upgrade": { "type": "Full", "kubernetesVersion": "1.26.1" + }, + "nodeImageSelection": { + "type": "Latest" } }, "status": { diff --git a/specification/containerservice/resource-manager/Microsoft.ContainerService/fleet/preview/2023-06-15-preview/examples/UpdateRuns_Get.json b/specification/containerservice/resource-manager/Microsoft.ContainerService/fleet/preview/2023-06-15-preview/examples/UpdateRuns_Get.json index 1e103869e60c..7562e52deb43 100644 --- a/specification/containerservice/resource-manager/Microsoft.ContainerService/fleet/preview/2023-06-15-preview/examples/UpdateRuns_Get.json +++ b/specification/containerservice/resource-manager/Microsoft.ContainerService/fleet/preview/2023-06-15-preview/examples/UpdateRuns_Get.json @@ -41,6 +41,9 @@ "upgrade": { "type": "Full", "kubernetesVersion": "1.26.1" + }, + "nodeImageSelection": { + "type": "Latest" } }, "status": { diff --git a/specification/containerservice/resource-manager/Microsoft.ContainerService/fleet/preview/2023-06-15-preview/examples/UpdateRuns_ListByFleet.json b/specification/containerservice/resource-manager/Microsoft.ContainerService/fleet/preview/2023-06-15-preview/examples/UpdateRuns_ListByFleet.json index 1bcc316ddb3e..5e299f1c430e 100644 --- a/specification/containerservice/resource-manager/Microsoft.ContainerService/fleet/preview/2023-06-15-preview/examples/UpdateRuns_ListByFleet.json +++ b/specification/containerservice/resource-manager/Microsoft.ContainerService/fleet/preview/2023-06-15-preview/examples/UpdateRuns_ListByFleet.json @@ -42,6 +42,9 @@ "upgrade": { "type": "Full", "kubernetesVersion": "1.26.1" + }, + "nodeImageSelection": { + "type": "Latest" } }, "status": { diff --git a/specification/containerservice/resource-manager/Microsoft.ContainerService/fleet/preview/2023-06-15-preview/examples/UpdateRuns_Start.json b/specification/containerservice/resource-manager/Microsoft.ContainerService/fleet/preview/2023-06-15-preview/examples/UpdateRuns_Start.json index 4d01472cbc1f..c069499d18db 100644 --- a/specification/containerservice/resource-manager/Microsoft.ContainerService/fleet/preview/2023-06-15-preview/examples/UpdateRuns_Start.json +++ b/specification/containerservice/resource-manager/Microsoft.ContainerService/fleet/preview/2023-06-15-preview/examples/UpdateRuns_Start.json @@ -41,6 +41,9 @@ "upgrade": { "type": "Full", "kubernetesVersion": "1.26.1" + }, + "nodeImageSelection": { + "type": "Latest" } }, "status": { diff --git a/specification/containerservice/resource-manager/Microsoft.ContainerService/fleet/preview/2023-06-15-preview/examples/UpdateRuns_Stop.json b/specification/containerservice/resource-manager/Microsoft.ContainerService/fleet/preview/2023-06-15-preview/examples/UpdateRuns_Stop.json index 8881f0035f94..c222ff4da605 100644 --- a/specification/containerservice/resource-manager/Microsoft.ContainerService/fleet/preview/2023-06-15-preview/examples/UpdateRuns_Stop.json +++ b/specification/containerservice/resource-manager/Microsoft.ContainerService/fleet/preview/2023-06-15-preview/examples/UpdateRuns_Stop.json @@ -41,6 +41,9 @@ "upgrade": { "type": "Full", "kubernetesVersion": "1.26.1" + }, + "nodeImageSelection": { + "type": "Latest" } }, "status": { diff --git a/specification/containerservice/resource-manager/Microsoft.ContainerService/fleet/preview/2023-06-15-preview/fleets.json b/specification/containerservice/resource-manager/Microsoft.ContainerService/fleet/preview/2023-06-15-preview/fleets.json index 0a3bf65f4cf0..b4eaeb7db17d 100644 --- a/specification/containerservice/resource-manager/Microsoft.ContainerService/fleet/preview/2023-06-15-preview/fleets.json +++ b/specification/containerservice/resource-manager/Microsoft.ContainerService/fleet/preview/2023-06-15-preview/fleets.json @@ -358,6 +358,20 @@ "$ref": "#/definitions/Fleet" } }, + "202": { + "description": "Resource update request accepted.", + "headers": { + "Retry-After": { + "type": "integer", + "format": "int32", + "description": "The Retry-After header can indicate how long the client should wait before polling the operation status." + }, + "Location": { + "type": "string", + "description": "The Location header contains the URL where the status of the long running operation can be checked." + } + } + }, "default": { "description": "An unexpected error response.", "schema": { @@ -369,7 +383,11 @@ "Update a Fleet.": { "$ref": "./examples/Fleets_PatchTags.json" } - } + }, + "x-ms-long-running-operation-options": { + "final-state-via": "location" + }, + "x-ms-long-running-operation": true }, "delete": { "operationId": "Fleets_Delete", @@ -764,6 +782,20 @@ "$ref": "#/definitions/FleetMember" } }, + "202": { + "description": "Resource update request accepted.", + "headers": { + "Retry-After": { + "type": "integer", + "format": "int32", + "description": "The Retry-After header can indicate how long the client should wait before polling the operation status." + }, + "Location": { + "type": "string", + "description": "The Location header contains the URL where the status of the long running operation can be checked." + } + } + }, "default": { "description": "An unexpected error response.", "schema": { @@ -775,7 +807,11 @@ "Updates a FleetMember resource synchronously.": { "$ref": "./examples/FleetMembers_Update.json" } - } + }, + "x-ms-long-running-operation-options": { + "final-state-via": "location" + }, + "x-ms-long-running-operation": true }, "delete": { "operationId": "FleetMembers_Delete", @@ -1149,7 +1185,7 @@ } }, "x-ms-long-running-operation-options": { - "final-state-via": "location" + "final-state-via": "azure-async-operation" }, "x-ms-long-running-operation": true } @@ -1326,6 +1362,50 @@ } }, "definitions": { + "APIServerAccessProfile": { + "type": "object", + "description": "Access profile for the Fleet hub API server.", + "properties": { + "enablePrivateCluster": { + "type": "boolean", + "description": "Whether to create the Fleet hub as a private cluster or not.", + "x-ms-mutability": [ + "read", + "create" + ] + }, + "enableVnetIntegration": { + "type": "boolean", + "description": "Whether to enable apiserver vnet integration for the Fleet hub or not.", + "x-ms-mutability": [ + "read", + "create" + ] + }, + "subnetId": { + "$ref": "#/definitions/SubnetResourceId", + "description": "The subnet to be used when apiserver vnet integration is enabled. It is required when creating a new Fleet with BYO vnet.", + "x-ms-mutability": [ + "read", + "create" + ] + } + } + }, + "AgentProfile": { + "type": "object", + "description": "Agent profile for the Fleet hub.", + "properties": { + "subnetId": { + "$ref": "#/definitions/SubnetResourceId", + "description": "The ID of the subnet which the Fleet hub node will join on startup. If this is not specified, a vnet and subnet will be generated and used.", + "x-ms-mutability": [ + "read", + "create" + ] + } + } + }, "ClusterResourceId": { "type": "string", "format": "arm-id", @@ -1355,6 +1435,10 @@ "type": "string", "description": "If eTag is provided in the response body, it may also be provided as a header per the normal etag convention. Entity tags are used for comparing two or more entities from the same requested resource. HTTP/1.1 uses entity tags in the etag (section 14.19), If-Match (section 14.24), If-None-Match (section 14.26), and If-Range (section 14.27) header fields.", "readOnly": true + }, + "identity": { + "$ref": "../../../../../../common-types/resource-management/v4/managedidentity.json#/definitions/ManagedServiceIdentity", + "description": "Managed identity." } }, "allOf": [ @@ -1412,6 +1496,22 @@ "create" ] }, + "apiServerAccessProfile": { + "$ref": "#/definitions/APIServerAccessProfile", + "description": "The access profile for the Fleet hub API server.", + "x-ms-mutability": [ + "read", + "create" + ] + }, + "agentProfile": { + "$ref": "#/definitions/AgentProfile", + "description": "The agent profile for the Fleet hub.", + "x-ms-mutability": [ + "read", + "create" + ] + }, "fqdn": { "type": "string", "description": "The FQDN of the Fleet hub.", @@ -1552,15 +1652,18 @@ }, { "name": "Joining", - "value": "Joining" + "value": "Joining", + "description": "The provisioning state of a member joining a fleet." }, { "name": "Leaving", - "value": "Leaving" + "value": "Leaving", + "description": "The provisioning state of a member leaving a fleet." }, { "name": "Updating", - "value": "Updating" + "value": "Updating", + "description": "The provisioning state of a member being updated." } ] } @@ -1598,6 +1701,10 @@ "additionalProperties": { "type": "string" } + }, + "identity": { + "$ref": "../../../../../../common-types/resource-management/v4/managedidentity.json#/definitions/ManagedServiceIdentity", + "description": "Managed identity." } } }, @@ -1648,15 +1755,18 @@ }, { "name": "Creating", - "value": "Creating" + "value": "Creating", + "description": "The provisioning state of a fleet being created." }, { "name": "Updating", - "value": "Updating" + "value": "Updating", + "description": "The provisioning state of a fleet being updated." }, { "name": "Deleting", - "value": "Deleting" + "value": "Deleting", + "description": "The provisioning state of a fleet being deleted." } ] } @@ -1671,6 +1781,14 @@ "upgrade": { "$ref": "#/definitions/ManagedClusterUpgradeSpec", "description": "The upgrade to apply to the ManagedClusters." + }, + "nodeImageSelection": { + "$ref": "#/definitions/NodeImageSelection", + "description": "The node image upgrade to be applied to the target nodes in update run.", + "x-ms-mutability": [ + "read", + "create" + ] } }, "required": [ @@ -1741,9 +1859,95 @@ "type": "string", "description": "The operation resource id of the latest attempt to perform the operation.", "readOnly": true + }, + "message": { + "type": "string", + "description": "The status message after processing the member update operation.", + "readOnly": true } } }, + "NodeImageSelection": { + "type": "object", + "description": "The node image upgrade to be applied to the target nodes in update run.", + "properties": { + "type": { + "$ref": "#/definitions/NodeImageSelectionType", + "description": "The node image upgrade type.", + "x-ms-mutability": [ + "read", + "create" + ] + } + }, + "required": [ + "type" + ] + }, + "NodeImageSelectionStatus": { + "type": "object", + "description": "The node image upgrade specs for the update run.", + "properties": { + "selectedNodeImageVersions": { + "type": "array", + "description": "The image versions to upgrade the nodes to.", + "items": { + "$ref": "#/definitions/NodeImageVersion" + }, + "readOnly": true, + "x-ms-identifiers": [ + "version" + ] + } + } + }, + "NodeImageSelectionType": { + "type": "string", + "description": "The node image upgrade type.", + "enum": [ + "Latest", + "Consistent" + ], + "x-ms-enum": { + "name": "NodeImageSelectionType", + "modelAsString": true, + "values": [ + { + "name": "Latest", + "value": "Latest", + "description": "Use the latest image version when upgrading nodes. Clusters may use different image versions (e.g., 'AKSUbuntu-1804gen2containerd-2021.10.12' and 'AKSUbuntu-1804gen2containerd-2021.10.19') because, for example, the latest available version is different in different regions." + }, + { + "name": "Consistent", + "value": "Consistent", + "description": "The image versions to upgrade nodes to are selected as described below: for each node pool in managed clusters affected by the update run, the system selects the latest image version such that it is available across all other node pools (in all other clusters) of the same image type. As a result, all node pools of the same image type will be upgraded to the same image version. For example, if the latest image version for image type 'AKSUbuntu-1804gen2containerd' is 'AKSUbuntu-1804gen2containerd-2021.10.12' for a node pool in cluster A in region X, and is 'AKSUbuntu-1804gen2containerd-2021.10.17' for a node pool in cluster B in region Y, the system will upgrade both node pools to image version 'AKSUbuntu-1804gen2containerd-2021.10.12'." + } + ] + } + }, + "NodeImageVersion": { + "type": "object", + "description": "The node upgrade image version.", + "properties": { + "version": { + "type": "string", + "description": "The image version to upgrade the nodes to (e.g., 'AKSUbuntu-1804gen2containerd-2022.12.13').", + "readOnly": true + } + } + }, + "SubnetResourceId": { + "type": "string", + "format": "arm-id", + "description": "A type definition that refers the id to an ARM resource.", + "x-ms-arm-id-details": { + "allowedResources": [ + { + "type": "Microsoft.Network/virtualNetworks/subnets" + } + ] + } + }, "UpdateGroup": { "type": "object", "description": "A group to be updated.", @@ -1909,6 +2113,11 @@ "x-ms-identifiers": [ "name" ] + }, + "nodeImageSelection": { + "$ref": "#/definitions/NodeImageSelectionStatus", + "description": "The node image upgrade specs for the update run. It is only set in update run when `NodeImageSelection.type` is `Consistent`.", + "readOnly": true } } }, @@ -2002,12 +2211,50 @@ "Running", "Stopping", "Stopped", + "Skipped", "Failed", "Completed" ], "x-ms-enum": { "name": "UpdateState", - "modelAsString": true + "modelAsString": true, + "values": [ + { + "name": "NotStarted", + "value": "NotStarted", + "description": "The state of an UpdateRun/UpdateStage/UpdateGroup/MemberUpdate that has not been started." + }, + { + "name": "Running", + "value": "Running", + "description": "The state of an UpdateRun/UpdateStage/UpdateGroup/MemberUpdate that is running." + }, + { + "name": "Stopping", + "value": "Stopping", + "description": "The state of an UpdateRun/UpdateStage/UpdateGroup/MemberUpdate that is being stopped." + }, + { + "name": "Stopped", + "value": "Stopped", + "description": "The state of an UpdateRun/UpdateStage/UpdateGroup/MemberUpdate that has stopped." + }, + { + "name": "Skipped", + "value": "Skipped", + "description": "The state of an UpdateRun/UpdateStage/UpdateGroup/MemberUpdate that has been skipped." + }, + { + "name": "Failed", + "value": "Failed", + "description": "The state of an UpdateRun/UpdateStage/UpdateGroup/MemberUpdate that has failed." + }, + { + "name": "Completed", + "value": "Completed", + "description": "The state of an UpdateRun/UpdateStage/UpdateGroup/MemberUpdate that has completed." + } + ] } }, "UpdateStatus": {