diff --git a/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/extensionTypes/ExtensionType.tsp b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/extensionTypes/ExtensionType.tsp new file mode 100644 index 000000000000..5949f8aa6de8 --- /dev/null +++ b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/extensionTypes/ExtensionType.tsp @@ -0,0 +1,187 @@ +import "@azure-tools/typespec-azure-core"; +import "@azure-tools/typespec-azure-resource-manager"; +import "@typespec/openapi"; +import "@typespec/rest"; +import "./models.tsp"; + +using TypeSpec.Rest; +using Azure.ResourceManager; +using TypeSpec.Http; +using TypeSpec.OpenAPI; + +namespace Microsoft.KubernetesConfiguration; +/** + * The Extension Type object. + */ +@subscriptionResource +model ExtensionType + is Azure.ResourceManager.ProxyResource { + ...ResourceNameParameter< + Resource = ExtensionType, + KeyName = "extensionTypeName", + SegmentName = "extensionTypes", + NamePattern = "^[a-zA-Z][a-zA-Z0-9-_]*$" + >; +} + +alias ExtensionTypeOps = Azure.ResourceManager.Legacy.ExtensionOperations< + { + ...ApiVersionParameter; + ...SubscriptionIdParameter; + + /** the provider namespace */ + @path + @segment("providers") + @key + providerNamespace: "Microsoft.KubernetesConfiguration"; + + ...LocationParameter; + }, + {}, + { + /** Name of the Extension Type. */ + @path + @segment("extensionTypes") + @key + @pattern("^[a-zA-Z][a-zA-Z0-9-_]*$") + extensionTypeName: string; + } +>; + +@armResourceOperations(#{ omitTags: true }) +interface ExtensionTypes { + /** + * Get an extension type for the location. + */ + @tag("ExtensionTypes") + @tag("ClusterExtensionTypes") + locationGet is ExtensionTypeOps.Read; + + /** + * List all Extension Types for the location. + */ + @tag("ExtensionTypes") + @tag("ClusterExtensionTypes") + locationList is ExtensionTypeOps.List< + ExtensionType, + Parameters = { + /** + * Filter results by Publisher ID of a marketplace extension type + */ + @query("publisherId") + publisherId?: string; + + /** + * Filter results by Offer or Product ID of a marketplace extension type + */ + @query("offerId") + offerId?: string; + + /** + * Filter results by Plan ID of a marketplace extension type + */ + @query("planId") + planId?: string; + + /** + * Filter results by release train (default value is stable) + */ + @query("releaseTrain") + releaseTrain?: string; + + /** + * Filter results by the cluster type for extension types + */ + @query("clusterType") + clusterType?: string; + }, + Response = ArmResponse + >; +} +alias ExtensionTypeOperationGroupOps = Azure.ResourceManager.Legacy.ExtensionOperations< + { + ...ApiVersionParameter; + ...SubscriptionIdParameter; + ...ResourceGroupParameter; + + /** + * The Kubernetes cluster RP - i.e. Microsoft.ContainerService, Microsoft.Kubernetes, Microsoft.HybridContainerService. + */ + @path + @segment("providers") + @key + 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("^.*") + clusterName: string; + }, + { + ...Extension.ExtensionProviderNamespace; + ...ParentKeysOf; + }, + { + ...Extension.ExtensionProviderNamespace; + ...KeysOf; + } +>; + +@armResourceOperations(#{ omitTags: true }) +interface ExtensionTypeOperationGroup { + /** + * Get an Extension Type installable to the cluster based region and type for the cluster. + */ + @tag("ExtensionTypes") + @tag("ClusterExtensionTypes") + get is ExtensionTypeOperationGroupOps.Read; + + /** + * List installable Extension Types for the cluster based region and type for the cluster. + */ + @tag("ExtensionTypes") + @tag("ClusterExtensionTypes") + list is ExtensionTypeOperationGroupOps.List< + ExtensionType, + Parameters = { + /** + * Filter results by Publisher ID of a marketplace extension type + */ + @query("publisherId") + publisherId?: string; + + /** + * Filter results by Offer or Product ID of a marketplace extension type + */ + @query("offerId") + offerId?: string; + + /** + * Filter results by Plan ID of a marketplace extension type + */ + @query("planId") + planId?: string; + + /** + * Filter results by release train (default value is stable) + */ + @query("releaseTrain") + releaseTrain?: string; + }, + Response = ArmResponse + >; +} + +@@doc(ExtensionType.name, "Name of the Extension Type."); +@@doc(ExtensionType.properties, ""); diff --git a/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/extensionTypes/ExtensionTypeVersionForReleaseTrain.tsp b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/extensionTypes/ExtensionTypeVersionForReleaseTrain.tsp new file mode 100644 index 000000000000..6c7eab74035e --- /dev/null +++ b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/extensionTypes/ExtensionTypeVersionForReleaseTrain.tsp @@ -0,0 +1,191 @@ +import "@azure-tools/typespec-azure-core"; +import "@azure-tools/typespec-azure-resource-manager"; +import "@typespec/openapi"; +import "@typespec/rest"; +import "./models.tsp"; +import "./ExtensionType.tsp"; + +using TypeSpec.Rest; +using Azure.ResourceManager; +using TypeSpec.Http; +using TypeSpec.OpenAPI; + +namespace Microsoft.KubernetesConfiguration; +/** + * The Extension Type Version object. + */ +@subscriptionResource +@parentResource(ExtensionType) +model ExtensionTypeVersionForReleaseTrain + is Azure.ResourceManager.ProxyResource { + ...ResourceNameParameter< + Resource = ExtensionTypeVersionForReleaseTrain, + KeyName = "versionNumber", + SegmentName = "versions", + NamePattern = "" + >; +} + +alias ExtensionTypeVersionForReleaseTrainOps = Azure.ResourceManager.Legacy.ExtensionOperations< + { + ...ApiVersionParameter; + ...SubscriptionIdParameter; + + /** the provider namespace */ + @path + @segment("providers") + @key + providerNamespace: "Microsoft.KubernetesConfiguration"; + + ...LocationParameter; + + /** Name of the Extension Type. */ + @path + @segment("extensionTypes") + @key + @pattern("^[a-zA-Z][a-zA-Z0-9-_]*$") + extensionTypeName: string; + }, + {}, + { + /** Version number of the Extension Type. */ + @path + @segment("versions") + @key + versionNumber: string; + } +>; + +@armResourceOperations(#{ omitTags: true }) +interface ExtensionTypeVersionForReleaseTrains { + /** + * Get details of a version for an extension type and location + */ + @tag("ExtensionTypes") + @tag("ClusterExtensionTypes") + getVersion is ExtensionTypeVersionForReleaseTrainOps.Read; + + /** + * List the versions for an extension type and location. + */ + @tag("ExtensionTypes") + @tag("ClusterExtensionTypes") + listVersions is ExtensionTypeVersionForReleaseTrainOps.List< + ExtensionTypeVersionForReleaseTrain, + Parameters = { + /** + * Filter results by release train (default value is stable) + */ + @query("releaseTrain") + releaseTrain?: string; + + /** + * Filter results by the cluster type for extension types + */ + @query("clusterType") + clusterType?: string; + + /** + * Filter results by the major version of an extension type + */ + @query("majorVersion") + majorVersion?: string; + + /** + * Filter results by only the latest version (based on other query parameters) + */ + @query("showLatest") + showLatest?: boolean; + }, + Response = ArmResponse + >; +} +alias ExtensionTypeVersionForReleaseTrainOperationGroupOps = Azure.ResourceManager.Legacy.ExtensionOperations< + { + ...ApiVersionParameter; + ...SubscriptionIdParameter; + ...ResourceGroupParameter; + + /** + * The Kubernetes cluster RP - i.e. Microsoft.ContainerService, Microsoft.Kubernetes, Microsoft.HybridContainerService. + */ + @path + @segment("providers") + @key + 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("^.*") + clusterName: string; + }, + { + ...Extension.ExtensionProviderNamespace; + ...KeysOf; + }, + { + ...Extension.ExtensionProviderNamespace; + ...KeysOf; + + /** Version number of the Extension Type. */ + @path + @segment("versions") + @key + versionNumber: string; + } +>; + +@armResourceOperations(#{ omitTags: true }) +interface ExtensionTypeVersionForReleaseTrainOperationGroup { + /** + * Get details of a version for an Extension Type installable to the cluster. + */ + @tag("ExtensionTypes") + @tag("ClusterExtensionTypes") + clusterGetVersion is ExtensionTypeVersionForReleaseTrainOperationGroupOps.Read; + + /** + * List the version for an Extension Type installable to the cluster. + */ + @tag("ExtensionTypes") + @tag("ClusterExtensionTypes") + clusterListVersions is ExtensionTypeVersionForReleaseTrainOperationGroupOps.List< + ExtensionTypeVersionForReleaseTrain, + Parameters = { + /** + * Filter results by release train (default value is stable) + */ + @query("releaseTrain") + releaseTrain?: string; + + /** + * Filter results by the major version of an extension type + */ + @query("majorVersion") + majorVersion?: string; + + /** + * Filter results by only the latest version (based on other query parameters) + */ + @query("showLatest") + showLatest?: boolean; + }, + Response = ArmResponse + >; +} + +@@doc(ExtensionTypeVersionForReleaseTrain.name, + "Version number of the Extension Type." +); +@@doc(ExtensionTypeVersionForReleaseTrain.properties, ""); diff --git a/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/extensionTypes/back-compatible.tsp b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/extensionTypes/back-compatible.tsp new file mode 100644 index 000000000000..c0ecf2a2c2b1 --- /dev/null +++ b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/extensionTypes/back-compatible.tsp @@ -0,0 +1,25 @@ +import "@azure-tools/typespec-client-generator-core"; + +using Azure.ClientGenerator.Core; +using Microsoft.KubernetesConfiguration; + +#suppress "@azure-tools/typespec-azure-core/no-legacy-usage" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" +@@Legacy.flattenProperty(ClusterScopeSettings.properties); + +@@clientLocation(ExtensionTypeOperationGroup.get, ExtensionTypes); +@@clientLocation(ExtensionTypeOperationGroup.list, ExtensionTypes); + +@@clientLocation(ExtensionTypeVersionForReleaseTrains.getVersion, + ExtensionTypes +); +@@clientLocation(ExtensionTypeVersionForReleaseTrains.listVersions, + ExtensionTypes +); +@@clientLocation(ExtensionTypeVersionForReleaseTrainOperationGroup.clusterGetVersion, + ExtensionTypes +); +@@clientLocation(ExtensionTypeVersionForReleaseTrainOperationGroup.clusterListVersions, + ExtensionTypes +); +@@visibility(ExtensionTypeVersionsList.value, Lifecycle.Read); +@@visibility(ExtensionTypesList.value, Lifecycle.Read); diff --git a/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/extensionTypes/client.tsp b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/extensionTypes/client.tsp new file mode 100644 index 000000000000..57faa3f11994 --- /dev/null +++ b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/extensionTypes/client.tsp @@ -0,0 +1,33 @@ +import "./main.tsp"; +import "@azure-tools/typespec-client-generator-core"; + +using Azure.ClientGenerator.Core; + +@@clientName(Microsoft.KubernetesConfiguration, + "KubernetesConfigurationExtensionTypesMgmtClient", + "python" +); +@@clientName(Microsoft.KubernetesConfiguration, + "ExtensionTypesClient", + "javascript" +); +@@clientName(Microsoft.KubernetesConfiguration, + "ExtensionTypesMgmtClient", + "java" +); +@@clientName(Microsoft.KubernetesConfiguration.ExtensionTypeVersionForReleaseTrainProperties, + "VersionForReleaseTrainProperties", + "java" +); +@@clientName(Microsoft.KubernetesConfiguration.ExtensionTypeVersionUnsupportedKubernetesMatrixItem, + "UnsupportedKubernetesMatrixItem", + "java" +); +@@clientName(Microsoft.KubernetesConfiguration.ExtensionTypeVersionForReleaseTrainPropertiesUnsupportedKubernetesVersions, + "UnsupportedKubernetesVersions", + "java" +); +@@clientName(Microsoft.KubernetesConfiguration.ExtensionTypeVersionForReleaseTrain, + "VersionForReleaseTrain", + "java" +); diff --git a/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/extensionTypes/examples/2024-11-01-preview/GetExtensionType.json b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/extensionTypes/examples/2024-11-01-preview/GetExtensionType.json new file mode 100644 index 000000000000..7b1fc0b5d961 --- /dev/null +++ b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/extensionTypes/examples/2024-11-01-preview/GetExtensionType.json @@ -0,0 +1,50 @@ +{ + "parameters": { + "api-version": "2024-11-01-preview", + "clusterName": "my-cluster", + "clusterResourceName": "connectedClusters", + "clusterRp": "Microsoft.Kubernetes", + "extensionTypeName": "my-extension-type", + "resourceGroupName": "rg1", + "subscriptionId": "subId1" + }, + "responses": { + "200": { + "description": "Details of the extension type", + "body": { + "name": "bbbb", + "type": "cccc", + "id": "aaaa", + "properties": { + "description": "My extension type!", + "isManagedIdentityRequired": true, + "isSystemExtension": false, + "planInfo": { + "offerId": "3333333", + "planId": "222222", + "publisherId": "111111" + }, + "publisher": "Microsoft", + "supportedClusterTypes": [ + "connectedClusters" + ], + "supportedScopes": { + "clusterScopeSettings": { + "name": "bbbbbbbbbbbbb", + "type": "ccccccccccccccccccccccccc", + "id": "aaaaaaaaaaaaaaaaaa", + "properties": { + "allowMultipleInstances": true, + "defaultReleaseNamespace": "kube-system" + } + }, + "defaultScope": "cluster" + } + } + }, + "headers": {} + } + }, + "operationId": "ExtensionTypes_Get", + "title": "Get Extension Types" +} diff --git a/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/extensionTypes/examples/2024-11-01-preview/GetExtensionTypeByLocation.json b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/extensionTypes/examples/2024-11-01-preview/GetExtensionTypeByLocation.json new file mode 100644 index 000000000000..05b24a833806 --- /dev/null +++ b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/extensionTypes/examples/2024-11-01-preview/GetExtensionTypeByLocation.json @@ -0,0 +1,47 @@ +{ + "parameters": { + "api-version": "2024-11-01-preview", + "extensionTypeName": "extensionType1", + "location": "westus2", + "subscriptionId": "subId1" + }, + "responses": { + "200": { + "description": "Details of the extension type", + "body": { + "name": "bbbb", + "type": "cccc", + "id": "aaaa", + "properties": { + "description": "My extension type!", + "isManagedIdentityRequired": true, + "isSystemExtension": false, + "planInfo": { + "offerId": "myOfferId", + "planId": "myPlanId", + "publisherId": "myPublisherId" + }, + "publisher": "Microsoft", + "supportedClusterTypes": [ + "connectedClusters" + ], + "supportedScopes": { + "clusterScopeSettings": { + "name": "bbbbbbbbbbbbb", + "type": "ccccccccccccccccccccccccc", + "id": "aaaaaaaaaaaaaaaaaa", + "properties": { + "allowMultipleInstances": true, + "defaultReleaseNamespace": "kube-system" + } + }, + "defaultScope": "cluster" + } + } + }, + "headers": {} + } + }, + "operationId": "ExtensionTypes_LocationGet", + "title": "Get Extension Type" +} diff --git a/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/extensionTypes/examples/2024-11-01-preview/GetExtensionTypeVersion.json b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/extensionTypes/examples/2024-11-01-preview/GetExtensionTypeVersion.json new file mode 100644 index 000000000000..bb62bbf8430c --- /dev/null +++ b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/extensionTypes/examples/2024-11-01-preview/GetExtensionTypeVersion.json @@ -0,0 +1,75 @@ +{ + "parameters": { + "api-version": "2024-11-01-preview", + "clusterName": "my-cluster", + "clusterResourceName": "connectedClusters", + "clusterRp": "Microsoft.Kubernetes", + "extensionTypeName": "my-extension-type", + "resourceGroupName": "rg1", + "subscriptionId": "subId1", + "versionNumber": "v1.3.2" + }, + "responses": { + "200": { + "description": "Versions for the Extension Type", + "body": { + "name": "bbbb", + "type": "cccc", + "id": "aaaa", + "properties": { + "supportedClusterTypes": [ + "connectedCluster" + ], + "unsupportedKubernetesVersions": { + "appliances": [ + { + "distributions": [ + "AKS" + ], + "unsupportedVersions": [ + "1.18..1.21" + ] + } + ], + "connectedCluster": [ + { + "distributions": [ + "AKS" + ], + "unsupportedVersions": [] + }, + { + "distributions": [ + "GKE" + ], + "unsupportedVersions": [ + ">1.22" + ] + } + ], + "managedCluster": [ + { + "distributions": [ + "AKS" + ], + "unsupportedVersions": [] + } + ], + "provisionedCluster": [ + { + "distributions": [ + "AKS" + ], + "unsupportedVersions": [] + } + ] + }, + "version": "1.1.0" + } + }, + "headers": {} + } + }, + "operationId": "ExtensionTypes_ClusterGetVersion", + "title": "List Extension Type Versions" +} diff --git a/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/extensionTypes/examples/2024-11-01-preview/GetExtensionTypeVersionByLocation.json b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/extensionTypes/examples/2024-11-01-preview/GetExtensionTypeVersionByLocation.json new file mode 100644 index 000000000000..4bccd0c605e8 --- /dev/null +++ b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/extensionTypes/examples/2024-11-01-preview/GetExtensionTypeVersionByLocation.json @@ -0,0 +1,72 @@ +{ + "parameters": { + "api-version": "2024-11-01-preview", + "extensionTypeName": "extensionType1", + "location": "westus", + "subscriptionId": "subId1", + "versionNumber": "1.20.0" + }, + "responses": { + "200": { + "description": "Versions for the Extension Type", + "body": { + "name": "bbbb", + "type": "cccc", + "id": "aaaa", + "properties": { + "supportedClusterTypes": [ + "connectedCluster" + ], + "unsupportedKubernetesVersions": { + "appliances": [ + { + "distributions": [ + "AKS" + ], + "unsupportedVersions": [ + "1.18..1.21" + ] + } + ], + "connectedCluster": [ + { + "distributions": [ + "AKS" + ], + "unsupportedVersions": [] + }, + { + "distributions": [ + "GKE" + ], + "unsupportedVersions": [ + ">1.22" + ] + } + ], + "managedCluster": [ + { + "distributions": [ + "AKS" + ], + "unsupportedVersions": [] + } + ], + "provisionedCluster": [ + { + "distributions": [ + "AKS" + ], + "unsupportedVersions": [] + } + ] + }, + "version": "1.1.0" + } + }, + "headers": {} + } + }, + "operationId": "ExtensionTypes_GetVersion", + "title": "List Extension Type Versions" +} diff --git a/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/extensionTypes/examples/2024-11-01-preview/ListExtensionTypeVersions.json b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/extensionTypes/examples/2024-11-01-preview/ListExtensionTypeVersions.json new file mode 100644 index 000000000000..ced006f12409 --- /dev/null +++ b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/extensionTypes/examples/2024-11-01-preview/ListExtensionTypeVersions.json @@ -0,0 +1,137 @@ +{ + "parameters": { + "api-version": "2024-11-01-preview", + "clusterName": "my-cluster", + "clusterResourceName": "connectedClusters", + "clusterRp": "Microsoft.Kubernetes", + "extensionTypeName": "my-extension-type", + "majorVersion": "2", + "releaseTrain": "stable", + "resourceGroupName": "rg1", + "showLatest": true, + "subscriptionId": "subId1" + }, + "responses": { + "200": { + "description": "Versions for the Extension Type", + "body": { + "nextLink": null, + "value": [ + { + "name": "bbbb", + "type": "cccc", + "id": "aaaa", + "properties": { + "supportedClusterTypes": [ + "connectedCluster" + ], + "unsupportedKubernetesVersions": { + "appliances": [ + { + "distributions": [ + "AKS" + ], + "unsupportedVersions": [ + "1.18..1.21" + ] + } + ], + "connectedCluster": [ + { + "distributions": [ + "AKS" + ], + "unsupportedVersions": [] + }, + { + "distributions": [ + "GKE" + ], + "unsupportedVersions": [ + ">1.22" + ] + } + ], + "managedCluster": [ + { + "distributions": [ + "AKS" + ], + "unsupportedVersions": [] + } + ], + "provisionedCluster": [ + { + "distributions": [ + "AKS" + ], + "unsupportedVersions": [] + } + ] + }, + "version": "1.1.0" + } + }, + { + "name": "bbbb", + "type": "cccc", + "id": "aaaa", + "properties": { + "supportedClusterTypes": [ + "connectedCluster" + ], + "unsupportedKubernetesVersions": { + "appliances": [ + { + "distributions": [ + "AKS" + ], + "unsupportedVersions": [ + "1.18..1.21" + ] + } + ], + "connectedCluster": [ + { + "distributions": [ + "AKS" + ], + "unsupportedVersions": [] + }, + { + "distributions": [ + "GKE" + ], + "unsupportedVersions": [ + ">1.22" + ] + } + ], + "managedCluster": [ + { + "distributions": [ + "AKS" + ], + "unsupportedVersions": [] + } + ], + "provisionedCluster": [ + { + "distributions": [ + "AKS" + ], + "unsupportedVersions": [] + } + ] + }, + "version": "1.2.0" + } + } + ] + }, + "headers": {} + } + }, + "operationId": "ExtensionTypes_ClusterListVersions", + "title": "List Extension Type Versions" +} diff --git a/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/extensionTypes/examples/2024-11-01-preview/ListExtensionTypeVersionsByLocation.json b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/extensionTypes/examples/2024-11-01-preview/ListExtensionTypeVersionsByLocation.json new file mode 100644 index 000000000000..07e1e551d3a6 --- /dev/null +++ b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/extensionTypes/examples/2024-11-01-preview/ListExtensionTypeVersionsByLocation.json @@ -0,0 +1,135 @@ +{ + "parameters": { + "api-version": "2024-11-01-preview", + "clusterType": "connectedCluster", + "extensionTypeName": "extensionType1", + "location": "westus", + "majorVersion": "2", + "releaseTrain": "stable", + "showLatest": true, + "subscriptionId": "subId1" + }, + "responses": { + "200": { + "description": "Versions for the Extension Type", + "body": { + "nextLink": null, + "value": [ + { + "name": "bbbb", + "type": "cccc", + "id": "aaaa", + "properties": { + "supportedClusterTypes": [ + "connectedCluster" + ], + "unsupportedKubernetesVersions": { + "appliances": [ + { + "distributions": [ + "AKS" + ], + "unsupportedVersions": [ + "1.18..1.21" + ] + } + ], + "connectedCluster": [ + { + "distributions": [ + "AKS" + ], + "unsupportedVersions": [] + }, + { + "distributions": [ + "GKE" + ], + "unsupportedVersions": [ + ">1.22" + ] + } + ], + "managedCluster": [ + { + "distributions": [ + "AKS" + ], + "unsupportedVersions": [] + } + ], + "provisionedCluster": [ + { + "distributions": [ + "AKS" + ], + "unsupportedVersions": [] + } + ] + }, + "version": "1.1.0" + } + }, + { + "name": "bbbb", + "type": "cccc", + "id": "aaaa", + "properties": { + "supportedClusterTypes": [ + "connectedCluster" + ], + "unsupportedKubernetesVersions": { + "appliances": [ + { + "distributions": [ + "AKS" + ], + "unsupportedVersions": [ + "1.18..1.21" + ] + } + ], + "connectedCluster": [ + { + "distributions": [ + "AKS" + ], + "unsupportedVersions": [] + }, + { + "distributions": [ + "GKE" + ], + "unsupportedVersions": [ + ">1.22" + ] + } + ], + "managedCluster": [ + { + "distributions": [ + "AKS" + ], + "unsupportedVersions": [] + } + ], + "provisionedCluster": [ + { + "distributions": [ + "AKS" + ], + "unsupportedVersions": [] + } + ] + }, + "version": "1.2.0" + } + } + ] + }, + "headers": {} + } + }, + "operationId": "ExtensionTypes_ListVersions", + "title": "List Extension Type Versions" +} diff --git a/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/extensionTypes/examples/2024-11-01-preview/ListExtensionTypes.json b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/extensionTypes/examples/2024-11-01-preview/ListExtensionTypes.json new file mode 100644 index 000000000000..17c88c2a045a --- /dev/null +++ b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/extensionTypes/examples/2024-11-01-preview/ListExtensionTypes.json @@ -0,0 +1,58 @@ +{ + "parameters": { + "api-version": "2024-11-01-preview", + "clusterName": "my-cluster", + "clusterResourceName": "connectedClusters", + "clusterRp": "Microsoft.Kubernetes", + "offerId": "myOfferId", + "planId": "myPlanId", + "publisherId": "myPublisherId", + "releaseTrain": "stable", + "resourceGroupName": "rg1", + "subscriptionId": "subId1" + }, + "responses": { + "200": { + "description": "Details of the extension types registered for the given region", + "body": { + "nextLink": null, + "value": [ + { + "name": "bbbb", + "type": "cccc", + "id": "aaaa", + "properties": { + "description": "My extension type!", + "isManagedIdentityRequired": true, + "isSystemExtension": false, + "planInfo": { + "offerId": "myOfferId", + "planId": "myPlanId", + "publisherId": "myPublisherId" + }, + "publisher": "Microsoft", + "supportedClusterTypes": [ + "connectedClusters" + ], + "supportedScopes": { + "clusterScopeSettings": { + "name": "bbbbbbbbbbbbb", + "type": "ccccccccccccccccccccccccc", + "id": "aaaaaaaaaaaaaaaaaa", + "properties": { + "allowMultipleInstances": true, + "defaultReleaseNamespace": "kube-system" + } + }, + "defaultScope": "cluster" + } + } + } + ] + }, + "headers": {} + } + }, + "operationId": "ExtensionTypes_List", + "title": "Get Extension Types" +} diff --git a/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/extensionTypes/examples/2024-11-01-preview/ListExtensionTypesByLocation.json b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/extensionTypes/examples/2024-11-01-preview/ListExtensionTypesByLocation.json new file mode 100644 index 000000000000..2aad9192e445 --- /dev/null +++ b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/extensionTypes/examples/2024-11-01-preview/ListExtensionTypesByLocation.json @@ -0,0 +1,56 @@ +{ + "parameters": { + "api-version": "2024-11-01-preview", + "clusterType": "connectedCluster", + "location": "westus2", + "offerId": "myOfferId", + "planId": "myPlanId", + "publisherId": "myPublisherId", + "releaseTrain": "stable", + "subscriptionId": "subId1" + }, + "responses": { + "200": { + "description": "Details of the extension types registered for the given region", + "body": { + "nextLink": null, + "value": [ + { + "name": "bbbb", + "type": "cccc", + "id": "aaaa", + "properties": { + "description": "My extension type!", + "isManagedIdentityRequired": true, + "isSystemExtension": false, + "planInfo": { + "offerId": "myOfferId", + "planId": "myPlanId", + "publisherId": "myPublisherId" + }, + "publisher": "Microsoft", + "supportedClusterTypes": [ + "connectedClusters" + ], + "supportedScopes": { + "clusterScopeSettings": { + "name": "bbbbbbbbbbbbb", + "type": "ccccccccccccccccccccccccc", + "id": "aaaaaaaaaaaaaaaaaa", + "properties": { + "allowMultipleInstances": true, + "defaultReleaseNamespace": "kube-system" + } + }, + "defaultScope": "cluster" + } + } + } + ] + }, + "headers": {} + } + }, + "operationId": "ExtensionTypes_LocationList", + "title": "List Extension Types" +} diff --git a/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/extensionTypes/main.tsp b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/extensionTypes/main.tsp new file mode 100644 index 000000000000..85024b1aba3a --- /dev/null +++ b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/extensionTypes/main.tsp @@ -0,0 +1,44 @@ +/** + * PLEASE DO NOT REMOVE - USED FOR CONVERTER METRICS + * Generated by package: @autorest/openapi-to-typespec + * Parameters used: + * isFullCompatible: true + * guessResourceKey: false + * Version: 0.11.12 + * Date: 2026-01-07T08:37:34.332Z + */ +import "@typespec/rest"; +import "@typespec/versioning"; +import "@azure-tools/typespec-azure-core"; +import "@azure-tools/typespec-azure-resource-manager"; +import "./models.tsp"; +import "./back-compatible.tsp"; +import "./ExtensionType.tsp"; +import "./ExtensionTypeVersionForReleaseTrain.tsp"; + +using TypeSpec.Rest; +using TypeSpec.Http; +using Azure.ResourceManager.Foundations; +using Azure.Core; +using Azure.ResourceManager; +using TypeSpec.Versioning; +/** + * Use these APIs to view extension type resources through ARM, for Kubernetes Clusters. + */ +#suppress "@azure-tools/typespec-azure-resource-manager/missing-operations-endpoint" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" +@armProviderNamespace +@service(#{ title: "ExtensionTypesClient" }) +@versioned(Versions) +// FIXME: Common type version v2 is not supported for now. Set to v3. +@armCommonTypesVersion(Azure.ResourceManager.CommonTypes.Versions.v3) +namespace Microsoft.KubernetesConfiguration; + +/** + * The available API versions. + */ +enum Versions { + /** + * The 2024-11-01-preview API version. + */ + v2024_11_01_preview: "2024-11-01-preview", +} diff --git a/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/extensionTypes/models.tsp b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/extensionTypes/models.tsp new file mode 100644 index 000000000000..c9fcb4c2487e --- /dev/null +++ b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/extensionTypes/models.tsp @@ -0,0 +1,178 @@ +import "@typespec/rest"; +import "@typespec/http"; +import "@azure-tools/typespec-azure-core"; +import "@azure-tools/typespec-azure-resource-manager"; + +using TypeSpec.Rest; +using TypeSpec.Http; +using Azure.ResourceManager; +using Azure.ResourceManager.Foundations; + +namespace Microsoft.KubernetesConfiguration; + +/** + * List Extension Types. It contains a list of ExtensionType objects and a URL link to get the next set of results. + */ +model ExtensionTypesList is Azure.Core.Page; + +#suppress "@azure-tools/typespec-azure-resource-manager/arm-resource-provisioning-state" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" +#suppress "@azure-tools/typespec-azure-core/documentation-required" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" +model ExtensionTypeProperties { + /** + * Is this Extension Type a system extension. + */ + isSystemExtension?: boolean; + + /** + * Should an identity for this cluster resource be created + */ + isManagedIdentityRequired?: boolean; + + /** + * Description of the extension type + */ + description?: string; + + /** + * Name of the publisher for the Extension Type + */ + publisher?: string; + + /** + * Plan information only for the Marketplace Extension Type. + */ + planInfo?: ExtensionTypePropertiesPlanInfo; + + /** + * Cluster Types supported for this Extension Type. + */ + supportedClusterTypes?: string[]; + + /** + * Supported Kubernetes Scopes for this Extension Type. + */ + supportedScopes?: ExtensionTypePropertiesSupportedScopes; +} + +/** + * Plan information only for the Marketplace Extension Type. + */ +model ExtensionTypePropertiesPlanInfo { + /** + * Publisher ID of the Marketplace Extension Type. + */ + publisherId?: string; + + /** + * Plan ID of the Marketplace Extension Type. + */ + planId?: string; + + /** + * Offer or Product ID of the Marketplace Extension Type. + */ + offerId?: string; +} + +/** + * Supported Kubernetes Scopes for this Extension Type. + */ +model ExtensionTypePropertiesSupportedScopes { + /** + * The default scope of the extension type. This scope will be used if the user does not provide a scope while creating an extension. + */ + defaultScope?: string; + + /** + * Extension scope settings + */ + clusterScopeSettings?: ClusterScopeSettings; +} + +/** + * Extension scope settings + */ +#suppress "@azure-tools/typespec-azure-core/composition-over-inheritance" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" +model ClusterScopeSettings + extends Azure.ResourceManager.CommonTypes.ProxyResource { + /** + * Extension scope settings + */ + properties?: ClusterScopeSettingsProperties; +} + +/** + * Extension scope settings + */ +model ClusterScopeSettingsProperties { + /** + * Describes if multiple instances of the extension are allowed + */ + allowMultipleInstances?: boolean; + + /** + * Default extension release namespace + */ + defaultReleaseNamespace?: string; +} + +/** + * List Extension Type Versions. It contains a list of ExtensionTypeVersionForReleaseTrain objects. + */ +model ExtensionTypeVersionsList + is Azure.Core.Page; + +#suppress "@azure-tools/typespec-azure-resource-manager/arm-resource-provisioning-state" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" +#suppress "@azure-tools/typespec-azure-core/documentation-required" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" +model ExtensionTypeVersionForReleaseTrainProperties { + /** + * The version number for the extension type + */ + version?: string; + + /** + * The list of supported Kubernetes cluster versions for this extension type + */ + unsupportedKubernetesVersions?: ExtensionTypeVersionForReleaseTrainPropertiesUnsupportedKubernetesVersions; + + /** + * A list of supported cluster types for this version of the Extension Type + */ + supportedClusterTypes?: string[]; +} + +/** + * The list of supported Kubernetes cluster versions for this extension type + */ +model ExtensionTypeVersionForReleaseTrainPropertiesUnsupportedKubernetesVersions { + #suppress "@azure-tools/typespec-azure-core/documentation-required" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + @identifiers(#[]) + connectedCluster?: ExtensionTypeVersionUnsupportedKubernetesMatrixItem[]; + + #suppress "@azure-tools/typespec-azure-core/documentation-required" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + @identifiers(#[]) + appliances?: ExtensionTypeVersionUnsupportedKubernetesMatrixItem[]; + + #suppress "@azure-tools/typespec-azure-core/documentation-required" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + @identifiers(#[]) + provisionedCluster?: ExtensionTypeVersionUnsupportedKubernetesMatrixItem[]; + + #suppress "@azure-tools/typespec-azure-core/documentation-required" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + @identifiers(#[]) + managedCluster?: ExtensionTypeVersionUnsupportedKubernetesMatrixItem[]; +} + +/** + * The list of Kubernetes Distribution and Versions that are not supported by this version of this Extension Type + */ +model ExtensionTypeVersionUnsupportedKubernetesMatrixItem { + /** + * The list of Kubernetes Cluster Distribution Names not supported + */ + distributions?: string[]; + + /** + * The list of Kubernetes Versions not supported by the list of Kubernetes Cluster Distribution names in this object + */ + unsupportedVersions?: string[]; +} diff --git a/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/extensionTypes/preview/2024-11-01-preview/examples/GetExtensionType.json b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/extensionTypes/preview/2024-11-01-preview/examples/GetExtensionType.json index bf613c7218f0..7b1fc0b5d961 100644 --- a/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/extensionTypes/preview/2024-11-01-preview/examples/GetExtensionType.json +++ b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/extensionTypes/preview/2024-11-01-preview/examples/GetExtensionType.json @@ -1,48 +1,50 @@ { "parameters": { - "subscriptionId": "subId1", - "resourceGroupName": "rg1", - "clusterRp": "Microsoft.Kubernetes", - "clusterResourceName": "connectedClusters", + "api-version": "2024-11-01-preview", "clusterName": "my-cluster", + "clusterResourceName": "connectedClusters", + "clusterRp": "Microsoft.Kubernetes", "extensionTypeName": "my-extension-type", - "api-version": "2024-11-01-preview" + "resourceGroupName": "rg1", + "subscriptionId": "subId1" }, "responses": { "200": { - "headers": {}, "description": "Details of the extension type", "body": { - "id": "aaaa", "name": "bbbb", "type": "cccc", + "id": "aaaa", "properties": { - "isSystemExtension": false, - "isManagedIdentityRequired": true, "description": "My extension type!", - "publisher": "Microsoft", + "isManagedIdentityRequired": true, + "isSystemExtension": false, "planInfo": { - "publisherId": "111111", + "offerId": "3333333", "planId": "222222", - "offerId": "3333333" + "publisherId": "111111" }, + "publisher": "Microsoft", "supportedClusterTypes": [ "connectedClusters" ], "supportedScopes": { - "defaultScope": "cluster", "clusterScopeSettings": { + "name": "bbbbbbbbbbbbb", + "type": "ccccccccccccccccccccccccc", + "id": "aaaaaaaaaaaaaaaaaa", "properties": { "allowMultipleInstances": true, "defaultReleaseNamespace": "kube-system" - }, - "id": "aaaaaaaaaaaaaaaaaa", - "name": "bbbbbbbbbbbbb", - "type": "ccccccccccccccccccccccccc" - } + } + }, + "defaultScope": "cluster" } } - } + }, + "headers": {} } - } + }, + "operationId": "ExtensionTypes_Get", + "title": "Get Extension Types" } diff --git a/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/extensionTypes/preview/2024-11-01-preview/examples/GetExtensionTypeByLocation.json b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/extensionTypes/preview/2024-11-01-preview/examples/GetExtensionTypeByLocation.json index 822f8ecba63c..05b24a833806 100644 --- a/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/extensionTypes/preview/2024-11-01-preview/examples/GetExtensionTypeByLocation.json +++ b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/extensionTypes/preview/2024-11-01-preview/examples/GetExtensionTypeByLocation.json @@ -1,45 +1,47 @@ { "parameters": { - "subscriptionId": "subId1", - "location": "westus2", + "api-version": "2024-11-01-preview", "extensionTypeName": "extensionType1", - "api-version": "2024-11-01-preview" + "location": "westus2", + "subscriptionId": "subId1" }, "responses": { "200": { - "headers": {}, "description": "Details of the extension type", "body": { - "id": "aaaa", "name": "bbbb", "type": "cccc", + "id": "aaaa", "properties": { - "isSystemExtension": false, - "isManagedIdentityRequired": true, "description": "My extension type!", - "publisher": "Microsoft", + "isManagedIdentityRequired": true, + "isSystemExtension": false, "planInfo": { - "publisherId": "myPublisherId", + "offerId": "myOfferId", "planId": "myPlanId", - "offerId": "myOfferId" + "publisherId": "myPublisherId" }, + "publisher": "Microsoft", "supportedClusterTypes": [ "connectedClusters" ], "supportedScopes": { - "defaultScope": "cluster", "clusterScopeSettings": { + "name": "bbbbbbbbbbbbb", + "type": "ccccccccccccccccccccccccc", + "id": "aaaaaaaaaaaaaaaaaa", "properties": { "allowMultipleInstances": true, "defaultReleaseNamespace": "kube-system" - }, - "id": "aaaaaaaaaaaaaaaaaa", - "name": "bbbbbbbbbbbbb", - "type": "ccccccccccccccccccccccccc" - } + } + }, + "defaultScope": "cluster" } } - } + }, + "headers": {} } - } + }, + "operationId": "ExtensionTypes_LocationGet", + "title": "Get Extension Type" } diff --git a/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/extensionTypes/preview/2024-11-01-preview/examples/GetExtensionTypeVersion.json b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/extensionTypes/preview/2024-11-01-preview/examples/GetExtensionTypeVersion.json index b6db1c9ccc12..bb62bbf8430c 100644 --- a/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/extensionTypes/preview/2024-11-01-preview/examples/GetExtensionTypeVersion.json +++ b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/extensionTypes/preview/2024-11-01-preview/examples/GetExtensionTypeVersion.json @@ -1,52 +1,53 @@ { "parameters": { - "subscriptionId": "subId1", - "resourceGroupName": "rg1", - "clusterRp": "Microsoft.Kubernetes", - "clusterResourceName": "connectedClusters", + "api-version": "2024-11-01-preview", "clusterName": "my-cluster", + "clusterResourceName": "connectedClusters", + "clusterRp": "Microsoft.Kubernetes", "extensionTypeName": "my-extension-type", - "versionNumber": "v1.3.2", - "api-version": "2024-11-01-preview" + "resourceGroupName": "rg1", + "subscriptionId": "subId1", + "versionNumber": "v1.3.2" }, "responses": { "200": { - "headers": {}, "description": "Versions for the Extension Type", "body": { - "id": "aaaa", "name": "bbbb", "type": "cccc", + "id": "aaaa", "properties": { - "version": "1.1.0", + "supportedClusterTypes": [ + "connectedCluster" + ], "unsupportedKubernetesVersions": { - "connectedCluster": [ + "appliances": [ { "distributions": [ "AKS" ], - "unsupportedVersions": [] - }, - { - "distributions": [ - "GKE" - ], "unsupportedVersions": [ - ">1.22" + "1.18..1.21" ] } ], - "appliances": [ + "connectedCluster": [ { "distributions": [ "AKS" ], + "unsupportedVersions": [] + }, + { + "distributions": [ + "GKE" + ], "unsupportedVersions": [ - "1.18..1.21" + ">1.22" ] } ], - "provisionedCluster": [ + "managedCluster": [ { "distributions": [ "AKS" @@ -54,7 +55,7 @@ "unsupportedVersions": [] } ], - "managedCluster": [ + "provisionedCluster": [ { "distributions": [ "AKS" @@ -63,11 +64,12 @@ } ] }, - "supportedClusterTypes": [ - "connectedCluster" - ] + "version": "1.1.0" } - } + }, + "headers": {} } - } + }, + "operationId": "ExtensionTypes_ClusterGetVersion", + "title": "List Extension Type Versions" } diff --git a/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/extensionTypes/preview/2024-11-01-preview/examples/GetExtensionTypeVersionByLocation.json b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/extensionTypes/preview/2024-11-01-preview/examples/GetExtensionTypeVersionByLocation.json index 0f4f717e0a58..4bccd0c605e8 100644 --- a/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/extensionTypes/preview/2024-11-01-preview/examples/GetExtensionTypeVersionByLocation.json +++ b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/extensionTypes/preview/2024-11-01-preview/examples/GetExtensionTypeVersionByLocation.json @@ -1,49 +1,50 @@ { "parameters": { - "subscriptionId": "subId1", - "location": "westus", + "api-version": "2024-11-01-preview", "extensionTypeName": "extensionType1", - "versionNumber": "1.20.0", - "api-version": "2024-11-01-preview" + "location": "westus", + "subscriptionId": "subId1", + "versionNumber": "1.20.0" }, "responses": { "200": { - "headers": {}, "description": "Versions for the Extension Type", "body": { - "id": "aaaa", "name": "bbbb", "type": "cccc", + "id": "aaaa", "properties": { - "version": "1.1.0", + "supportedClusterTypes": [ + "connectedCluster" + ], "unsupportedKubernetesVersions": { - "connectedCluster": [ + "appliances": [ { "distributions": [ "AKS" ], - "unsupportedVersions": [] - }, - { - "distributions": [ - "GKE" - ], "unsupportedVersions": [ - ">1.22" + "1.18..1.21" ] } ], - "appliances": [ + "connectedCluster": [ { "distributions": [ "AKS" ], + "unsupportedVersions": [] + }, + { + "distributions": [ + "GKE" + ], "unsupportedVersions": [ - "1.18..1.21" + ">1.22" ] } ], - "provisionedCluster": [ + "managedCluster": [ { "distributions": [ "AKS" @@ -51,7 +52,7 @@ "unsupportedVersions": [] } ], - "managedCluster": [ + "provisionedCluster": [ { "distributions": [ "AKS" @@ -60,11 +61,12 @@ } ] }, - "supportedClusterTypes": [ - "connectedCluster" - ] + "version": "1.1.0" } - } + }, + "headers": {} } - } + }, + "operationId": "ExtensionTypes_GetVersion", + "title": "List Extension Type Versions" } diff --git a/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/extensionTypes/preview/2024-11-01-preview/examples/ListExtensionTypeVersions.json b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/extensionTypes/preview/2024-11-01-preview/examples/ListExtensionTypeVersions.json index 8ae66a287881..ced006f12409 100644 --- a/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/extensionTypes/preview/2024-11-01-preview/examples/ListExtensionTypeVersions.json +++ b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/extensionTypes/preview/2024-11-01-preview/examples/ListExtensionTypeVersions.json @@ -1,56 +1,58 @@ { "parameters": { - "subscriptionId": "subId1", - "resourceGroupName": "rg1", - "clusterRp": "Microsoft.Kubernetes", - "clusterResourceName": "connectedClusters", + "api-version": "2024-11-01-preview", "clusterName": "my-cluster", + "clusterResourceName": "connectedClusters", + "clusterRp": "Microsoft.Kubernetes", "extensionTypeName": "my-extension-type", - "releaseTrain": "stable", "majorVersion": "2", + "releaseTrain": "stable", + "resourceGroupName": "rg1", "showLatest": true, - "api-version": "2024-11-01-preview" + "subscriptionId": "subId1" }, "responses": { "200": { - "headers": {}, "description": "Versions for the Extension Type", "body": { + "nextLink": null, "value": [ { - "id": "aaaa", "name": "bbbb", "type": "cccc", + "id": "aaaa", "properties": { - "version": "1.1.0", + "supportedClusterTypes": [ + "connectedCluster" + ], "unsupportedKubernetesVersions": { - "connectedCluster": [ + "appliances": [ { "distributions": [ "AKS" ], - "unsupportedVersions": [] - }, - { - "distributions": [ - "GKE" - ], "unsupportedVersions": [ - ">1.22" + "1.18..1.21" ] } ], - "appliances": [ + "connectedCluster": [ { "distributions": [ "AKS" ], + "unsupportedVersions": [] + }, + { + "distributions": [ + "GKE" + ], "unsupportedVersions": [ - "1.18..1.21" + ">1.22" ] } ], - "provisionedCluster": [ + "managedCluster": [ { "distributions": [ "AKS" @@ -58,7 +60,7 @@ "unsupportedVersions": [] } ], - "managedCluster": [ + "provisionedCluster": [ { "distributions": [ "AKS" @@ -67,45 +69,45 @@ } ] }, - "supportedClusterTypes": [ - "connectedCluster" - ] + "version": "1.1.0" } }, { - "id": "aaaa", "name": "bbbb", "type": "cccc", + "id": "aaaa", "properties": { - "version": "1.2.0", + "supportedClusterTypes": [ + "connectedCluster" + ], "unsupportedKubernetesVersions": { - "connectedCluster": [ + "appliances": [ { "distributions": [ "AKS" ], - "unsupportedVersions": [] - }, - { - "distributions": [ - "GKE" - ], "unsupportedVersions": [ - ">1.22" + "1.18..1.21" ] } ], - "appliances": [ + "connectedCluster": [ { "distributions": [ "AKS" ], + "unsupportedVersions": [] + }, + { + "distributions": [ + "GKE" + ], "unsupportedVersions": [ - "1.18..1.21" + ">1.22" ] } ], - "provisionedCluster": [ + "managedCluster": [ { "distributions": [ "AKS" @@ -113,7 +115,7 @@ "unsupportedVersions": [] } ], - "managedCluster": [ + "provisionedCluster": [ { "distributions": [ "AKS" @@ -122,14 +124,14 @@ } ] }, - "supportedClusterTypes": [ - "connectedCluster" - ] + "version": "1.2.0" } } - ], - "nextLink": null - } + ] + }, + "headers": {} } - } + }, + "operationId": "ExtensionTypes_ClusterListVersions", + "title": "List Extension Type Versions" } diff --git a/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/extensionTypes/preview/2024-11-01-preview/examples/ListExtensionTypeVersionsByLocation.json b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/extensionTypes/preview/2024-11-01-preview/examples/ListExtensionTypeVersionsByLocation.json index 2ac452355c87..07e1e551d3a6 100644 --- a/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/extensionTypes/preview/2024-11-01-preview/examples/ListExtensionTypeVersionsByLocation.json +++ b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/extensionTypes/preview/2024-11-01-preview/examples/ListExtensionTypeVersionsByLocation.json @@ -1,54 +1,56 @@ { "parameters": { - "subscriptionId": "subId1", - "location": "westus", - "extensionTypeName": "extensionType1", - "releaseTrain": "stable", + "api-version": "2024-11-01-preview", "clusterType": "connectedCluster", + "extensionTypeName": "extensionType1", + "location": "westus", "majorVersion": "2", + "releaseTrain": "stable", "showLatest": true, - "api-version": "2024-11-01-preview" + "subscriptionId": "subId1" }, "responses": { "200": { - "headers": {}, "description": "Versions for the Extension Type", "body": { + "nextLink": null, "value": [ { - "id": "aaaa", "name": "bbbb", "type": "cccc", + "id": "aaaa", "properties": { - "version": "1.1.0", + "supportedClusterTypes": [ + "connectedCluster" + ], "unsupportedKubernetesVersions": { - "connectedCluster": [ + "appliances": [ { "distributions": [ "AKS" ], - "unsupportedVersions": [] - }, - { - "distributions": [ - "GKE" - ], "unsupportedVersions": [ - ">1.22" + "1.18..1.21" ] } ], - "appliances": [ + "connectedCluster": [ { "distributions": [ "AKS" ], + "unsupportedVersions": [] + }, + { + "distributions": [ + "GKE" + ], "unsupportedVersions": [ - "1.18..1.21" + ">1.22" ] } ], - "provisionedCluster": [ + "managedCluster": [ { "distributions": [ "AKS" @@ -56,7 +58,7 @@ "unsupportedVersions": [] } ], - "managedCluster": [ + "provisionedCluster": [ { "distributions": [ "AKS" @@ -65,45 +67,45 @@ } ] }, - "supportedClusterTypes": [ - "connectedCluster" - ] + "version": "1.1.0" } }, { - "id": "aaaa", "name": "bbbb", "type": "cccc", + "id": "aaaa", "properties": { - "version": "1.2.0", + "supportedClusterTypes": [ + "connectedCluster" + ], "unsupportedKubernetesVersions": { - "connectedCluster": [ + "appliances": [ { "distributions": [ "AKS" ], - "unsupportedVersions": [] - }, - { - "distributions": [ - "GKE" - ], "unsupportedVersions": [ - ">1.22" + "1.18..1.21" ] } ], - "appliances": [ + "connectedCluster": [ { "distributions": [ "AKS" ], + "unsupportedVersions": [] + }, + { + "distributions": [ + "GKE" + ], "unsupportedVersions": [ - "1.18..1.21" + ">1.22" ] } ], - "provisionedCluster": [ + "managedCluster": [ { "distributions": [ "AKS" @@ -111,7 +113,7 @@ "unsupportedVersions": [] } ], - "managedCluster": [ + "provisionedCluster": [ { "distributions": [ "AKS" @@ -120,14 +122,14 @@ } ] }, - "supportedClusterTypes": [ - "connectedCluster" - ] + "version": "1.2.0" } } - ], - "nextLink": null - } + ] + }, + "headers": {} } - } + }, + "operationId": "ExtensionTypes_ListVersions", + "title": "List Extension Type Versions" } diff --git a/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/extensionTypes/preview/2024-11-01-preview/examples/ListExtensionTypes.json b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/extensionTypes/preview/2024-11-01-preview/examples/ListExtensionTypes.json index 16defef79b84..17c88c2a045a 100644 --- a/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/extensionTypes/preview/2024-11-01-preview/examples/ListExtensionTypes.json +++ b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/extensionTypes/preview/2024-11-01-preview/examples/ListExtensionTypes.json @@ -1,56 +1,58 @@ { "parameters": { - "subscriptionId": "subId1", - "resourceGroupName": "rg1", - "clusterRp": "Microsoft.Kubernetes", - "clusterResourceName": "connectedClusters", + "api-version": "2024-11-01-preview", "clusterName": "my-cluster", - "publisherId": "myPublisherId", + "clusterResourceName": "connectedClusters", + "clusterRp": "Microsoft.Kubernetes", "offerId": "myOfferId", "planId": "myPlanId", + "publisherId": "myPublisherId", "releaseTrain": "stable", - "api-version": "2024-11-01-preview" + "resourceGroupName": "rg1", + "subscriptionId": "subId1" }, "responses": { "200": { - "headers": {}, "description": "Details of the extension types registered for the given region", "body": { + "nextLink": null, "value": [ { - "id": "aaaa", "name": "bbbb", "type": "cccc", + "id": "aaaa", "properties": { - "isSystemExtension": false, - "isManagedIdentityRequired": true, "description": "My extension type!", - "publisher": "Microsoft", + "isManagedIdentityRequired": true, + "isSystemExtension": false, "planInfo": { - "publisherId": "myPublisherId", + "offerId": "myOfferId", "planId": "myPlanId", - "offerId": "myOfferId" + "publisherId": "myPublisherId" }, + "publisher": "Microsoft", "supportedClusterTypes": [ "connectedClusters" ], "supportedScopes": { - "defaultScope": "cluster", "clusterScopeSettings": { + "name": "bbbbbbbbbbbbb", + "type": "ccccccccccccccccccccccccc", + "id": "aaaaaaaaaaaaaaaaaa", "properties": { "allowMultipleInstances": true, "defaultReleaseNamespace": "kube-system" - }, - "id": "aaaaaaaaaaaaaaaaaa", - "name": "bbbbbbbbbbbbb", - "type": "ccccccccccccccccccccccccc" - } + } + }, + "defaultScope": "cluster" } } } - ], - "nextLink": null - } + ] + }, + "headers": {} } - } + }, + "operationId": "ExtensionTypes_List", + "title": "Get Extension Types" } diff --git a/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/extensionTypes/preview/2024-11-01-preview/examples/ListExtensionTypesByLocation.json b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/extensionTypes/preview/2024-11-01-preview/examples/ListExtensionTypesByLocation.json index 741c01dbc81f..2aad9192e445 100644 --- a/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/extensionTypes/preview/2024-11-01-preview/examples/ListExtensionTypesByLocation.json +++ b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/extensionTypes/preview/2024-11-01-preview/examples/ListExtensionTypesByLocation.json @@ -1,54 +1,56 @@ { "parameters": { - "subscriptionId": "subId1", + "api-version": "2024-11-01-preview", + "clusterType": "connectedCluster", "location": "westus2", - "publisherId": "myPublisherId", "offerId": "myOfferId", "planId": "myPlanId", - "clusterType": "connectedCluster", + "publisherId": "myPublisherId", "releaseTrain": "stable", - "api-version": "2024-11-01-preview" + "subscriptionId": "subId1" }, "responses": { "200": { - "headers": {}, "description": "Details of the extension types registered for the given region", "body": { + "nextLink": null, "value": [ { - "id": "aaaa", "name": "bbbb", "type": "cccc", + "id": "aaaa", "properties": { - "isSystemExtension": false, - "isManagedIdentityRequired": true, "description": "My extension type!", - "publisher": "Microsoft", + "isManagedIdentityRequired": true, + "isSystemExtension": false, "planInfo": { - "publisherId": "myPublisherId", + "offerId": "myOfferId", "planId": "myPlanId", - "offerId": "myOfferId" + "publisherId": "myPublisherId" }, + "publisher": "Microsoft", "supportedClusterTypes": [ "connectedClusters" ], "supportedScopes": { - "defaultScope": "cluster", "clusterScopeSettings": { + "name": "bbbbbbbbbbbbb", + "type": "ccccccccccccccccccccccccc", + "id": "aaaaaaaaaaaaaaaaaa", "properties": { "allowMultipleInstances": true, "defaultReleaseNamespace": "kube-system" - }, - "id": "aaaaaaaaaaaaaaaaaa", - "name": "bbbbbbbbbbbbb", - "type": "ccccccccccccccccccccccccc" - } + } + }, + "defaultScope": "cluster" } } } - ], - "nextLink": null - } + ] + }, + "headers": {} } - } + }, + "operationId": "ExtensionTypes_LocationList", + "title": "List Extension Types" } diff --git a/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/extensionTypes/preview/2024-11-01-preview/extensionTypes.json b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/extensionTypes/preview/2024-11-01-preview/extensionTypes.json index a0086589ff6a..7c11c35c10a0 100644 --- a/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/extensionTypes/preview/2024-11-01-preview/extensionTypes.json +++ b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/extensionTypes/preview/2024-11-01-preview/extensionTypes.json @@ -1,18 +1,23 @@ { "swagger": "2.0", "info": { - "version": "2024-11-01-preview", "title": "ExtensionTypesClient", - "description": "Use these APIs to view extension type resources through ARM, for Kubernetes Clusters." + "version": "2024-11-01-preview", + "description": "Use these APIs to view extension type resources through ARM, for Kubernetes Clusters.", + "x-typespec-generated": [ + { + "emitter": "@azure-tools/typespec-autorest" + } + ] }, - "host": "management.azure.com", "schemes": [ "https" ], - "consumes": [ + "host": "management.azure.com", + "produces": [ "application/json" ], - "produces": [ + "consumes": [ "application/json" ], "security": [ @@ -25,31 +30,37 @@ "securityDefinitions": { "azure_auth": { "type": "oauth2", - "authorizationUrl": "https://login.microsoftonline.com/common/oauth2/authorize", + "description": "Azure Active Directory OAuth2 Flow.", "flow": "implicit", - "description": "Azure Active Directory OAuth2 Flow", + "authorizationUrl": "https://login.microsoftonline.com/common/oauth2/authorize", "scopes": { "user_impersonation": "impersonate your user account" } } }, + "tags": [ + { + "name": "ExtensionTypes" + }, + { + "name": "ClusterExtensionTypes" + } + ], "paths": { "/subscriptions/{subscriptionId}/providers/Microsoft.KubernetesConfiguration/locations/{location}/extensionTypes": { "get": { + "operationId": "ExtensionTypes_LocationList", "tags": [ "ExtensionTypes", "ClusterExtensionTypes" ], "description": "List all Extension Types for the location.", - "operationId": "ExtensionTypes_LocationList", - "x-ms-examples": { - "List Extension Types": { - "$ref": "./examples/ListExtensionTypesByLocation.json" - } - }, "parameters": [ { - "$ref": "../../../../../../common-types/resource-management/v2/types.json#/parameters/SubscriptionIdParameter" + "$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/LocationParameter" @@ -88,25 +99,27 @@ "description": "Filter results by the cluster type for extension types", "required": false, "type": "string" - }, - { - "$ref": "../../../../../../common-types/resource-management/v2/types.json#/parameters/ApiVersionParameter" } ], "responses": { "200": { - "description": "OK", + "description": "Azure operation completed successfully.", "schema": { "$ref": "#/definitions/ExtensionTypesList" } }, "default": { - "description": "Error response describing why the operation failed.", + "description": "An unexpected error response.", "schema": { - "$ref": "../../../../../../common-types/resource-management/v2/types.json#/definitions/ErrorResponse" + "$ref": "../../../../../../common-types/resource-management/v3/types.json#/definitions/ErrorResponse" } } }, + "x-ms-examples": { + "List Extension Types": { + "$ref": "./examples/ListExtensionTypesByLocation.json" + } + }, "x-ms-pageable": { "nextLinkName": "nextLink" } @@ -114,69 +127,77 @@ }, "/subscriptions/{subscriptionId}/providers/Microsoft.KubernetesConfiguration/locations/{location}/extensionTypes/{extensionTypeName}": { "get": { + "operationId": "ExtensionTypes_LocationGet", "tags": [ "ExtensionTypes", "ClusterExtensionTypes" ], "description": "Get an extension type for the location.", - "operationId": "ExtensionTypes_LocationGet", - "x-ms-examples": { - "Get Extension Type": { - "$ref": "./examples/GetExtensionTypeByLocation.json" - } - }, "parameters": [ { - "$ref": "../../../../../../common-types/resource-management/v2/types.json#/parameters/SubscriptionIdParameter" + "$ref": "../../../../../../common-types/resource-management/v3/types.json#/parameters/ApiVersionParameter" }, { - "$ref": "../../../../../../common-types/resource-management/v3/types.json#/parameters/LocationParameter" + "$ref": "../../../../../../common-types/resource-management/v3/types.json#/parameters/SubscriptionIdParameter" }, { - "$ref": "#/parameters/ExtensionTypeNameParameter" + "$ref": "../../../../../../common-types/resource-management/v3/types.json#/parameters/LocationParameter" }, { - "$ref": "../../../../../../common-types/resource-management/v2/types.json#/parameters/ApiVersionParameter" + "name": "extensionTypeName", + "in": "path", + "description": "Name of the Extension Type.", + "required": true, + "type": "string", + "pattern": "^[a-zA-Z][a-zA-Z0-9-_]*$" } ], "responses": { "200": { - "description": "OK", + "description": "Azure operation completed successfully.", "schema": { "$ref": "#/definitions/ExtensionType" } }, "default": { - "description": "Error response describing why the operation failed.", + "description": "An unexpected error response.", "schema": { - "$ref": "../../../../../../common-types/resource-management/v2/types.json#/definitions/ErrorResponse" + "$ref": "../../../../../../common-types/resource-management/v3/types.json#/definitions/ErrorResponse" } } + }, + "x-ms-examples": { + "Get Extension Type": { + "$ref": "./examples/GetExtensionTypeByLocation.json" + } } } }, "/subscriptions/{subscriptionId}/providers/Microsoft.KubernetesConfiguration/locations/{location}/extensionTypes/{extensionTypeName}/versions": { "get": { + "operationId": "ExtensionTypes_ListVersions", "tags": [ "ExtensionTypes", "ClusterExtensionTypes" ], "description": "List the versions for an extension type and location.", - "operationId": "ExtensionTypes_ListVersions", - "x-ms-examples": { - "List Extension Type Versions": { - "$ref": "./examples/ListExtensionTypeVersionsByLocation.json" - } - }, "parameters": [ { - "$ref": "../../../../../../common-types/resource-management/v2/types.json#/parameters/SubscriptionIdParameter" + "$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/LocationParameter" }, { - "$ref": "#/parameters/ExtensionTypeNameParameter" + "name": "extensionTypeName", + "in": "path", + "description": "Name of the Extension Type.", + "required": true, + "type": "string", + "pattern": "^[a-zA-Z][a-zA-Z0-9-_]*$" }, { "name": "releaseTrain", @@ -205,25 +226,27 @@ "description": "Filter results by only the latest version (based on other query parameters)", "required": false, "type": "boolean" - }, - { - "$ref": "../../../../../../common-types/resource-management/v2/types.json#/parameters/ApiVersionParameter" } ], "responses": { "200": { - "description": "OK", + "description": "Azure operation completed successfully.", "schema": { "$ref": "#/definitions/ExtensionTypeVersionsList" } }, "default": { - "description": "Error response describing why the operation failed.", + "description": "An unexpected error response.", "schema": { - "$ref": "../../../../../../common-types/resource-management/v2/types.json#/definitions/ErrorResponse" + "$ref": "../../../../../../common-types/resource-management/v3/types.json#/definitions/ErrorResponse" } } }, + "x-ms-examples": { + "List Extension Type Versions": { + "$ref": "./examples/ListExtensionTypeVersionsByLocation.json" + } + }, "x-ms-pageable": { "nextLinkName": "nextLink" } @@ -231,78 +254,99 @@ }, "/subscriptions/{subscriptionId}/providers/Microsoft.KubernetesConfiguration/locations/{location}/extensionTypes/{extensionTypeName}/versions/{versionNumber}": { "get": { + "operationId": "ExtensionTypes_GetVersion", "tags": [ "ExtensionTypes", "ClusterExtensionTypes" ], "description": "Get details of a version for an extension type and location", - "operationId": "ExtensionTypes_GetVersion", - "x-ms-examples": { - "List Extension Type Versions": { - "$ref": "./examples/GetExtensionTypeVersionByLocation.json" - } - }, "parameters": [ { - "$ref": "../../../../../../common-types/resource-management/v2/types.json#/parameters/SubscriptionIdParameter" + "$ref": "../../../../../../common-types/resource-management/v3/types.json#/parameters/ApiVersionParameter" }, { - "$ref": "../../../../../../common-types/resource-management/v3/types.json#/parameters/LocationParameter" + "$ref": "../../../../../../common-types/resource-management/v3/types.json#/parameters/SubscriptionIdParameter" }, { - "$ref": "#/parameters/ExtensionTypeNameParameter" + "$ref": "../../../../../../common-types/resource-management/v3/types.json#/parameters/LocationParameter" }, { - "$ref": "#/parameters/VersionNumberParameter" + "name": "extensionTypeName", + "in": "path", + "description": "Name of the Extension Type.", + "required": true, + "type": "string", + "pattern": "^[a-zA-Z][a-zA-Z0-9-_]*$" }, { - "$ref": "../../../../../../common-types/resource-management/v2/types.json#/parameters/ApiVersionParameter" + "name": "versionNumber", + "in": "path", + "description": "Version number of the Extension Type.", + "required": true, + "type": "string" } ], "responses": { "200": { - "description": "OK", + "description": "Azure operation completed successfully.", "schema": { "$ref": "#/definitions/ExtensionTypeVersionForReleaseTrain" } }, "default": { - "description": "Error response describing why the operation failed.", + "description": "An unexpected error response.", "schema": { - "$ref": "../../../../../../common-types/resource-management/v2/types.json#/definitions/ErrorResponse" + "$ref": "../../../../../../common-types/resource-management/v3/types.json#/definitions/ErrorResponse" } } + }, + "x-ms-examples": { + "List Extension Type Versions": { + "$ref": "./examples/GetExtensionTypeVersionByLocation.json" + } } } }, "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{clusterRp}/{clusterResourceName}/{clusterName}/providers/Microsoft.KubernetesConfiguration/extensionTypes": { "get": { + "operationId": "ExtensionTypes_List", "tags": [ "ExtensionTypes", "ClusterExtensionTypes" ], "description": "List installable Extension Types for the cluster based region and type for the cluster.", - "operationId": "ExtensionTypes_List", - "x-ms-examples": { - "Get Extension Types": { - "$ref": "./examples/ListExtensionTypes.json" - } - }, "parameters": [ { - "$ref": "../../../../../../common-types/resource-management/v2/types.json#/parameters/SubscriptionIdParameter" + "$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/v2/types.json#/parameters/ResourceGroupNameParameter" + "$ref": "../../../../../../common-types/resource-management/v3/types.json#/parameters/ResourceGroupNameParameter" }, { - "$ref": "../../../common/2023-05-01-preview/parameters.json#/parameters/ClusterRpParameter" + "name": "clusterRp", + "in": "path", + "description": "The Kubernetes cluster RP - i.e. Microsoft.ContainerService, Microsoft.Kubernetes, Microsoft.HybridContainerService.", + "required": true, + "type": "string" }, { - "$ref": "../../../common/2023-05-01-preview/parameters.json#/parameters/ClusterResourceNameParameter" + "name": "clusterResourceName", + "in": "path", + "description": "The Kubernetes cluster resource name - i.e. managedClusters, connectedClusters, provisionedClusters, appliances.", + "required": true, + "type": "string", + "pattern": "^[a-zA-Z]*$" }, { - "$ref": "../../../common/2023-05-01-preview/parameters.json#/parameters/ClusterNameParameter" + "name": "clusterName", + "in": "path", + "description": "The name of the kubernetes cluster.", + "required": true, + "type": "string", + "pattern": "^.*" }, { "name": "publisherId", @@ -331,25 +375,27 @@ "description": "Filter results by release train (default value is stable)", "required": false, "type": "string" - }, - { - "$ref": "../../../../../../common-types/resource-management/v2/types.json#/parameters/ApiVersionParameter" } ], "responses": { "200": { - "description": "OK", + "description": "Azure operation completed successfully.", "schema": { "$ref": "#/definitions/ExtensionTypesList" } }, "default": { - "description": "Error response describing why the operation failed.", + "description": "An unexpected error response.", "schema": { - "$ref": "../../../../../../common-types/resource-management/v2/types.json#/definitions/ErrorResponse" + "$ref": "../../../../../../common-types/resource-management/v3/types.json#/definitions/ErrorResponse" } } }, + "x-ms-examples": { + "Get Extension Types": { + "$ref": "./examples/ListExtensionTypes.json" + } + }, "x-ms-pageable": { "nextLinkName": "nextLink" } @@ -357,87 +403,123 @@ }, "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{clusterRp}/{clusterResourceName}/{clusterName}/providers/Microsoft.KubernetesConfiguration/extensionTypes/{extensionTypeName}": { "get": { + "operationId": "ExtensionTypes_Get", "tags": [ "ExtensionTypes", "ClusterExtensionTypes" ], "description": "Get an Extension Type installable to the cluster based region and type for the cluster.", - "operationId": "ExtensionTypes_Get", - "x-ms-examples": { - "Get Extension Types": { - "$ref": "./examples/GetExtensionType.json" - } - }, "parameters": [ { - "$ref": "../../../../../../common-types/resource-management/v2/types.json#/parameters/SubscriptionIdParameter" + "$ref": "../../../../../../common-types/resource-management/v3/types.json#/parameters/ApiVersionParameter" }, { - "$ref": "../../../../../../common-types/resource-management/v2/types.json#/parameters/ResourceGroupNameParameter" + "$ref": "../../../../../../common-types/resource-management/v3/types.json#/parameters/SubscriptionIdParameter" }, { - "$ref": "../../../common/2023-05-01-preview/parameters.json#/parameters/ClusterRpParameter" + "$ref": "../../../../../../common-types/resource-management/v3/types.json#/parameters/ResourceGroupNameParameter" }, { - "$ref": "../../../common/2023-05-01-preview/parameters.json#/parameters/ClusterResourceNameParameter" + "name": "clusterRp", + "in": "path", + "description": "The Kubernetes cluster RP - i.e. Microsoft.ContainerService, Microsoft.Kubernetes, Microsoft.HybridContainerService.", + "required": true, + "type": "string" }, { - "$ref": "../../../common/2023-05-01-preview/parameters.json#/parameters/ClusterNameParameter" + "name": "clusterResourceName", + "in": "path", + "description": "The Kubernetes cluster resource name - i.e. managedClusters, connectedClusters, provisionedClusters, appliances.", + "required": true, + "type": "string", + "pattern": "^[a-zA-Z]*$" }, { - "$ref": "#/parameters/ExtensionTypeNameParameter" + "name": "clusterName", + "in": "path", + "description": "The name of the kubernetes cluster.", + "required": true, + "type": "string", + "pattern": "^.*" }, { - "$ref": "../../../../../../common-types/resource-management/v2/types.json#/parameters/ApiVersionParameter" + "name": "extensionTypeName", + "in": "path", + "description": "Name of the Extension Type.", + "required": true, + "type": "string", + "pattern": "^[a-zA-Z][a-zA-Z0-9-_]*$" } ], "responses": { "200": { - "description": "OK", + "description": "Azure operation completed successfully.", "schema": { "$ref": "#/definitions/ExtensionType" } }, "default": { - "description": "Error response describing why the operation failed.", + "description": "An unexpected error response.", "schema": { - "$ref": "../../../../../../common-types/resource-management/v2/types.json#/definitions/ErrorResponse" + "$ref": "../../../../../../common-types/resource-management/v3/types.json#/definitions/ErrorResponse" } } + }, + "x-ms-examples": { + "Get Extension Types": { + "$ref": "./examples/GetExtensionType.json" + } } } }, "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{clusterRp}/{clusterResourceName}/{clusterName}/providers/Microsoft.KubernetesConfiguration/extensionTypes/{extensionTypeName}/versions": { "get": { + "operationId": "ExtensionTypes_ClusterListVersions", "tags": [ "ExtensionTypes", "ClusterExtensionTypes" ], "description": "List the version for an Extension Type installable to the cluster.", - "operationId": "ExtensionTypes_ClusterListVersions", - "x-ms-examples": { - "List Extension Type Versions": { - "$ref": "./examples/ListExtensionTypeVersions.json" - } - }, "parameters": [ { - "$ref": "../../../../../../common-types/resource-management/v2/types.json#/parameters/SubscriptionIdParameter" + "$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/v2/types.json#/parameters/ResourceGroupNameParameter" + "$ref": "../../../../../../common-types/resource-management/v3/types.json#/parameters/ResourceGroupNameParameter" }, { - "$ref": "../../../common/2023-05-01-preview/parameters.json#/parameters/ClusterRpParameter" + "name": "clusterRp", + "in": "path", + "description": "The Kubernetes cluster RP - i.e. Microsoft.ContainerService, Microsoft.Kubernetes, Microsoft.HybridContainerService.", + "required": true, + "type": "string" }, { - "$ref": "../../../common/2023-05-01-preview/parameters.json#/parameters/ClusterResourceNameParameter" + "name": "clusterResourceName", + "in": "path", + "description": "The Kubernetes cluster resource name - i.e. managedClusters, connectedClusters, provisionedClusters, appliances.", + "required": true, + "type": "string", + "pattern": "^[a-zA-Z]*$" }, { - "$ref": "../../../common/2023-05-01-preview/parameters.json#/parameters/ClusterNameParameter" + "name": "clusterName", + "in": "path", + "description": "The name of the kubernetes cluster.", + "required": true, + "type": "string", + "pattern": "^.*" }, { - "$ref": "#/parameters/ExtensionTypeNameParameter" + "name": "extensionTypeName", + "in": "path", + "description": "Name of the Extension Type.", + "required": true, + "type": "string", + "pattern": "^[a-zA-Z][a-zA-Z0-9-_]*$" }, { "name": "releaseTrain", @@ -459,25 +541,27 @@ "description": "Filter results by only the latest version (based on other query parameters)", "required": false, "type": "boolean" - }, - { - "$ref": "../../../../../../common-types/resource-management/v2/types.json#/parameters/ApiVersionParameter" } ], "responses": { "200": { - "description": "OK", + "description": "Azure operation completed successfully.", "schema": { "$ref": "#/definitions/ExtensionTypeVersionsList" } }, "default": { - "description": "Error response describing why the operation failed.", + "description": "An unexpected error response.", "schema": { - "$ref": "../../../../../../common-types/resource-management/v2/types.json#/definitions/ErrorResponse" + "$ref": "../../../../../../common-types/resource-management/v3/types.json#/definitions/ErrorResponse" } } }, + "x-ms-examples": { + "List Extension Type Versions": { + "$ref": "./examples/ListExtensionTypeVersions.json" + } + }, "x-ms-pageable": { "nextLinkName": "nextLink" } @@ -485,285 +569,328 @@ }, "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{clusterRp}/{clusterResourceName}/{clusterName}/providers/Microsoft.KubernetesConfiguration/extensionTypes/{extensionTypeName}/versions/{versionNumber}": { "get": { + "operationId": "ExtensionTypes_ClusterGetVersion", "tags": [ "ExtensionTypes", "ClusterExtensionTypes" ], "description": "Get details of a version for an Extension Type installable to the cluster.", - "operationId": "ExtensionTypes_ClusterGetVersion", - "x-ms-examples": { - "List Extension Type Versions": { - "$ref": "./examples/GetExtensionTypeVersion.json" - } - }, "parameters": [ { - "$ref": "../../../../../../common-types/resource-management/v2/types.json#/parameters/SubscriptionIdParameter" + "$ref": "../../../../../../common-types/resource-management/v3/types.json#/parameters/ApiVersionParameter" }, { - "$ref": "../../../../../../common-types/resource-management/v2/types.json#/parameters/ResourceGroupNameParameter" + "$ref": "../../../../../../common-types/resource-management/v3/types.json#/parameters/SubscriptionIdParameter" }, { - "$ref": "../../../common/2023-05-01-preview/parameters.json#/parameters/ClusterRpParameter" + "$ref": "../../../../../../common-types/resource-management/v3/types.json#/parameters/ResourceGroupNameParameter" }, { - "$ref": "../../../common/2023-05-01-preview/parameters.json#/parameters/ClusterResourceNameParameter" + "name": "clusterRp", + "in": "path", + "description": "The Kubernetes cluster RP - i.e. Microsoft.ContainerService, Microsoft.Kubernetes, Microsoft.HybridContainerService.", + "required": true, + "type": "string" }, { - "$ref": "../../../common/2023-05-01-preview/parameters.json#/parameters/ClusterNameParameter" + "name": "clusterResourceName", + "in": "path", + "description": "The Kubernetes cluster resource name - i.e. managedClusters, connectedClusters, provisionedClusters, appliances.", + "required": true, + "type": "string", + "pattern": "^[a-zA-Z]*$" }, { - "$ref": "#/parameters/ExtensionTypeNameParameter" + "name": "clusterName", + "in": "path", + "description": "The name of the kubernetes cluster.", + "required": true, + "type": "string", + "pattern": "^.*" }, { - "$ref": "#/parameters/VersionNumberParameter" + "name": "extensionTypeName", + "in": "path", + "description": "Name of the Extension Type.", + "required": true, + "type": "string", + "pattern": "^[a-zA-Z][a-zA-Z0-9-_]*$" }, { - "$ref": "../../../../../../common-types/resource-management/v2/types.json#/parameters/ApiVersionParameter" + "name": "versionNumber", + "in": "path", + "description": "Version number of the Extension Type.", + "required": true, + "type": "string" } ], "responses": { "200": { - "description": "OK", + "description": "Azure operation completed successfully.", "schema": { "$ref": "#/definitions/ExtensionTypeVersionForReleaseTrain" } }, "default": { - "description": "Error response describing why the operation failed.", + "description": "An unexpected error response.", "schema": { - "$ref": "../../../../../../common-types/resource-management/v2/types.json#/definitions/ErrorResponse" + "$ref": "../../../../../../common-types/resource-management/v3/types.json#/definitions/ErrorResponse" } } + }, + "x-ms-examples": { + "List Extension Type Versions": { + "$ref": "./examples/GetExtensionTypeVersion.json" + } } } } }, "definitions": { - "ExtensionType": { - "description": "The Extension Type object.", + "ClusterScopeSettings": { "type": "object", + "description": "Extension scope settings", "properties": { "properties": { - "type": "object", - "properties": { - "isSystemExtension": { - "type": "boolean", - "description": "Is this Extension Type a system extension." - }, - "isManagedIdentityRequired": { - "type": "boolean", - "description": "Should an identity for this cluster resource be created" - }, - "description": { - "type": "string", - "description": "Description of the extension type" - }, - "publisher": { - "type": "string", - "description": "Name of the publisher for the Extension Type" - }, - "planInfo": { - "description": "Plan information only for the Marketplace Extension Type.", - "type": "object", - "properties": { - "publisherId": { - "type": "string", - "description": "Publisher ID of the Marketplace Extension Type." - }, - "planId": { - "type": "string", - "description": "Plan ID of the Marketplace Extension Type." - }, - "offerId": { - "type": "string", - "description": "Offer or Product ID of the Marketplace Extension Type." - } - } - }, - "supportedClusterTypes": { - "description": "Cluster Types supported for this Extension Type.", - "type": "array", - "items": { - "type": "string" - } - }, - "supportedScopes": { - "description": "Supported Kubernetes Scopes for this Extension Type.", - "type": "object", - "properties": { - "defaultScope": { - "description": "The default scope of the extension type. This scope will be used if the user does not provide a scope while creating an extension.", - "type": "string" - }, - "clusterScopeSettings": { - "$ref": "#/definitions/ClusterScopeSettings" - } - } - } - } + "$ref": "#/definitions/ClusterScopeSettingsProperties", + "description": "Extension scope settings", + "x-ms-client-flatten": true } }, "allOf": [ { - "$ref": "../../../../../../common-types/resource-management/v2/types.json#/definitions/ProxyResource" + "$ref": "../../../../../../common-types/resource-management/v3/types.json#/definitions/ProxyResource" } ] }, - "ClusterScopeSettings": { + "ClusterScopeSettingsProperties": { "type": "object", "description": "Extension scope settings", + "properties": { + "allowMultipleInstances": { + "type": "boolean", + "description": "Describes if multiple instances of the extension are allowed" + }, + "defaultReleaseNamespace": { + "type": "string", + "description": "Default extension release namespace" + } + } + }, + "ExtensionType": { + "type": "object", + "description": "The Extension Type object.", "properties": { "properties": { - "type": "object", - "x-ms-client-flatten": true, - "description": "Extension scope settings", - "properties": { - "allowMultipleInstances": { - "type": "boolean", - "description": "Describes if multiple instances of the extension are allowed" - }, - "defaultReleaseNamespace": { - "type": "string", - "description": "Default extension release namespace" - } - } + "$ref": "#/definitions/ExtensionTypeProperties" } }, "allOf": [ { - "$ref": "../../../../../../common-types/resource-management/v2/types.json#/definitions/ProxyResource" + "$ref": "../../../../../../common-types/resource-management/v3/types.json#/definitions/ProxyResource" } ] }, + "ExtensionTypeProperties": { + "type": "object", + "properties": { + "isSystemExtension": { + "type": "boolean", + "description": "Is this Extension Type a system extension." + }, + "isManagedIdentityRequired": { + "type": "boolean", + "description": "Should an identity for this cluster resource be created" + }, + "description": { + "type": "string", + "description": "Description of the extension type" + }, + "publisher": { + "type": "string", + "description": "Name of the publisher for the Extension Type" + }, + "planInfo": { + "$ref": "#/definitions/ExtensionTypePropertiesPlanInfo", + "description": "Plan information only for the Marketplace Extension Type." + }, + "supportedClusterTypes": { + "type": "array", + "description": "Cluster Types supported for this Extension Type.", + "items": { + "type": "string" + } + }, + "supportedScopes": { + "$ref": "#/definitions/ExtensionTypePropertiesSupportedScopes", + "description": "Supported Kubernetes Scopes for this Extension Type." + } + } + }, + "ExtensionTypePropertiesPlanInfo": { + "type": "object", + "description": "Plan information only for the Marketplace Extension Type.", + "properties": { + "publisherId": { + "type": "string", + "description": "Publisher ID of the Marketplace Extension Type." + }, + "planId": { + "type": "string", + "description": "Plan ID of the Marketplace Extension Type." + }, + "offerId": { + "type": "string", + "description": "Offer or Product ID of the Marketplace Extension Type." + } + } + }, + "ExtensionTypePropertiesSupportedScopes": { + "type": "object", + "description": "Supported Kubernetes Scopes for this Extension Type.", + "properties": { + "defaultScope": { + "type": "string", + "description": "The default scope of the extension type. This scope will be used if the user does not provide a scope while creating an extension." + }, + "clusterScopeSettings": { + "$ref": "#/definitions/ClusterScopeSettings", + "description": "Extension scope settings" + } + } + }, "ExtensionTypeVersionForReleaseTrain": { - "description": "The Extension Type Version object.", "type": "object", + "description": "The Extension Type Version object.", "properties": { "properties": { - "type": "object", - "properties": { - "version": { - "type": "string", - "description": "The version number for the extension type" - }, - "unsupportedKubernetesVersions": { - "description": "The list of supported Kubernetes cluster versions for this extension type", - "type": "object", - "properties": { - "connectedCluster": { - "$ref": "#/definitions/ExtensionTypeVersionUnsupportedKubernetesMatrix" - }, - "appliances": { - "$ref": "#/definitions/ExtensionTypeVersionUnsupportedKubernetesMatrix" - }, - "provisionedCluster": { - "$ref": "#/definitions/ExtensionTypeVersionUnsupportedKubernetesMatrix" - }, - "managedCluster": { - "$ref": "#/definitions/ExtensionTypeVersionUnsupportedKubernetesMatrix" - } - } - }, - "supportedClusterTypes": { - "type": "array", - "description": "A list of supported cluster types for this version of the Extension Type", - "items": { - "description": "The individual cluster type that is supported by this extension", - "type": "string" - } - } - } + "$ref": "#/definitions/ExtensionTypeVersionForReleaseTrainProperties" } }, "allOf": [ { - "$ref": "../../../../../../common-types/resource-management/v2/types.json#/definitions/ProxyResource" + "$ref": "../../../../../../common-types/resource-management/v3/types.json#/definitions/ProxyResource" } ] }, - "ExtensionTypesList": { - "description": "List Extension Types. It contains a list of ExtensionType objects and a URL link to get the next set of results.", + "ExtensionTypeVersionForReleaseTrainProperties": { "type": "object", "properties": { - "value": { + "version": { + "type": "string", + "description": "The version number for the extension type" + }, + "unsupportedKubernetesVersions": { + "$ref": "#/definitions/ExtensionTypeVersionForReleaseTrainPropertiesUnsupportedKubernetesVersions", + "description": "The list of supported Kubernetes cluster versions for this extension type" + }, + "supportedClusterTypes": { "type": "array", - "readOnly": true, + "description": "A list of supported cluster types for this version of the Extension Type", "items": { - "$ref": "#/definitions/ExtensionType" + "type": "string" + } + } + } + }, + "ExtensionTypeVersionForReleaseTrainPropertiesUnsupportedKubernetesVersions": { + "type": "object", + "description": "The list of supported Kubernetes cluster versions for this extension type", + "properties": { + "connectedCluster": { + "type": "array", + "items": { + "$ref": "#/definitions/ExtensionTypeVersionUnsupportedKubernetesMatrixItem" }, - "description": "List of Extension Types." + "x-ms-identifiers": [] }, - "nextLink": { - "type": "string", - "readOnly": true, - "description": "URL to get the next set of extension type objects, if any." + "appliances": { + "type": "array", + "items": { + "$ref": "#/definitions/ExtensionTypeVersionUnsupportedKubernetesMatrixItem" + }, + "x-ms-identifiers": [] + }, + "provisionedCluster": { + "type": "array", + "items": { + "$ref": "#/definitions/ExtensionTypeVersionUnsupportedKubernetesMatrixItem" + }, + "x-ms-identifiers": [] + }, + "managedCluster": { + "type": "array", + "items": { + "$ref": "#/definitions/ExtensionTypeVersionUnsupportedKubernetesMatrixItem" + }, + "x-ms-identifiers": [] + } + } + }, + "ExtensionTypeVersionUnsupportedKubernetesMatrixItem": { + "type": "object", + "description": "The list of Kubernetes Distribution and Versions that are not supported by this version of this Extension Type", + "properties": { + "distributions": { + "type": "array", + "description": "The list of Kubernetes Cluster Distribution Names not supported", + "items": { + "type": "string" + } + }, + "unsupportedVersions": { + "type": "array", + "description": "The list of Kubernetes Versions not supported by the list of Kubernetes Cluster Distribution names in this object", + "items": { + "type": "string" + } } } }, "ExtensionTypeVersionsList": { - "description": "List Extension Type Versions. It contains a list of ExtensionTypeVersionForReleaseTrain objects.", "type": "object", + "description": "List Extension Type Versions. It contains a list of ExtensionTypeVersionForReleaseTrain objects.", "properties": { "value": { "type": "array", - "readOnly": true, + "description": "The ExtensionTypeVersionForReleaseTrain items on this page", "items": { "$ref": "#/definitions/ExtensionTypeVersionForReleaseTrain" }, - "description": "List of Extension Type Versions for an Extension Type in a Release Train." + "readOnly": true }, "nextLink": { "type": "string", - "readOnly": true, - "description": "URL to get the next set of extension objects, if any." + "format": "uri", + "description": "The link to the next page of items" } - } + }, + "required": [ + "value" + ] }, - "ExtensionTypeVersionUnsupportedKubernetesMatrix": { - "type": "array", - "items": { - "type": "object", - "description": "The list of Kubernetes Distribution and Versions that are not supported by this version of this Extension Type", - "properties": { - "distributions": { - "type": "array", - "description": "The list of Kubernetes Cluster Distribution Names not supported", - "items": { - "description": "A single Kubernetes Cluster Distribution Name", - "type": "string" - } + "ExtensionTypesList": { + "type": "object", + "description": "List Extension Types. It contains a list of ExtensionType objects and a URL link to get the next set of results.", + "properties": { + "value": { + "type": "array", + "description": "The ExtensionType items on this page", + "items": { + "$ref": "#/definitions/ExtensionType" }, - "unsupportedVersions": { - "type": "array", - "description": "The list of Kubernetes Versions not supported by the list of Kubernetes Cluster Distribution names in this object", - "items": { - "type": "string", - "description": "A Kubernetes Version not supported by the list of Kubernetes Cluster Distribution names" - } - } + "readOnly": true + }, + "nextLink": { + "type": "string", + "format": "uri", + "description": "The link to the next page of items" } }, - "x-ms-identifiers": [] + "required": [ + "value" + ] } }, - "parameters": { - "ExtensionTypeNameParameter": { - "name": "extensionTypeName", - "in": "path", - "required": true, - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9-_]*$", - "description": "Name of the Extension Type.", - "x-ms-parameter-location": "method" - }, - "VersionNumberParameter": { - "name": "versionNumber", - "in": "path", - "required": true, - "type": "string", - "description": "Version number of the Extension Type.", - "x-ms-parameter-location": "method" - } - } + "parameters": {} } diff --git a/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/extensionTypes/tspconfig.yaml b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/extensionTypes/tspconfig.yaml new file mode 100644 index 000000000000..25f306715242 --- /dev/null +++ b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/extensionTypes/tspconfig.yaml @@ -0,0 +1,47 @@ +parameters: + "service-dir": + default: "sdk/extensiontypes" +emit: + - "@azure-tools/typespec-autorest" +options: + "@azure-tools/typespec-autorest": + omit-unreachable-types: false + emitter-output-dir: "{project-root}" + azure-resource-provider-folder: "resource-manager" + output-file: "{version-status}/{version}/extensionTypes.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-extensiontypes" + namespace: "azure.mgmt.kubernetesconfiguration.extensiontypes" + 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-extensiontypes" + namespace: "com.azure.resourcemanager.kubernetesconfiguration.extensiontypes" + service-name: "ExtensionTypes" # human-readable service name, whitespace allowed + flavor: azure + "@azure-tools/typespec-ts": + service-dir: sdk/kubernetesconfiguration + emitter-output-dir: "{output-dir}/{service-dir}/arm-kubernetesconfiguration-extensiontypes" + flavor: "azure" + experimental-extensible-enums: true + package-details: + name: "@azure/arm-kubernetesconfiguration-extensiontypes" + "@azure-tools/typespec-go": + service-dir: "sdk/resourcemanager/kubernetesconfiguration" + emitter-output-dir: "{output-dir}/{service-dir}/armextensiontypes" + module: "github.com/Azure/azure-sdk-for-go/{service-dir}/armextensiontypes" + fix-const-stuttering: true + flavor: "azure" + generate-samples: true + generate-fakes: true + head-as-boolean: true + inject-spans: true +linter: + extends: + - "@azure-tools/typespec-azure-rulesets/resource-manager" diff --git a/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/extensions/Extension.tsp b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/extensions/Extension.tsp new file mode 100644 index 000000000000..97ed8073503c --- /dev/null +++ b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/extensions/Extension.tsp @@ -0,0 +1,199 @@ +import "@azure-tools/typespec-azure-core"; +import "@azure-tools/typespec-azure-resource-manager"; +import "@typespec/openapi"; +import "@typespec/rest"; +import "./models.tsp"; + +using TypeSpec.Rest; +using Azure.ResourceManager; +using TypeSpec.Http; +using TypeSpec.OpenAPI; + +namespace Microsoft.KubernetesConfiguration; +/** + * The Extension object. + */ +model Extension is Azure.ResourceManager.ProxyResource { + ...ResourceNameParameter< + Resource = Extension, + KeyName = "extensionName", + SegmentName = "extensions", + NamePattern = "" + >; + + /** + * Identity of the Extension resource + */ + #suppress "@azure-tools/typespec-azure-resource-manager/arm-resource-invalid-envelope-property" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + identity?: Azure.ResourceManager.CommonTypes.Identity; + + ...Azure.ResourceManager.ResourcePlanProperty; +} + +alias ExtensionOps = Azure.ResourceManager.Legacy.ExtensionOperations< + { + ...ApiVersionParameter; + ...SubscriptionIdParameter; + ...ResourceGroupParameter; + + /** + * The Kubernetes cluster RP - i.e. Microsoft.ContainerService, Microsoft.Kubernetes, Microsoft.HybridContainerService. + */ + @path + @segment("providers") + @key + 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("^.*") + clusterName: string; + }, + { + ...Azure.ResourceManager.Extension.ExtensionProviderNamespace; + ...ParentKeysOf; + }, + { + ...Azure.ResourceManager.Extension.ExtensionProviderNamespace; + ...KeysOf; + } +>; + +alias ExtensionBuildingOps = Azure.ResourceManager.Legacy.RoutedOperations< + { + ...ApiVersionParameter; + ...SubscriptionIdParameter; + ...ResourceGroupParameter; + + /** + * The Kubernetes cluster RP - i.e. Microsoft.ContainerService, Microsoft.Kubernetes, Microsoft.HybridContainerService. + */ + @path + @segment("providers") + @key + 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. + */ + @pattern("^.*") + @key + @path + clusterName: string; + + ...KeysOf; + }, + { + #suppress "@azure-tools/typespec-azure-core/documentation-required" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + @path + @segment("operations") + @key + operationId: string; + }, + ResourceRoute = #{ + route: "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{clusterRp}/{clusterResourceName}/{clusterName}/providers/Microsoft.KubernetesConfiguration/extensions", + } +>; + +@armResourceOperations(#{ allowStaticRoutes: true, omitTags: true }) +interface Extensions { + /** + * Gets Kubernetes Cluster Extension. + */ + @tag("Extensions") + @tag("ClusterExtensions") + get is ExtensionOps.Read; + + /** + * Create a new Kubernetes Cluster Extension. + */ + @tag("Extensions") + @tag("ClusterExtensions") + create is ExtensionOps.CreateOrUpdateAsync; + + /** + * Patch an existing Kubernetes Cluster Extension. + */ + #suppress "@azure-tools/typespec-azure-resource-manager/lro-location-header" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + #suppress "@azure-tools/typespec-azure-resource-manager/no-response-body" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + @tag("Extensions") + @tag("ClusterExtensions") + @patch(#{ implicitOptionality: false }) + update is ExtensionOps.CustomPatchAsync< + Extension, + PatchModel = PatchExtension, + Parameters = {}, + Response = ArmResponse | (ArmAcceptedLroResponse & + Azure.Core.Foundations.RetryAfterHeader> & { + @bodyRoot + _: Extension; + }) + >; + + /** + * Delete a Kubernetes Cluster Extension. This will cause the Agent to Uninstall the extension from the cluster. + */ + #suppress "@azure-tools/typespec-azure-resource-manager/lro-location-header" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + #suppress "@azure-tools/typespec-azure-resource-manager/arm-delete-operation-response-codes" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + @tag("Extensions") + @tag("ClusterExtensions") + delete is ExtensionOps.DeleteWithoutOkAsync< + Extension, + Parameters = { + /** + * Delete the extension resource in Azure - not the normal asynchronous delete. + */ + @query("forceDelete") + forceDelete?: boolean; + }, + Response = ArmDeletedResponse | ArmDeleteAcceptedLroResponse | ArmDeletedNoContentResponse + >; + + /** + * List all Extensions in the cluster. + */ + @tag("Extensions") + @tag("ClusterExtensions") + list is ExtensionOps.List>; + + /** + * Get Async Operation status + */ + @tag("Extension Operation Status") + @get + @route("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{clusterRp}/{clusterResourceName}/{clusterName}/providers/Microsoft.KubernetesConfiguration/extensions/{extensionName}/operations/{operationId}") + operationStatusGet is ExtensionBuildingOps.ActionSync< + Extension, + void, + ArmResponse + >; +} + +@@doc(Extension.name, "Name of the Extension."); +@@doc(Extension.properties, "Properties of an Extension resource"); +@@doc(Extensions.create::parameters.resource, + "Properties necessary to Create an Extension." +); +@@doc(Extensions.update::parameters.properties, + "Properties to Patch in an existing Extension." +); diff --git a/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/extensions/back-compatible.tsp b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/extensions/back-compatible.tsp new file mode 100644 index 000000000000..7c8af0780921 --- /dev/null +++ b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/extensions/back-compatible.tsp @@ -0,0 +1,14 @@ +import "@azure-tools/typespec-client-generator-core"; + +using Azure.ClientGenerator.Core; +using Microsoft.KubernetesConfiguration; + +#suppress "@azure-tools/typespec-azure-core/no-legacy-usage" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" +@@Legacy.flattenProperty(PatchExtension.properties); + +@@clientName(Extensions.create::parameters.resource, "extension"); +@@clientName(Extensions.update::parameters.properties, "patchExtension"); +@@clientLocation(Extensions.operationStatusGet, "OperationStatus"); +@@clientName(Extensions.operationStatusGet, "Get"); +#suppress "@azure-tools/typespec-azure-core/no-legacy-usage" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" +@@Legacy.flattenProperty(Extension.properties); diff --git a/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/extensions/client.tsp b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/extensions/client.tsp new file mode 100644 index 000000000000..3d83695f7d4f --- /dev/null +++ b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/extensions/client.tsp @@ -0,0 +1,19 @@ +import "./main.tsp"; +import "@azure-tools/typespec-client-generator-core"; + +using Azure.ClientGenerator.Core; + +@@clientName(Microsoft.KubernetesConfiguration, + "KubernetesConfigurationExtensionsMgmtClient", + "python" +); + +@@clientName(Microsoft.KubernetesConfiguration.AKSIdentityType, + "AksIdentityType", + "java" +); + +@@alternateType(Azure.ResourceManager.CommonTypes.Identity.type, + "SystemAssigned", + "go" +); diff --git a/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/extensions/examples/2024-11-01/CreateExtension.json b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/extensions/examples/2024-11-01/CreateExtension.json new file mode 100644 index 000000000000..a129db1f5f07 --- /dev/null +++ b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/extensions/examples/2024-11-01/CreateExtension.json @@ -0,0 +1,113 @@ +{ + "parameters": { + "api-version": "2024-11-01", + "clusterName": "clusterName1", + "clusterResourceName": "connectedClusters", + "clusterRp": "Microsoft.Kubernetes", + "extension": { + "properties": { + "autoUpgradeMinorVersion": true, + "configurationProtectedSettings": { + "omsagent.secret.key": "secretKeyValue01" + }, + "configurationSettings": { + "omsagent.env.clusterName": "clusterName1", + "omsagent.secret.wsid": "fakeTokenPlaceholder" + }, + "extensionType": "azuremonitor-containers", + "releaseTrain": "Preview", + "scope": { + "cluster": { + "releaseNamespace": "kube-system" + } + } + } + }, + "extensionName": "ClusterMonitor", + "resourceGroupName": "rg1", + "subscriptionId": "subId1" + }, + "responses": { + "200": { + "description": "Details of the Kubernetes Extension's current status.", + "body": { + "name": "ClusterMonitor", + "type": "Microsoft.KubernetesConfiguration/extensions", + "id": "/subscriptions/subId1/resourceGroups/rg1/providers/Microsoft.Kubernetes/connectedClusters/clusterName1/providers/Microsoft.KubernetesConfiguration/extensions/ClusterMonitor", + "properties": { + "autoUpgradeMinorVersion": false, + "configurationSettings": { + "omsagent.env.clusterName": "clusterName1", + "omsagent.secret.wsid": "fakeTokenPlaceholder" + }, + "currentVersion": "0.1.4", + "extensionType": "azuremonitor-containers", + "isSystemExtension": false, + "provisioningState": "Succeeded", + "releaseTrain": "Preview", + "scope": { + "cluster": { + "releaseNamespace": "kube-system" + } + }, + "statuses": [], + "version": "0.1.4" + }, + "systemData": { + "createdAt": "2021-09-08T05:10:57.027Z", + "createdBy": "string", + "createdByType": "Application", + "lastModifiedAt": "2021-09-08T05:10:57.027Z", + "lastModifiedBy": "string", + "lastModifiedByType": "Application" + } + }, + "headers": { + "Operation-Location": "/subscriptions/subId1/resourceGroups/rg1/providers/Microsoft.Kubernetes/connectedClusters/clusterName1/providers/Microsoft.KubernetesConfiguration/extensions/ClusterMonitor/operations/{operationId}", + "x-ms-async-operation-timeout": "PT48H" + } + }, + "201": { + "description": "Details of the Kubernetes Extension's current status.", + "body": { + "name": "ClusterMonitor", + "type": "Microsoft.KubernetesConfiguration/extensions", + "id": "/subscriptions/subId1/resourceGroups/rg1/providers/Microsoft.Kubernetes/connectedClusters/clusterName1/providers/Microsoft.KubernetesConfiguration/extensions/ClusterMonitor", + "properties": { + "autoUpgradeMinorVersion": false, + "configurationSettings": { + "omsagent.env.clusterName": "clusterName1", + "omsagent.secret.wsid": "fakeTokenPlaceholder" + }, + "currentVersion": null, + "extensionType": "azuremonitor-containers", + "isSystemExtension": false, + "provisioningState": "Creating", + "releaseTrain": "Preview", + "scope": { + "cluster": { + "releaseNamespace": "kube-system" + } + }, + "statuses": [], + "version": "0.1.4" + }, + "systemData": { + "createdAt": "2021-09-08T05:10:57.027Z", + "createdBy": "string", + "createdByType": "Application", + "lastModifiedAt": "2021-09-08T05:10:57.027Z", + "lastModifiedBy": "string", + "lastModifiedByType": "Application" + } + }, + "headers": { + "Azure-AsyncOperation": "http://management.azure.com/subscriptions/subId/resourceGroups/rg1/providers/Microsoft.Kubernetes/ConnectedClusters/clusterName1/providers/Microsoft.KubernetesConfiguration/extensions/ClusterMonitor/operations/operationId?api-version=2024-11-01", + "Operation-Location": "/subscriptions/subId1/resourceGroups/rg1/providers/Microsoft.Kubernetes/connectedClusters/clusterName1/providers/Microsoft.KubernetesConfiguration/extensions/ClusterMonitor/operations/{operationId}", + "x-ms-async-operation-timeout": "PT48H" + } + } + }, + "operationId": "Extensions_Create", + "title": "Create Extension" +} diff --git a/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/extensions/examples/2024-11-01/CreateExtensionWithPlan.json b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/extensions/examples/2024-11-01/CreateExtensionWithPlan.json new file mode 100644 index 000000000000..c6369432a286 --- /dev/null +++ b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/extensions/examples/2024-11-01/CreateExtensionWithPlan.json @@ -0,0 +1,108 @@ +{ + "parameters": { + "api-version": "2024-11-01", + "clusterName": "clusterName1", + "clusterResourceName": "connectedClusters", + "clusterRp": "Microsoft.Kubernetes", + "extension": { + "plan": { + "name": "azure-vote-standard", + "product": "azure-vote-standard-offer-id", + "publisher": "Microsoft" + }, + "properties": { + "autoUpgradeMinorVersion": true, + "extensionType": "azure-vote", + "releaseTrain": "Preview" + } + }, + "extensionName": "azureVote", + "resourceGroupName": "rg1", + "subscriptionId": "subId1" + }, + "responses": { + "200": { + "description": "Details of the Kubernetes Extension's current status.", + "body": { + "name": "azureVote", + "type": "Microsoft.KubernetesConfiguration/extensions", + "id": "/subscriptions/subId1/resourceGroups/rg1/providers/Microsoft.Kubernetes/connectedClusters/clusterName1/providers/Microsoft.KubernetesConfiguration/extensions/azureVote", + "plan": { + "name": "azure-vote-standard", + "product": "azure-vote-standard-offer-id", + "publisher": "Microsoft" + }, + "properties": { + "autoUpgradeMinorVersion": true, + "currentVersion": "0.1.4", + "extensionType": "azure-vote", + "isSystemExtension": false, + "provisioningState": "Creating", + "releaseTrain": "Preview", + "scope": { + "cluster": { + "releaseNamespace": "kube-system" + } + }, + "statuses": [], + "version": "0.1.4" + }, + "systemData": { + "createdAt": "2021-09-08T05:10:57.027Z", + "createdBy": "string", + "createdByType": "Application", + "lastModifiedAt": "2021-09-08T05:10:57.027Z", + "lastModifiedBy": "string", + "lastModifiedByType": "Application" + } + }, + "headers": { + "Operation-Location": "/subscriptions/subId1/resourceGroups/rg1/providers/Microsoft.Kubernetes/connectedClusters/clusterName1/providers/Microsoft.KubernetesConfiguration/extensions/azureVote/operations/{operationId}", + "x-ms-async-operation-timeout": "PT48H" + } + }, + "201": { + "description": "Details of the Kubernetes Extension's current status.", + "body": { + "name": "azureVote", + "type": "Microsoft.KubernetesConfiguration/extensions", + "id": "/subscriptions/subId1/resourceGroups/rg1/providers/Microsoft.Kubernetes/connectedClusters/clusterName1/providers/Microsoft.KubernetesConfiguration/extensions/azureVote", + "plan": { + "name": "azure-vote-standard", + "product": "azure-vote-standard-offer-id", + "publisher": "Microsoft" + }, + "properties": { + "autoUpgradeMinorVersion": true, + "currentVersion": null, + "extensionType": "azure-vote", + "isSystemExtension": false, + "provisioningState": "Creating", + "releaseTrain": "Preview", + "scope": { + "cluster": { + "releaseNamespace": "kube-system" + } + }, + "statuses": [], + "version": "0.1.4" + }, + "systemData": { + "createdAt": "2021-09-08T05:10:57.027Z", + "createdBy": "string", + "createdByType": "Application", + "lastModifiedAt": "2021-09-08T05:10:57.027Z", + "lastModifiedBy": "string", + "lastModifiedByType": "Application" + } + }, + "headers": { + "Azure-AsyncOperation": "http://management.azure.com/subscriptions/subId/resourceGroups/rg1/providers/Microsoft.Kubernetes/ConnectedClusters/clusterName1/providers/Microsoft.KubernetesConfiguration/extensions/azureVote/operations/operationId?api-version=2024-11-01", + "Operation-Location": "/subscriptions/subId1/resourceGroups/rg1/providers/Microsoft.Kubernetes/connectedClusters/clusterName1/providers/Microsoft.KubernetesConfiguration/extensions/azureVote/operations/{operationId}", + "x-ms-async-operation-timeout": "PT48H" + } + } + }, + "operationId": "Extensions_Create", + "title": "Create Extension with Plan" +} diff --git a/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/extensions/examples/2024-11-01/DeleteExtension.json b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/extensions/examples/2024-11-01/DeleteExtension.json new file mode 100644 index 000000000000..2c0a6bdfa3fb --- /dev/null +++ b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/extensions/examples/2024-11-01/DeleteExtension.json @@ -0,0 +1,24 @@ +{ + "parameters": { + "api-version": "2024-11-01", + "clusterName": "clusterName1", + "clusterResourceName": "connectedClusters", + "clusterRp": "Microsoft.Kubernetes", + "extensionName": "ClusterMonitor", + "resourceGroupName": "rg1", + "subscriptionId": "subId1" + }, + "responses": { + "200": {}, + "202": { + "headers": { + "Azure-AsyncOperation": "http://management.azure.com/subscriptions/subId/resourceGroups/rg1/providers/Microsoft.Kubernetes/ConnectedClusters/clusterName1/providers/Microsoft.KubernetesConfiguration/extensions/ClusterMonitor/operations/operationId?api-version=2024-11-01", + "Operation-Location": "/subscriptions/subId1/resourceGroups/rg1/providers/Microsoft.Kubernetes/connectedClusters/clusterName1/providers/Microsoft.KubernetesConfiguration/extensions/ClusterMonitor/operations/{operationId}", + "x-ms-async-operation-timeout": "PT1H" + } + }, + "204": {} + }, + "operationId": "Extensions_Delete", + "title": "Delete Extension" +} diff --git a/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/extensions/examples/2024-11-01/GetExtension.json b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/extensions/examples/2024-11-01/GetExtension.json new file mode 100644 index 000000000000..ee6e83fe45ce --- /dev/null +++ b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/extensions/examples/2024-11-01/GetExtension.json @@ -0,0 +1,51 @@ +{ + "parameters": { + "api-version": "2024-11-01", + "clusterName": "clusterName1", + "clusterResourceName": "connectedClusters", + "clusterRp": "Microsoft.Kubernetes", + "extensionName": "ClusterMonitor", + "resourceGroupName": "rg1", + "subscriptionId": "subId1" + }, + "responses": { + "200": { + "description": "Details of the Kubernetes Extension's current status.", + "body": { + "name": "ClusterMonitor", + "type": "Microsoft.KubernetesConfiguration/extensions", + "id": "/subscriptions/subId1/resourceGroups/rg1/providers/Microsoft.Kubernetes/connectedClusters/clusterName1/providers/Microsoft.KubernetesConfiguration/extensions/ClusterMonitor", + "properties": { + "autoUpgradeMinorVersion": false, + "configurationSettings": { + "omsagent.env.clusterName": "clusterName1", + "omsagent.secret.wsid": "fakeTokenPlaceholder" + }, + "currentVersion": "0.1.4", + "extensionType": "azuremonitor-containers", + "isSystemExtension": false, + "provisioningState": "Succeeded", + "releaseTrain": "Preview", + "scope": { + "cluster": { + "releaseNamespace": "kube-system" + } + }, + "statuses": [], + "version": "0.1.4" + }, + "systemData": { + "createdAt": "2021-09-08T05:10:57.027Z", + "createdBy": "string", + "createdByType": "Application", + "lastModifiedAt": "2021-09-08T05:10:57.027Z", + "lastModifiedBy": "string", + "lastModifiedByType": "Application" + } + }, + "headers": {} + } + }, + "operationId": "Extensions_Get", + "title": "Get Extension" +} diff --git a/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/extensions/examples/2024-11-01/GetExtensionAsyncOperationStatus.json b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/extensions/examples/2024-11-01/GetExtensionAsyncOperationStatus.json new file mode 100644 index 000000000000..bdd8f220c122 --- /dev/null +++ b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/extensions/examples/2024-11-01/GetExtensionAsyncOperationStatus.json @@ -0,0 +1,26 @@ +{ + "parameters": { + "operationId": "99999999-9999-9999-9999-999999999999", + "api-version": "2024-11-01", + "clusterName": "clusterName1", + "clusterResourceName": "connectedClusters", + "clusterRp": "Microsoft.Kubernetes", + "extensionName": "ClusterMonitor", + "resourceGroupName": "rg1", + "subscriptionId": "subId1" + }, + "responses": { + "200": { + "body": { + "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": "Succeeded" + }, + "headers": {} + } + }, + "operationId": "OperationStatus_Get", + "title": "ExtensionAsyncOperationStatus Get" +} diff --git a/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/extensions/examples/2024-11-01/GetExtensionWithPlan.json b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/extensions/examples/2024-11-01/GetExtensionWithPlan.json new file mode 100644 index 000000000000..5a1e48ae7103 --- /dev/null +++ b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/extensions/examples/2024-11-01/GetExtensionWithPlan.json @@ -0,0 +1,56 @@ +{ + "parameters": { + "api-version": "2024-11-01", + "clusterName": "clusterName1", + "clusterResourceName": "connectedClusters", + "clusterRp": "Microsoft.Kubernetes", + "extensionName": "azureVote", + "resourceGroupName": "rg1", + "subscriptionId": "subId1" + }, + "responses": { + "200": { + "description": "Details of the Kubernetes Extension's current status.", + "body": { + "name": "azureVote", + "type": "Microsoft.KubernetesConfiguration/extensions", + "id": "/subscriptions/subId1/resourceGroups/rg1/providers/Microsoft.Kubernetes/connectedClusters/clusterName1/providers/Microsoft.KubernetesConfiguration/extensions/azureVote", + "plan": { + "name": "azure-vote-standard", + "product": "azure-vote-standard-offer-id", + "publisher": "Microsoft" + }, + "properties": { + "autoUpgradeMinorVersion": false, + "configurationSettings": { + "omsagent.env.clusterName": "clusterName1", + "omsagent.secret.wsid": "fakeTokenPlaceholder" + }, + "currentVersion": "0.1.4", + "extensionType": "azure-vote", + "isSystemExtension": false, + "provisioningState": "Succeeded", + "releaseTrain": "Preview", + "scope": { + "cluster": { + "releaseNamespace": "kube-system" + } + }, + "statuses": [], + "version": "0.1.4" + }, + "systemData": { + "createdAt": "2021-09-08T05:10:57.027Z", + "createdBy": "string", + "createdByType": "Application", + "lastModifiedAt": "2021-09-08T05:10:57.027Z", + "lastModifiedBy": "string", + "lastModifiedByType": "Application" + } + }, + "headers": {} + } + }, + "operationId": "Extensions_Get", + "title": "Get Extension with Plan" +} diff --git a/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/extensions/examples/2024-11-01/ListExtensions.json b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/extensions/examples/2024-11-01/ListExtensions.json new file mode 100644 index 000000000000..ff9f00369302 --- /dev/null +++ b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/extensions/examples/2024-11-01/ListExtensions.json @@ -0,0 +1,119 @@ +{ + "parameters": { + "api-version": "2024-11-01", + "clusterName": "clusterName1", + "clusterResourceName": "connectedClusters", + "clusterRp": "Microsoft.Kubernetes", + "resourceGroupName": "rg1", + "subscriptionId": "subId1" + }, + "responses": { + "200": { + "body": { + "nextLink": null, + "value": [ + { + "name": "ClusterMonitor", + "type": "Microsoft.KubernetesConfiguration/extensions", + "id": "/subscriptions/subId1/resourceGroups/rg1/providers/Microsoft.Kubernetes/connectedClusters/clusterName1/providers/Microsoft.KubernetesConfiguration/extensions/ClusterMonitor", + "properties": { + "autoUpgradeMinorVersion": false, + "configurationSettings": { + "omsagent.env.clusterName": "clusterName1", + "omsagent.secret.wsid": "fakeTokenPlaceholder" + }, + "currentVersion": "0.1.4", + "extensionType": "azuremonitor-containers", + "isSystemExtension": false, + "provisioningState": "Succeeded", + "releaseTrain": "Preview", + "scope": { + "cluster": { + "releaseNamespace": "kube-system" + } + }, + "statuses": [], + "version": "0.1.4" + }, + "systemData": { + "createdAt": "2021-09-08T05:10:57.027Z", + "createdBy": "string", + "createdByType": "Application", + "lastModifiedAt": "2021-09-08T05:10:57.027Z", + "lastModifiedBy": "string", + "lastModifiedByType": "Application" + } + }, + { + "name": "App1Monitor", + "type": "Microsoft.KubernetesConfiguration/extensions", + "id": "/subscriptions/subId1/resourceGroups/rg1/providers/Microsoft.Kubernetes/connectedClusters/clusterName1/providers/Microsoft.KubernetesConfiguration/extensions/BackupVault01", + "properties": { + "autoUpgradeMinorVersion": true, + "configurationSettings": {}, + "currentVersion": "1.0.1", + "extensionType": "Microsoft.RecoveryServices/recoveryVault", + "isSystemExtension": false, + "provisioningState": "Succeeded", + "releaseTrain": "Stable", + "scope": { + "cluster": { + "releaseNamespace": "myKVNamespace" + } + }, + "statuses": [], + "version": null + }, + "systemData": { + "createdAt": "2021-09-08T04:09:23.011Z", + "createdBy": "string", + "createdByType": "Application", + "lastModifiedAt": "2021-09-08T04:09:23.011Z", + "lastModifiedBy": "string", + "lastModifiedByType": "Application" + } + }, + { + "name": "azureVote", + "type": "Microsoft.KubernetesConfiguration/extensions", + "id": "/subscriptions/subId1/resourceGroups/rg1/providers/Microsoft.Kubernetes/connectedClusters/clusterName1/providers/Microsoft.KubernetesConfiguration/extensions/azureVote", + "plan": { + "name": "azure-vote-standard", + "product": "azure-vote-standard-offer-id", + "publisher": "Microsoft" + }, + "properties": { + "autoUpgradeMinorVersion": false, + "configurationSettings": { + "omsagent.env.clusterName": "clusterName1", + "omsagent.secret.wsid": "fakeTokenPlaceholder" + }, + "currentVersion": "0.1.4", + "extensionType": "azure-vote", + "isSystemExtension": false, + "provisioningState": "Succeeded", + "releaseTrain": "Preview", + "scope": { + "cluster": { + "releaseNamespace": "kube-system" + } + }, + "statuses": [], + "version": "0.1.4" + }, + "systemData": { + "createdAt": "2021-09-08T05:10:57.027Z", + "createdBy": "string", + "createdByType": "Application", + "lastModifiedAt": "2021-09-08T05:10:57.027Z", + "lastModifiedBy": "string", + "lastModifiedByType": "Application" + } + } + ] + } + } + }, + "operationId": "Extensions_List", + "title": "List Extensions" +} diff --git a/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/extensions/examples/2024-11-01/PatchExtension.json b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/extensions/examples/2024-11-01/PatchExtension.json new file mode 100644 index 000000000000..01b63a173b11 --- /dev/null +++ b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/extensions/examples/2024-11-01/PatchExtension.json @@ -0,0 +1,77 @@ +{ + "parameters": { + "api-version": "2024-11-01", + "clusterName": "clusterName1", + "clusterResourceName": "connectedClusters", + "clusterRp": "Microsoft.Kubernetes", + "extensionName": "ClusterMonitor", + "patchExtension": { + "properties": { + "autoUpgradeMinorVersion": true, + "configurationProtectedSettings": { + "omsagent.secret.key": "secretKeyValue01" + }, + "configurationSettings": { + "omsagent.env.clusterName": "clusterName1", + "omsagent.secret.wsid": "fakeTokenPlaceholder" + }, + "releaseTrain": "Preview" + } + }, + "resourceGroupName": "rg1", + "subscriptionId": "subId1" + }, + "responses": { + "200": { + "description": "Extension properties from not updating any property values.", + "body": { + "properties": { + "autoUpgradeMinorVersion": true, + "configurationSettings": { + "omsagent.env.clusterName": "clusterName1", + "omsagent.secret.wsid": "fakeTokenPlaceholder" + }, + "extensionType": "azuremonitor-containers", + "provisioningState": "Succeeded", + "releaseTrain": "Preview", + "scope": { + "cluster": { + "releaseNamespace": "kube-system" + } + }, + "statuses": [], + "version": "0.1.4" + } + } + }, + "202": { + "description": "Extension properties and details of the Patch operation, including AsyncOperation url.", + "body": { + "properties": { + "autoUpgradeMinorVersion": true, + "configurationSettings": { + "omsagent.env.clusterName": "clusterName1", + "omsagent.secret.wsid": "fakeTokenPlaceholder" + }, + "extensionType": "azuremonitor-containers", + "provisioningState": "Updating", + "releaseTrain": "Preview", + "scope": { + "cluster": { + "releaseNamespace": "kube-system" + } + }, + "statuses": [], + "version": "0.1.4" + } + }, + "headers": { + "Azure-AsyncOperation": "http://management.azure.com/subscriptions/subId/resourceGroups/rg1/providers/Microsoft.Kubernetes/ConnectedClusters/clusterName1/providers/Microsoft.KubernetesConfiguration/extensions/ClusterMonitor/operations/operationId?api-version=2024-11-01", + "Operation-Location": "/subscriptions/subId1/resourceGroups/rg1/providers/Microsoft.Kubernetes/connectedClusters/clusterName1/providers/Microsoft.KubernetesConfiguration/extensions/ClusterMonitor/operations/operationId", + "x-ms-async-operation-timeout": "PT48H" + } + } + }, + "operationId": "Extensions_Update", + "title": "Update Extension" +} diff --git a/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/extensions/main.tsp b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/extensions/main.tsp new file mode 100644 index 000000000000..e19e534ebedb --- /dev/null +++ b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/extensions/main.tsp @@ -0,0 +1,43 @@ +/** + * PLEASE DO NOT REMOVE - USED FOR CONVERTER METRICS + * Generated by package: @autorest/openapi-to-typespec + * Parameters used: + * isFullCompatible: true + * guessResourceKey: false + * Version: 0.11.12 + * Date: 2026-01-07T08:37:06.379Z + */ +import "@typespec/rest"; +import "@typespec/versioning"; +import "@azure-tools/typespec-azure-core"; +import "@azure-tools/typespec-azure-resource-manager"; +import "./models.tsp"; +import "./back-compatible.tsp"; +import "./Extension.tsp"; + +using TypeSpec.Rest; +using TypeSpec.Http; +using Azure.ResourceManager.Foundations; +using Azure.Core; +using Azure.ResourceManager; +using TypeSpec.Versioning; +/** + * Use these APIs to create extension resources through ARM, for Kubernetes Clusters. + */ +#suppress "@azure-tools/typespec-azure-resource-manager/missing-operations-endpoint" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" +@armProviderNamespace +@service(#{ title: "ExtensionsClient" }) +@versioned(Versions) +// FIXME: Common type version v2 is not supported for now. Set to v3. +@armCommonTypesVersion(Azure.ResourceManager.CommonTypes.Versions.v3) +namespace Microsoft.KubernetesConfiguration; + +/** + * The available API versions. + */ +enum Versions { + /** + * The 2024-11-01 API version. + */ + v2024_11_01: "2024-11-01", +} diff --git a/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/extensions/models.tsp b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/extensions/models.tsp new file mode 100644 index 000000000000..86b86bf6dd58 --- /dev/null +++ b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/extensions/models.tsp @@ -0,0 +1,385 @@ +import "@typespec/rest"; +import "@typespec/http"; +import "@azure-tools/typespec-azure-resource-manager"; +import "@azure-tools/typespec-azure-core"; + +using TypeSpec.Rest; +using TypeSpec.Http; +using Azure.ResourceManager; +using Azure.ResourceManager.Foundations; + +namespace Microsoft.KubernetesConfiguration; + +/** + * The provisioning state of the resource. + */ +union ProvisioningState { + string, + + /** + * Succeeded + */ + Succeeded: "Succeeded", + + /** + * Failed + */ + Failed: "Failed", + + /** + * Canceled + */ + Canceled: "Canceled", + + /** + * Creating + */ + Creating: "Creating", + + /** + * Updating + */ + Updating: "Updating", + + /** + * Deleting + */ + Deleting: "Deleting", +} + +/** + * Level of the status. + */ +union LevelType { + string, + + /** + * Error + */ + Error: "Error", + + /** + * Warning + */ + Warning: "Warning", + + /** + * Information + */ + Information: "Information", +} + +/** + * The type of identity that created the resource. + */ +union CreatedByType { + string, + + /** + * User + */ + User: "User", + + /** + * Application + */ + Application: "Application", + + /** + * ManagedIdentity + */ + ManagedIdentity: "ManagedIdentity", + + /** + * Key + */ + Key: "Key", +} + +/** + * The identity type. + */ +#suppress "@azure-tools/typespec-azure-core/no-enum" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" +enum AKSIdentityType { + /** + * SystemAssigned + */ + SystemAssigned, + + /** + * UserAssigned + */ + UserAssigned, +} + +/** + * Properties of an Extension resource + */ +model ExtensionProperties { + /** + * Type of the Extension, of which this resource is an instance of. It must be one of the Extension Types registered with Microsoft.KubernetesConfiguration by the Extension publisher. + */ + extensionType?: string; + + /** + * Flag to note if this extension participates in auto upgrade of minor version, or not. + */ + autoUpgradeMinorVersion?: boolean = true; + + /** + * ReleaseTrain this extension participates in for auto-upgrade (e.g. Stable, Preview, etc.) - only if autoUpgradeMinorVersion is 'true'. + */ + releaseTrain?: string = "Stable"; + + /** + * User-specified version of the extension for this extension to 'pin'. To use 'version', autoUpgradeMinorVersion must be 'false'. + */ + #suppress "@azure-tools/typespec-azure-core/no-nullable" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + version?: string | null; + + /** + * Scope at which the extension is installed. + */ + scope?: Scope; + + /** + * Configuration settings, as name-value pairs for configuring this extension. + */ + #suppress "@azure-tools/typespec-azure-core/no-nullable" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + #suppress "@azure-tools/typespec-azure-resource-manager/arm-no-record" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + configurationSettings?: Record | null; + + /** + * Configuration settings that are sensitive, as name-value pairs for configuring this extension. + */ + #suppress "@azure-tools/typespec-azure-core/no-nullable" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + #suppress "@azure-tools/typespec-azure-resource-manager/arm-no-record" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + configurationProtectedSettings?: Record | null; + + /** + * Currently installed version of the extension. + */ + #suppress "@azure-tools/typespec-azure-core/no-nullable" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + @visibility(Lifecycle.Read) + currentVersion?: string | null; + + /** + * Status of installation of this extension. + */ + @visibility(Lifecycle.Read) + provisioningState?: ProvisioningState; + + /** + * Status from this extension. + */ + #suppress "@azure-tools/typespec-azure-core/no-nullable" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + statuses?: ExtensionStatus[] | null; + + /** + * Error information from the Agent - e.g. errors during installation. + */ + #suppress "@azure-tools/typespec-azure-core/no-nullable" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + @visibility(Lifecycle.Read) + errorInfo?: Azure.ResourceManager.CommonTypes.ErrorDetail | null; + + /** + * Custom Location settings properties. + */ + #suppress "@azure-tools/typespec-azure-core/no-nullable" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + #suppress "@azure-tools/typespec-azure-resource-manager/arm-no-record" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + @visibility(Lifecycle.Read) + customLocationSettings?: Record | null; + + /** + * Uri of the Helm package + */ + #suppress "@azure-tools/typespec-azure-core/no-nullable" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + @visibility(Lifecycle.Read) + packageUri?: string | null; + + /** + * Identity of the Extension resource in an AKS cluster + */ + #suppress "@azure-tools/typespec-azure-core/no-nullable" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + aksAssignedIdentity?: ExtensionPropertiesAksAssignedIdentity | null; + + /** + * Flag to note if this extension is a system extension + */ + @visibility(Lifecycle.Read) + isSystemExtension?: boolean = false; +} + +/** + * Scope of the extension. It can be either Cluster or Namespace; but not both. + */ +model Scope { + /** + * Specifies that the scope of the extension is Cluster + */ + #suppress "@azure-tools/typespec-azure-core/no-nullable" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + cluster?: ScopeCluster | null; + + /** + * Specifies that the scope of the extension is Namespace + */ + #suppress "@azure-tools/typespec-azure-core/no-nullable" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + `namespace`?: ScopeNamespace | null; +} + +/** + * Specifies that the scope of the extension is Cluster + */ +model ScopeCluster { + /** + * Namespace where the extension Release must be placed, for a Cluster scoped extension. If this namespace does not exist, it will be created + */ + releaseNamespace?: string; +} + +/** + * Specifies that the scope of the extension is Namespace + */ +model ScopeNamespace { + /** + * Namespace where the extension will be created for an Namespace scoped extension. If this namespace does not exist, it will be created + */ + targetNamespace?: string; +} + +/** + * Status from the extension. + */ +model ExtensionStatus { + /** + * Status code provided by the Extension + */ + code?: string; + + /** + * Short description of status of the extension. + */ + displayStatus?: string; + + /** + * Level of the status. + */ + level?: LevelType = LevelType.Information; + + /** + * Detailed message of the status from the Extension. + */ + message?: string; + + /** + * DateLiteral (per ISO8601) noting the time of installation status. + */ + time?: string; +} + +/** + * Identity of the Extension resource in an AKS cluster + */ +model ExtensionPropertiesAksAssignedIdentity { + /** + * The principal ID of resource identity. + */ + @visibility(Lifecycle.Read) + principalId?: string; + + /** + * The tenant ID of resource. + */ + @visibility(Lifecycle.Read) + tenantId?: string; + + /** + * The identity type. + */ + type?: AKSIdentityType; +} + +/** + * The Extension Patch Request object. + */ +model PatchExtension { + /** + * Updatable properties of an Extension Patch Request + */ + properties?: PatchExtensionProperties; +} + +/** + * Updatable properties of an Extension Patch Request + */ +model PatchExtensionProperties { + /** + * Flag to note if this extension participates in auto upgrade of minor version, or not. + */ + autoUpgradeMinorVersion?: boolean = true; + + /** + * ReleaseTrain this extension participates in for auto-upgrade (e.g. Stable, Preview, etc.) - only if autoUpgradeMinorVersion is 'true'. + */ + releaseTrain?: string = "Stable"; + + /** + * Version of the extension for this extension, if it is 'pinned' to a specific version. autoUpgradeMinorVersion must be 'false'. + */ + #suppress "@azure-tools/typespec-azure-core/no-nullable" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + version?: string | null; + + /** + * Configuration settings, as name-value pairs for configuring this extension. + */ + #suppress "@azure-tools/typespec-azure-core/no-nullable" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + #suppress "@azure-tools/typespec-azure-resource-manager/arm-no-record" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + configurationSettings?: Record | null; + + /** + * Configuration settings that are sensitive, as name-value pairs for configuring this extension. + */ + #suppress "@azure-tools/typespec-azure-core/no-nullable" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + #suppress "@azure-tools/typespec-azure-resource-manager/arm-no-record" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + @secret + configurationProtectedSettings?: Record | null; +} + +/** + * Result of the request to list Extensions. It contains a list of Extension objects and a URL link to get the next set of results. + */ +model ExtensionsList is Azure.Core.Page; + +/** + * The current status of an async operation. + */ +model OperationStatusResult { + /** + * Fully qualified ID for the async operation. + */ + id?: string; + + /** + * Name of the async operation. + */ + name?: string; + + /** + * Operation status. + */ + status: string; + + /** + * Additional information, if available. + */ + #suppress "@azure-tools/typespec-azure-core/no-nullable" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + #suppress "@azure-tools/typespec-azure-resource-manager/arm-no-record" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + properties?: Record | null; + + /** + * If present, details of the operation error. + */ + #suppress "@azure-tools/typespec-azure-core/no-nullable" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + @visibility(Lifecycle.Read) + error?: Azure.ResourceManager.CommonTypes.ErrorDetail | null; +} diff --git a/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/extensions/stable/2024-11-01/examples/CreateExtension.json b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/extensions/stable/2024-11-01/examples/CreateExtension.json index 86ca5e8ab086..a129db1f5f07 100644 --- a/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/extensions/stable/2024-11-01/examples/CreateExtension.json +++ b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/extensions/stable/2024-11-01/examples/CreateExtension.json @@ -1,111 +1,113 @@ { "parameters": { - "subscriptionId": "subId1", - "resourceGroupName": "rg1", - "clusterRp": "Microsoft.Kubernetes", - "clusterResourceName": "connectedClusters", - "extensionName": "ClusterMonitor", "api-version": "2024-11-01", "clusterName": "clusterName1", + "clusterResourceName": "connectedClusters", + "clusterRp": "Microsoft.Kubernetes", "extension": { "properties": { - "extensionType": "azuremonitor-containers", "autoUpgradeMinorVersion": true, + "configurationProtectedSettings": { + "omsagent.secret.key": "secretKeyValue01" + }, + "configurationSettings": { + "omsagent.env.clusterName": "clusterName1", + "omsagent.secret.wsid": "fakeTokenPlaceholder" + }, + "extensionType": "azuremonitor-containers", "releaseTrain": "Preview", "scope": { "cluster": { "releaseNamespace": "kube-system" } - }, - "configurationSettings": { - "omsagent.secret.wsid": "fakeTokenPlaceholder", - "omsagent.env.clusterName": "clusterName1" - }, - "configurationProtectedSettings": { - "omsagent.secret.key": "secretKeyValue01" } } - } + }, + "extensionName": "ClusterMonitor", + "resourceGroupName": "rg1", + "subscriptionId": "subId1" }, "responses": { - "201": { - "headers": { - "Operation-Location": "/subscriptions/subId1/resourceGroups/rg1/providers/Microsoft.Kubernetes/connectedClusters/clusterName1/providers/Microsoft.KubernetesConfiguration/extensions/ClusterMonitor/operations/{operationId}", - "x-ms-async-operation-timeout": "PT48H", - "Azure-AsyncOperation": "http://management.azure.com/subscriptions/subId/resourceGroups/rg1/providers/Microsoft.Kubernetes/ConnectedClusters/clusterName1/providers/Microsoft.KubernetesConfiguration/extensions/ClusterMonitor/operations/operationId?api-version=2024-11-01" - }, + "200": { "description": "Details of the Kubernetes Extension's current status.", "body": { - "id": "/subscriptions/subId1/resourceGroups/rg1/providers/Microsoft.Kubernetes/connectedClusters/clusterName1/providers/Microsoft.KubernetesConfiguration/extensions/ClusterMonitor", - "type": "Microsoft.KubernetesConfiguration/extensions", "name": "ClusterMonitor", - "systemData": { - "createdBy": "string", - "createdByType": "Application", - "createdAt": "2021-09-08T05:10:57.027Z", - "lastModifiedBy": "string", - "lastModifiedByType": "Application", - "lastModifiedAt": "2021-09-08T05:10:57.027Z" - }, + "type": "Microsoft.KubernetesConfiguration/extensions", + "id": "/subscriptions/subId1/resourceGroups/rg1/providers/Microsoft.Kubernetes/connectedClusters/clusterName1/providers/Microsoft.KubernetesConfiguration/extensions/ClusterMonitor", "properties": { - "extensionType": "azuremonitor-containers", "autoUpgradeMinorVersion": false, + "configurationSettings": { + "omsagent.env.clusterName": "clusterName1", + "omsagent.secret.wsid": "fakeTokenPlaceholder" + }, + "currentVersion": "0.1.4", + "extensionType": "azuremonitor-containers", + "isSystemExtension": false, + "provisioningState": "Succeeded", "releaseTrain": "Preview", - "version": "0.1.4", "scope": { "cluster": { "releaseNamespace": "kube-system" } }, - "configurationSettings": { - "omsagent.secret.wsid": "fakeTokenPlaceholder", - "omsagent.env.clusterName": "clusterName1" - }, - "provisioningState": "Creating", - "currentVersion": null, "statuses": [], - "isSystemExtension": false + "version": "0.1.4" + }, + "systemData": { + "createdAt": "2021-09-08T05:10:57.027Z", + "createdBy": "string", + "createdByType": "Application", + "lastModifiedAt": "2021-09-08T05:10:57.027Z", + "lastModifiedBy": "string", + "lastModifiedByType": "Application" } - } - }, - "200": { + }, "headers": { "Operation-Location": "/subscriptions/subId1/resourceGroups/rg1/providers/Microsoft.Kubernetes/connectedClusters/clusterName1/providers/Microsoft.KubernetesConfiguration/extensions/ClusterMonitor/operations/{operationId}", "x-ms-async-operation-timeout": "PT48H" - }, + } + }, + "201": { "description": "Details of the Kubernetes Extension's current status.", "body": { - "id": "/subscriptions/subId1/resourceGroups/rg1/providers/Microsoft.Kubernetes/connectedClusters/clusterName1/providers/Microsoft.KubernetesConfiguration/extensions/ClusterMonitor", - "type": "Microsoft.KubernetesConfiguration/extensions", "name": "ClusterMonitor", - "systemData": { - "createdBy": "string", - "createdByType": "Application", - "createdAt": "2021-09-08T05:10:57.027Z", - "lastModifiedBy": "string", - "lastModifiedByType": "Application", - "lastModifiedAt": "2021-09-08T05:10:57.027Z" - }, + "type": "Microsoft.KubernetesConfiguration/extensions", + "id": "/subscriptions/subId1/resourceGroups/rg1/providers/Microsoft.Kubernetes/connectedClusters/clusterName1/providers/Microsoft.KubernetesConfiguration/extensions/ClusterMonitor", "properties": { - "extensionType": "azuremonitor-containers", "autoUpgradeMinorVersion": false, + "configurationSettings": { + "omsagent.env.clusterName": "clusterName1", + "omsagent.secret.wsid": "fakeTokenPlaceholder" + }, + "currentVersion": null, + "extensionType": "azuremonitor-containers", + "isSystemExtension": false, + "provisioningState": "Creating", "releaseTrain": "Preview", - "version": "0.1.4", "scope": { "cluster": { "releaseNamespace": "kube-system" } }, - "configurationSettings": { - "omsagent.secret.wsid": "fakeTokenPlaceholder", - "omsagent.env.clusterName": "clusterName1" - }, - "provisioningState": "Succeeded", - "currentVersion": "0.1.4", "statuses": [], - "isSystemExtension": false + "version": "0.1.4" + }, + "systemData": { + "createdAt": "2021-09-08T05:10:57.027Z", + "createdBy": "string", + "createdByType": "Application", + "lastModifiedAt": "2021-09-08T05:10:57.027Z", + "lastModifiedBy": "string", + "lastModifiedByType": "Application" } + }, + "headers": { + "Azure-AsyncOperation": "http://management.azure.com/subscriptions/subId/resourceGroups/rg1/providers/Microsoft.Kubernetes/ConnectedClusters/clusterName1/providers/Microsoft.KubernetesConfiguration/extensions/ClusterMonitor/operations/operationId?api-version=2024-11-01", + "Operation-Location": "/subscriptions/subId1/resourceGroups/rg1/providers/Microsoft.Kubernetes/connectedClusters/clusterName1/providers/Microsoft.KubernetesConfiguration/extensions/ClusterMonitor/operations/{operationId}", + "x-ms-async-operation-timeout": "PT48H" } } - } + }, + "operationId": "Extensions_Create", + "title": "Create Extension" } diff --git a/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/extensions/stable/2024-11-01/examples/CreateExtensionWithPlan.json b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/extensions/stable/2024-11-01/examples/CreateExtensionWithPlan.json index 25405f30da36..c6369432a286 100644 --- a/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/extensions/stable/2024-11-01/examples/CreateExtensionWithPlan.json +++ b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/extensions/stable/2024-11-01/examples/CreateExtensionWithPlan.json @@ -1,106 +1,108 @@ { "parameters": { - "subscriptionId": "subId1", - "resourceGroupName": "rg1", - "clusterRp": "Microsoft.Kubernetes", - "clusterResourceName": "connectedClusters", - "extensionName": "azureVote", "api-version": "2024-11-01", "clusterName": "clusterName1", + "clusterResourceName": "connectedClusters", + "clusterRp": "Microsoft.Kubernetes", "extension": { + "plan": { + "name": "azure-vote-standard", + "product": "azure-vote-standard-offer-id", + "publisher": "Microsoft" + }, "properties": { - "extensionType": "azure-vote", "autoUpgradeMinorVersion": true, + "extensionType": "azure-vote", "releaseTrain": "Preview" - }, - "plan": { - "name": "azure-vote-standard", - "publisher": "Microsoft", - "product": "azure-vote-standard-offer-id" } - } + }, + "extensionName": "azureVote", + "resourceGroupName": "rg1", + "subscriptionId": "subId1" }, "responses": { - "201": { - "headers": { - "Operation-Location": "/subscriptions/subId1/resourceGroups/rg1/providers/Microsoft.Kubernetes/connectedClusters/clusterName1/providers/Microsoft.KubernetesConfiguration/extensions/azureVote/operations/{operationId}", - "x-ms-async-operation-timeout": "PT48H", - "Azure-AsyncOperation": "http://management.azure.com/subscriptions/subId/resourceGroups/rg1/providers/Microsoft.Kubernetes/ConnectedClusters/clusterName1/providers/Microsoft.KubernetesConfiguration/extensions/azureVote/operations/operationId?api-version=2024-11-01" - }, + "200": { "description": "Details of the Kubernetes Extension's current status.", "body": { - "id": "/subscriptions/subId1/resourceGroups/rg1/providers/Microsoft.Kubernetes/connectedClusters/clusterName1/providers/Microsoft.KubernetesConfiguration/extensions/azureVote", - "type": "Microsoft.KubernetesConfiguration/extensions", "name": "azureVote", - "systemData": { - "createdBy": "string", - "createdByType": "Application", - "createdAt": "2021-09-08T05:10:57.027Z", - "lastModifiedBy": "string", - "lastModifiedByType": "Application", - "lastModifiedAt": "2021-09-08T05:10:57.027Z" - }, + "type": "Microsoft.KubernetesConfiguration/extensions", + "id": "/subscriptions/subId1/resourceGroups/rg1/providers/Microsoft.Kubernetes/connectedClusters/clusterName1/providers/Microsoft.KubernetesConfiguration/extensions/azureVote", "plan": { "name": "azure-vote-standard", - "publisher": "Microsoft", - "product": "azure-vote-standard-offer-id" + "product": "azure-vote-standard-offer-id", + "publisher": "Microsoft" }, "properties": { - "extensionType": "azure-vote", "autoUpgradeMinorVersion": true, + "currentVersion": "0.1.4", + "extensionType": "azure-vote", + "isSystemExtension": false, + "provisioningState": "Creating", "releaseTrain": "Preview", - "version": "0.1.4", "scope": { "cluster": { "releaseNamespace": "kube-system" } }, - "provisioningState": "Creating", "statuses": [], - "currentVersion": null, - "isSystemExtension": false + "version": "0.1.4" + }, + "systemData": { + "createdAt": "2021-09-08T05:10:57.027Z", + "createdBy": "string", + "createdByType": "Application", + "lastModifiedAt": "2021-09-08T05:10:57.027Z", + "lastModifiedBy": "string", + "lastModifiedByType": "Application" } - } - }, - "200": { + }, "headers": { "Operation-Location": "/subscriptions/subId1/resourceGroups/rg1/providers/Microsoft.Kubernetes/connectedClusters/clusterName1/providers/Microsoft.KubernetesConfiguration/extensions/azureVote/operations/{operationId}", "x-ms-async-operation-timeout": "PT48H" - }, + } + }, + "201": { "description": "Details of the Kubernetes Extension's current status.", "body": { - "id": "/subscriptions/subId1/resourceGroups/rg1/providers/Microsoft.Kubernetes/connectedClusters/clusterName1/providers/Microsoft.KubernetesConfiguration/extensions/azureVote", - "type": "Microsoft.KubernetesConfiguration/extensions", "name": "azureVote", - "systemData": { - "createdBy": "string", - "createdByType": "Application", - "createdAt": "2021-09-08T05:10:57.027Z", - "lastModifiedBy": "string", - "lastModifiedByType": "Application", - "lastModifiedAt": "2021-09-08T05:10:57.027Z" - }, + "type": "Microsoft.KubernetesConfiguration/extensions", + "id": "/subscriptions/subId1/resourceGroups/rg1/providers/Microsoft.Kubernetes/connectedClusters/clusterName1/providers/Microsoft.KubernetesConfiguration/extensions/azureVote", "plan": { "name": "azure-vote-standard", - "publisher": "Microsoft", - "product": "azure-vote-standard-offer-id" + "product": "azure-vote-standard-offer-id", + "publisher": "Microsoft" }, "properties": { - "extensionType": "azure-vote", "autoUpgradeMinorVersion": true, + "currentVersion": null, + "extensionType": "azure-vote", + "isSystemExtension": false, + "provisioningState": "Creating", "releaseTrain": "Preview", - "version": "0.1.4", "scope": { "cluster": { "releaseNamespace": "kube-system" } }, - "provisioningState": "Creating", "statuses": [], - "currentVersion": "0.1.4", - "isSystemExtension": false + "version": "0.1.4" + }, + "systemData": { + "createdAt": "2021-09-08T05:10:57.027Z", + "createdBy": "string", + "createdByType": "Application", + "lastModifiedAt": "2021-09-08T05:10:57.027Z", + "lastModifiedBy": "string", + "lastModifiedByType": "Application" } + }, + "headers": { + "Azure-AsyncOperation": "http://management.azure.com/subscriptions/subId/resourceGroups/rg1/providers/Microsoft.Kubernetes/ConnectedClusters/clusterName1/providers/Microsoft.KubernetesConfiguration/extensions/azureVote/operations/operationId?api-version=2024-11-01", + "Operation-Location": "/subscriptions/subId1/resourceGroups/rg1/providers/Microsoft.Kubernetes/connectedClusters/clusterName1/providers/Microsoft.KubernetesConfiguration/extensions/azureVote/operations/{operationId}", + "x-ms-async-operation-timeout": "PT48H" } } - } + }, + "operationId": "Extensions_Create", + "title": "Create Extension with Plan" } diff --git a/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/extensions/stable/2024-11-01/examples/DeleteExtension.json b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/extensions/stable/2024-11-01/examples/DeleteExtension.json index 9b294adb4fd4..2c0a6bdfa3fb 100644 --- a/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/extensions/stable/2024-11-01/examples/DeleteExtension.json +++ b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/extensions/stable/2024-11-01/examples/DeleteExtension.json @@ -1,22 +1,24 @@ { "parameters": { - "subscriptionId": "subId1", - "resourceGroupName": "rg1", - "clusterRp": "Microsoft.Kubernetes", + "api-version": "2024-11-01", + "clusterName": "clusterName1", "clusterResourceName": "connectedClusters", + "clusterRp": "Microsoft.Kubernetes", "extensionName": "ClusterMonitor", - "api-version": "2024-11-01", - "clusterName": "clusterName1" + "resourceGroupName": "rg1", + "subscriptionId": "subId1" }, "responses": { + "200": {}, "202": { "headers": { - "Operation-Location": "/subscriptions/subId1/resourceGroups/rg1/providers/Microsoft.Kubernetes/connectedClusters/clusterName1/providers/Microsoft.KubernetesConfiguration/extensions/ClusterMonitor/operations/{operationId}", "Azure-AsyncOperation": "http://management.azure.com/subscriptions/subId/resourceGroups/rg1/providers/Microsoft.Kubernetes/ConnectedClusters/clusterName1/providers/Microsoft.KubernetesConfiguration/extensions/ClusterMonitor/operations/operationId?api-version=2024-11-01", + "Operation-Location": "/subscriptions/subId1/resourceGroups/rg1/providers/Microsoft.Kubernetes/connectedClusters/clusterName1/providers/Microsoft.KubernetesConfiguration/extensions/ClusterMonitor/operations/{operationId}", "x-ms-async-operation-timeout": "PT1H" } }, - "200": {}, "204": {} - } + }, + "operationId": "Extensions_Delete", + "title": "Delete Extension" } diff --git a/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/extensions/stable/2024-11-01/examples/GetExtension.json b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/extensions/stable/2024-11-01/examples/GetExtension.json index 499ca6b52236..ee6e83fe45ce 100644 --- a/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/extensions/stable/2024-11-01/examples/GetExtension.json +++ b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/extensions/stable/2024-11-01/examples/GetExtension.json @@ -1,49 +1,51 @@ { "parameters": { - "subscriptionId": "subId1", - "resourceGroupName": "rg1", - "clusterRp": "Microsoft.Kubernetes", + "api-version": "2024-11-01", + "clusterName": "clusterName1", "clusterResourceName": "connectedClusters", + "clusterRp": "Microsoft.Kubernetes", "extensionName": "ClusterMonitor", - "api-version": "2024-11-01", - "clusterName": "clusterName1" + "resourceGroupName": "rg1", + "subscriptionId": "subId1" }, "responses": { "200": { - "headers": {}, "description": "Details of the Kubernetes Extension's current status.", "body": { - "id": "/subscriptions/subId1/resourceGroups/rg1/providers/Microsoft.Kubernetes/connectedClusters/clusterName1/providers/Microsoft.KubernetesConfiguration/extensions/ClusterMonitor", - "type": "Microsoft.KubernetesConfiguration/extensions", "name": "ClusterMonitor", - "systemData": { - "createdBy": "string", - "createdByType": "Application", - "createdAt": "2021-09-08T05:10:57.027Z", - "lastModifiedBy": "string", - "lastModifiedByType": "Application", - "lastModifiedAt": "2021-09-08T05:10:57.027Z" - }, + "type": "Microsoft.KubernetesConfiguration/extensions", + "id": "/subscriptions/subId1/resourceGroups/rg1/providers/Microsoft.Kubernetes/connectedClusters/clusterName1/providers/Microsoft.KubernetesConfiguration/extensions/ClusterMonitor", "properties": { - "extensionType": "azuremonitor-containers", "autoUpgradeMinorVersion": false, + "configurationSettings": { + "omsagent.env.clusterName": "clusterName1", + "omsagent.secret.wsid": "fakeTokenPlaceholder" + }, + "currentVersion": "0.1.4", + "extensionType": "azuremonitor-containers", + "isSystemExtension": false, + "provisioningState": "Succeeded", "releaseTrain": "Preview", - "version": "0.1.4", "scope": { "cluster": { "releaseNamespace": "kube-system" } }, - "configurationSettings": { - "omsagent.secret.wsid": "fakeTokenPlaceholder", - "omsagent.env.clusterName": "clusterName1" - }, - "provisioningState": "Succeeded", - "currentVersion": "0.1.4", "statuses": [], - "isSystemExtension": false + "version": "0.1.4" + }, + "systemData": { + "createdAt": "2021-09-08T05:10:57.027Z", + "createdBy": "string", + "createdByType": "Application", + "lastModifiedAt": "2021-09-08T05:10:57.027Z", + "lastModifiedBy": "string", + "lastModifiedByType": "Application" } - } + }, + "headers": {} } - } + }, + "operationId": "Extensions_Get", + "title": "Get Extension" } diff --git a/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/extensions/stable/2024-11-01/examples/GetExtensionAsyncOperationStatus.json b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/extensions/stable/2024-11-01/examples/GetExtensionAsyncOperationStatus.json index 99452f9b8a87..bdd8f220c122 100644 --- a/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/extensions/stable/2024-11-01/examples/GetExtensionAsyncOperationStatus.json +++ b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/extensions/stable/2024-11-01/examples/GetExtensionAsyncOperationStatus.json @@ -1,24 +1,26 @@ { "parameters": { - "subscriptionId": "subId1", - "resourceGroupName": "rg1", - "clusterRp": "Microsoft.Kubernetes", - "clusterResourceName": "connectedClusters", - "extensionName": "ClusterMonitor", + "operationId": "99999999-9999-9999-9999-999999999999", "api-version": "2024-11-01", "clusterName": "clusterName1", - "operationId": "99999999-9999-9999-9999-999999999999" + "clusterResourceName": "connectedClusters", + "clusterRp": "Microsoft.Kubernetes", + "extensionName": "ClusterMonitor", + "resourceGroupName": "rg1", + "subscriptionId": "subId1" }, "responses": { "200": { - "headers": {}, "body": { - "id": "/subscriptions/subId1/resourceGroups/rg1/providers/Microsoft.Kubernetes/connectedClusters/clusterName1/providers/Microsoft.KubernetesConfiguration/extensions/ClusterMonitor/operations/99999999-9999-9999-9999-999999999999", "name": "99999999-9999-9999-9999-999999999999", - "status": "Succeeded", + "error": null, + "id": "/subscriptions/subId1/resourceGroups/rg1/providers/Microsoft.Kubernetes/connectedClusters/clusterName1/providers/Microsoft.KubernetesConfiguration/extensions/ClusterMonitor/operations/99999999-9999-9999-9999-999999999999", "properties": {}, - "error": null - } + "status": "Succeeded" + }, + "headers": {} } - } + }, + "operationId": "OperationStatus_Get", + "title": "ExtensionAsyncOperationStatus Get" } diff --git a/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/extensions/stable/2024-11-01/examples/GetExtensionWithPlan.json b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/extensions/stable/2024-11-01/examples/GetExtensionWithPlan.json index 3f1a78625597..5a1e48ae7103 100644 --- a/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/extensions/stable/2024-11-01/examples/GetExtensionWithPlan.json +++ b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/extensions/stable/2024-11-01/examples/GetExtensionWithPlan.json @@ -1,54 +1,56 @@ { "parameters": { - "subscriptionId": "subId1", - "resourceGroupName": "rg1", - "clusterRp": "Microsoft.Kubernetes", + "api-version": "2024-11-01", + "clusterName": "clusterName1", "clusterResourceName": "connectedClusters", + "clusterRp": "Microsoft.Kubernetes", "extensionName": "azureVote", - "api-version": "2024-11-01", - "clusterName": "clusterName1" + "resourceGroupName": "rg1", + "subscriptionId": "subId1" }, "responses": { "200": { - "headers": {}, "description": "Details of the Kubernetes Extension's current status.", "body": { - "id": "/subscriptions/subId1/resourceGroups/rg1/providers/Microsoft.Kubernetes/connectedClusters/clusterName1/providers/Microsoft.KubernetesConfiguration/extensions/azureVote", - "type": "Microsoft.KubernetesConfiguration/extensions", "name": "azureVote", - "systemData": { - "createdBy": "string", - "createdByType": "Application", - "createdAt": "2021-09-08T05:10:57.027Z", - "lastModifiedBy": "string", - "lastModifiedByType": "Application", - "lastModifiedAt": "2021-09-08T05:10:57.027Z" - }, + "type": "Microsoft.KubernetesConfiguration/extensions", + "id": "/subscriptions/subId1/resourceGroups/rg1/providers/Microsoft.Kubernetes/connectedClusters/clusterName1/providers/Microsoft.KubernetesConfiguration/extensions/azureVote", "plan": { "name": "azure-vote-standard", - "publisher": "Microsoft", - "product": "azure-vote-standard-offer-id" + "product": "azure-vote-standard-offer-id", + "publisher": "Microsoft" }, "properties": { - "extensionType": "azure-vote", "autoUpgradeMinorVersion": false, + "configurationSettings": { + "omsagent.env.clusterName": "clusterName1", + "omsagent.secret.wsid": "fakeTokenPlaceholder" + }, + "currentVersion": "0.1.4", + "extensionType": "azure-vote", + "isSystemExtension": false, + "provisioningState": "Succeeded", "releaseTrain": "Preview", - "version": "0.1.4", "scope": { "cluster": { "releaseNamespace": "kube-system" } }, - "configurationSettings": { - "omsagent.secret.wsid": "fakeTokenPlaceholder", - "omsagent.env.clusterName": "clusterName1" - }, - "provisioningState": "Succeeded", - "currentVersion": "0.1.4", "statuses": [], - "isSystemExtension": false + "version": "0.1.4" + }, + "systemData": { + "createdAt": "2021-09-08T05:10:57.027Z", + "createdBy": "string", + "createdByType": "Application", + "lastModifiedAt": "2021-09-08T05:10:57.027Z", + "lastModifiedBy": "string", + "lastModifiedByType": "Application" } - } + }, + "headers": {} } - } + }, + "operationId": "Extensions_Get", + "title": "Get Extension with Plan" } diff --git a/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/extensions/stable/2024-11-01/examples/ListExtensions.json b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/extensions/stable/2024-11-01/examples/ListExtensions.json index c8ba347519ba..ff9f00369302 100644 --- a/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/extensions/stable/2024-11-01/examples/ListExtensions.json +++ b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/extensions/stable/2024-11-01/examples/ListExtensions.json @@ -1,117 +1,119 @@ { "parameters": { - "subscriptionId": "subId1", - "resourceGroupName": "rg1", - "clusterRp": "Microsoft.Kubernetes", - "clusterResourceName": "connectedClusters", "api-version": "2024-11-01", - "clusterName": "clusterName1" + "clusterName": "clusterName1", + "clusterResourceName": "connectedClusters", + "clusterRp": "Microsoft.Kubernetes", + "resourceGroupName": "rg1", + "subscriptionId": "subId1" }, "responses": { "200": { "body": { + "nextLink": null, "value": [ { - "id": "/subscriptions/subId1/resourceGroups/rg1/providers/Microsoft.Kubernetes/connectedClusters/clusterName1/providers/Microsoft.KubernetesConfiguration/extensions/ClusterMonitor", - "type": "Microsoft.KubernetesConfiguration/extensions", "name": "ClusterMonitor", - "systemData": { - "createdBy": "string", - "createdByType": "Application", - "createdAt": "2021-09-08T05:10:57.027Z", - "lastModifiedBy": "string", - "lastModifiedByType": "Application", - "lastModifiedAt": "2021-09-08T05:10:57.027Z" - }, + "type": "Microsoft.KubernetesConfiguration/extensions", + "id": "/subscriptions/subId1/resourceGroups/rg1/providers/Microsoft.Kubernetes/connectedClusters/clusterName1/providers/Microsoft.KubernetesConfiguration/extensions/ClusterMonitor", "properties": { - "extensionType": "azuremonitor-containers", "autoUpgradeMinorVersion": false, + "configurationSettings": { + "omsagent.env.clusterName": "clusterName1", + "omsagent.secret.wsid": "fakeTokenPlaceholder" + }, + "currentVersion": "0.1.4", + "extensionType": "azuremonitor-containers", + "isSystemExtension": false, + "provisioningState": "Succeeded", "releaseTrain": "Preview", - "version": "0.1.4", "scope": { "cluster": { "releaseNamespace": "kube-system" } }, - "configurationSettings": { - "omsagent.secret.wsid": "fakeTokenPlaceholder", - "omsagent.env.clusterName": "clusterName1" - }, - "provisioningState": "Succeeded", - "currentVersion": "0.1.4", "statuses": [], - "isSystemExtension": false - } - }, - { - "id": "/subscriptions/subId1/resourceGroups/rg1/providers/Microsoft.Kubernetes/connectedClusters/clusterName1/providers/Microsoft.KubernetesConfiguration/extensions/BackupVault01", - "type": "Microsoft.KubernetesConfiguration/extensions", - "name": "App1Monitor", + "version": "0.1.4" + }, "systemData": { + "createdAt": "2021-09-08T05:10:57.027Z", "createdBy": "string", "createdByType": "Application", - "createdAt": "2021-09-08T04:09:23.011Z", + "lastModifiedAt": "2021-09-08T05:10:57.027Z", "lastModifiedBy": "string", - "lastModifiedByType": "Application", - "lastModifiedAt": "2021-09-08T04:09:23.011Z" - }, + "lastModifiedByType": "Application" + } + }, + { + "name": "App1Monitor", + "type": "Microsoft.KubernetesConfiguration/extensions", + "id": "/subscriptions/subId1/resourceGroups/rg1/providers/Microsoft.Kubernetes/connectedClusters/clusterName1/providers/Microsoft.KubernetesConfiguration/extensions/BackupVault01", "properties": { - "extensionType": "Microsoft.RecoveryServices/recoveryVault", "autoUpgradeMinorVersion": true, + "configurationSettings": {}, + "currentVersion": "1.0.1", + "extensionType": "Microsoft.RecoveryServices/recoveryVault", + "isSystemExtension": false, + "provisioningState": "Succeeded", "releaseTrain": "Stable", - "version": null, "scope": { "cluster": { "releaseNamespace": "myKVNamespace" } }, - "configurationSettings": {}, - "provisioningState": "Succeeded", - "currentVersion": "1.0.1", "statuses": [], - "isSystemExtension": false - } - }, - { - "id": "/subscriptions/subId1/resourceGroups/rg1/providers/Microsoft.Kubernetes/connectedClusters/clusterName1/providers/Microsoft.KubernetesConfiguration/extensions/azureVote", - "type": "Microsoft.KubernetesConfiguration/extensions", - "name": "azureVote", + "version": null + }, "systemData": { + "createdAt": "2021-09-08T04:09:23.011Z", "createdBy": "string", "createdByType": "Application", - "createdAt": "2021-09-08T05:10:57.027Z", + "lastModifiedAt": "2021-09-08T04:09:23.011Z", "lastModifiedBy": "string", - "lastModifiedByType": "Application", - "lastModifiedAt": "2021-09-08T05:10:57.027Z" - }, + "lastModifiedByType": "Application" + } + }, + { + "name": "azureVote", + "type": "Microsoft.KubernetesConfiguration/extensions", + "id": "/subscriptions/subId1/resourceGroups/rg1/providers/Microsoft.Kubernetes/connectedClusters/clusterName1/providers/Microsoft.KubernetesConfiguration/extensions/azureVote", "plan": { "name": "azure-vote-standard", - "publisher": "Microsoft", - "product": "azure-vote-standard-offer-id" + "product": "azure-vote-standard-offer-id", + "publisher": "Microsoft" }, "properties": { - "extensionType": "azure-vote", "autoUpgradeMinorVersion": false, + "configurationSettings": { + "omsagent.env.clusterName": "clusterName1", + "omsagent.secret.wsid": "fakeTokenPlaceholder" + }, + "currentVersion": "0.1.4", + "extensionType": "azure-vote", + "isSystemExtension": false, + "provisioningState": "Succeeded", "releaseTrain": "Preview", - "version": "0.1.4", "scope": { "cluster": { "releaseNamespace": "kube-system" } }, - "configurationSettings": { - "omsagent.secret.wsid": "fakeTokenPlaceholder", - "omsagent.env.clusterName": "clusterName1" - }, - "provisioningState": "Succeeded", - "currentVersion": "0.1.4", "statuses": [], - "isSystemExtension": false + "version": "0.1.4" + }, + "systemData": { + "createdAt": "2021-09-08T05:10:57.027Z", + "createdBy": "string", + "createdByType": "Application", + "lastModifiedAt": "2021-09-08T05:10:57.027Z", + "lastModifiedBy": "string", + "lastModifiedByType": "Application" } } - ], - "nextLink": null + ] } } - } + }, + "operationId": "Extensions_List", + "title": "List Extensions" } diff --git a/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/extensions/stable/2024-11-01/examples/PatchExtension.json b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/extensions/stable/2024-11-01/examples/PatchExtension.json index fe36f9429e84..01b63a173b11 100644 --- a/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/extensions/stable/2024-11-01/examples/PatchExtension.json +++ b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/extensions/stable/2024-11-01/examples/PatchExtension.json @@ -1,75 +1,77 @@ { "parameters": { - "subscriptionId": "subId1", - "resourceGroupName": "rg1", - "clusterRp": "Microsoft.Kubernetes", - "clusterResourceName": "connectedClusters", - "extensionName": "ClusterMonitor", "api-version": "2024-11-01", "clusterName": "clusterName1", + "clusterResourceName": "connectedClusters", + "clusterRp": "Microsoft.Kubernetes", + "extensionName": "ClusterMonitor", "patchExtension": { "properties": { "autoUpgradeMinorVersion": true, - "releaseTrain": "Preview", - "configurationSettings": { - "omsagent.secret.wsid": "fakeTokenPlaceholder", - "omsagent.env.clusterName": "clusterName1" - }, "configurationProtectedSettings": { "omsagent.secret.key": "secretKeyValue01" - } + }, + "configurationSettings": { + "omsagent.env.clusterName": "clusterName1", + "omsagent.secret.wsid": "fakeTokenPlaceholder" + }, + "releaseTrain": "Preview" } - } + }, + "resourceGroupName": "rg1", + "subscriptionId": "subId1" }, "responses": { "200": { "description": "Extension properties from not updating any property values.", "body": { "properties": { - "extensionType": "azuremonitor-containers", "autoUpgradeMinorVersion": true, + "configurationSettings": { + "omsagent.env.clusterName": "clusterName1", + "omsagent.secret.wsid": "fakeTokenPlaceholder" + }, + "extensionType": "azuremonitor-containers", + "provisioningState": "Succeeded", "releaseTrain": "Preview", - "version": "0.1.4", "scope": { "cluster": { "releaseNamespace": "kube-system" } }, - "configurationSettings": { - "omsagent.secret.wsid": "fakeTokenPlaceholder", - "omsagent.env.clusterName": "clusterName1" - }, - "provisioningState": "Succeeded", - "statuses": [] + "statuses": [], + "version": "0.1.4" } } }, "202": { - "headers": { - "Operation-Location": "/subscriptions/subId1/resourceGroups/rg1/providers/Microsoft.Kubernetes/connectedClusters/clusterName1/providers/Microsoft.KubernetesConfiguration/extensions/ClusterMonitor/operations/operationId", - "x-ms-async-operation-timeout": "PT48H", - "Azure-AsyncOperation": "http://management.azure.com/subscriptions/subId/resourceGroups/rg1/providers/Microsoft.Kubernetes/ConnectedClusters/clusterName1/providers/Microsoft.KubernetesConfiguration/extensions/ClusterMonitor/operations/operationId?api-version=2024-11-01" - }, "description": "Extension properties and details of the Patch operation, including AsyncOperation url.", "body": { "properties": { - "extensionType": "azuremonitor-containers", "autoUpgradeMinorVersion": true, + "configurationSettings": { + "omsagent.env.clusterName": "clusterName1", + "omsagent.secret.wsid": "fakeTokenPlaceholder" + }, + "extensionType": "azuremonitor-containers", + "provisioningState": "Updating", "releaseTrain": "Preview", - "version": "0.1.4", "scope": { "cluster": { "releaseNamespace": "kube-system" } }, - "configurationSettings": { - "omsagent.secret.wsid": "fakeTokenPlaceholder", - "omsagent.env.clusterName": "clusterName1" - }, - "provisioningState": "Updating", - "statuses": [] + "statuses": [], + "version": "0.1.4" } + }, + "headers": { + "Azure-AsyncOperation": "http://management.azure.com/subscriptions/subId/resourceGroups/rg1/providers/Microsoft.Kubernetes/ConnectedClusters/clusterName1/providers/Microsoft.KubernetesConfiguration/extensions/ClusterMonitor/operations/operationId?api-version=2024-11-01", + "Operation-Location": "/subscriptions/subId1/resourceGroups/rg1/providers/Microsoft.Kubernetes/connectedClusters/clusterName1/providers/Microsoft.KubernetesConfiguration/extensions/ClusterMonitor/operations/operationId", + "x-ms-async-operation-timeout": "PT48H" } } - } + }, + "operationId": "Extensions_Update", + "title": "Update Extension" } diff --git a/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/extensions/stable/2024-11-01/extensions.json b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/extensions/stable/2024-11-01/extensions.json index 8195f3510c52..814c9855982e 100644 --- a/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/extensions/stable/2024-11-01/extensions.json +++ b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/extensions/stable/2024-11-01/extensions.json @@ -1,18 +1,23 @@ { "swagger": "2.0", "info": { - "version": "2024-11-01", "title": "ExtensionsClient", - "description": "Use these APIs to create extension resources through ARM, for Kubernetes Clusters." + "version": "2024-11-01", + "description": "Use these APIs to create extension resources through ARM, for Kubernetes Clusters.", + "x-typespec-generated": [ + { + "emitter": "@azure-tools/typespec-autorest" + } + ] }, - "host": "management.azure.com", "schemes": [ "https" ], - "consumes": [ + "host": "management.azure.com", + "produces": [ "application/json" ], - "produces": [ + "consumes": [ "application/json" ], "security": [ @@ -25,428 +30,739 @@ "securityDefinitions": { "azure_auth": { "type": "oauth2", - "authorizationUrl": "https://login.microsoftonline.com/common/oauth2/authorize", + "description": "Azure Active Directory OAuth2 Flow.", "flow": "implicit", - "description": "Azure Active Directory OAuth2 Flow", + "authorizationUrl": "https://login.microsoftonline.com/common/oauth2/authorize", "scopes": { "user_impersonation": "impersonate your user account" } } }, + "tags": [ + { + "name": "Extensions" + }, + { + "name": "ClusterExtensions" + }, + { + "name": "Extension Operation Status" + } + ], "paths": { - "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{clusterRp}/{clusterResourceName}/{clusterName}/providers/Microsoft.KubernetesConfiguration/extensions/{extensionName}": { - "put": { + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{clusterRp}/{clusterResourceName}/{clusterName}/providers/Microsoft.KubernetesConfiguration/extensions": { + "get": { + "operationId": "Extensions_List", "tags": [ "Extensions", "ClusterExtensions" ], - "description": "Create a new Kubernetes Cluster Extension.", - "operationId": "Extensions_Create", - "x-ms-examples": { - "Create Extension": { - "$ref": "./examples/CreateExtension.json" - }, - "Create Extension with Plan": { - "$ref": "./examples/CreateExtensionWithPlan.json" - } - }, + "description": "List all Extensions in the cluster.", "parameters": [ { - "$ref": "../../../../../../common-types/resource-management/v2/types.json#/parameters/SubscriptionIdParameter" - }, - { - "$ref": "../../../../../../common-types/resource-management/v2/types.json#/parameters/ResourceGroupNameParameter" + "$ref": "../../../../../../common-types/resource-management/v3/types.json#/parameters/ApiVersionParameter" }, { - "$ref": "../../../common/2023-05-01-preview/parameters.json#/parameters/ClusterRpParameter" + "$ref": "../../../../../../common-types/resource-management/v3/types.json#/parameters/SubscriptionIdParameter" }, { - "$ref": "../../../common/2023-05-01-preview/parameters.json#/parameters/ClusterResourceNameParameter" + "$ref": "../../../../../../common-types/resource-management/v3/types.json#/parameters/ResourceGroupNameParameter" }, { - "$ref": "../../../common/2023-05-01-preview/parameters.json#/parameters/ClusterNameParameter" - }, - { - "$ref": "#/parameters/ExtensionNameParameter" + "name": "clusterRp", + "in": "path", + "description": "The Kubernetes cluster RP - i.e. Microsoft.ContainerService, Microsoft.Kubernetes, Microsoft.HybridContainerService.", + "required": true, + "type": "string" }, { - "$ref": "../../../../../../common-types/resource-management/v2/types.json#/parameters/ApiVersionParameter" + "name": "clusterResourceName", + "in": "path", + "description": "The Kubernetes cluster resource name - i.e. managedClusters, connectedClusters, provisionedClusters, appliances.", + "required": true, + "type": "string", + "pattern": "^[a-zA-Z]*$" }, { - "name": "extension", - "in": "body", + "name": "clusterName", + "in": "path", + "description": "The name of the kubernetes cluster.", "required": true, - "schema": { - "$ref": "#/definitions/Extension" - }, - "description": "Properties necessary to Create an Extension." + "type": "string", + "pattern": "^.*" } ], "responses": { - "201": { - "description": "Request received successfully.", - "schema": { - "$ref": "#/definitions/Extension" - } - }, "200": { - "description": "Request received successfully for an existing resource.", + "description": "Azure operation completed successfully.", "schema": { - "$ref": "#/definitions/Extension" + "$ref": "#/definitions/ExtensionsList" } }, "default": { - "description": "Error response describing why the operation failed.", + "description": "An unexpected error response.", "schema": { - "$ref": "../../../../../../common-types/resource-management/v2/types.json#/definitions/ErrorResponse" + "$ref": "../../../../../../common-types/resource-management/v3/types.json#/definitions/ErrorResponse" } } }, - "x-ms-long-running-operation": true, - "x-ms-long-running-operation-options": { - "final-state-via": "azure-async-operation" + "x-ms-examples": { + "List Extensions": { + "$ref": "./examples/ListExtensions.json" + } + }, + "x-ms-pageable": { + "nextLinkName": "nextLink" } - }, + } + }, + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{clusterRp}/{clusterResourceName}/{clusterName}/providers/Microsoft.KubernetesConfiguration/extensions/{extensionName}": { "get": { + "operationId": "Extensions_Get", "tags": [ "Extensions", "ClusterExtensions" ], "description": "Gets Kubernetes Cluster Extension.", - "operationId": "Extensions_Get", - "x-ms-examples": { - "Get Extension": { - "$ref": "./examples/GetExtension.json" - }, - "Get Extension with Plan": { - "$ref": "./examples/GetExtensionWithPlan.json" - } - }, "parameters": [ { - "$ref": "../../../../../../common-types/resource-management/v2/types.json#/parameters/SubscriptionIdParameter" + "$ref": "../../../../../../common-types/resource-management/v3/types.json#/parameters/ApiVersionParameter" }, { - "$ref": "../../../../../../common-types/resource-management/v2/types.json#/parameters/ResourceGroupNameParameter" + "$ref": "../../../../../../common-types/resource-management/v3/types.json#/parameters/SubscriptionIdParameter" }, { - "$ref": "../../../common/2023-05-01-preview/parameters.json#/parameters/ClusterRpParameter" + "$ref": "../../../../../../common-types/resource-management/v3/types.json#/parameters/ResourceGroupNameParameter" }, { - "$ref": "../../../common/2023-05-01-preview/parameters.json#/parameters/ClusterResourceNameParameter" + "name": "clusterRp", + "in": "path", + "description": "The Kubernetes cluster RP - i.e. Microsoft.ContainerService, Microsoft.Kubernetes, Microsoft.HybridContainerService.", + "required": true, + "type": "string" }, { - "$ref": "../../../common/2023-05-01-preview/parameters.json#/parameters/ClusterNameParameter" + "name": "clusterResourceName", + "in": "path", + "description": "The Kubernetes cluster resource name - i.e. managedClusters, connectedClusters, provisionedClusters, appliances.", + "required": true, + "type": "string", + "pattern": "^[a-zA-Z]*$" }, { - "$ref": "#/parameters/ExtensionNameParameter" + "name": "clusterName", + "in": "path", + "description": "The name of the kubernetes cluster.", + "required": true, + "type": "string", + "pattern": "^.*" }, { - "$ref": "../../../../../../common-types/resource-management/v2/types.json#/parameters/ApiVersionParameter" + "name": "extensionName", + "in": "path", + "description": "Name of the Extension.", + "required": true, + "type": "string" } ], "responses": { "200": { - "description": "OK", + "description": "Azure operation completed successfully.", "schema": { "$ref": "#/definitions/Extension" } }, "default": { - "description": "Error response describing why the operation failed.", + "description": "An unexpected error response.", "schema": { - "$ref": "../../../../../../common-types/resource-management/v2/types.json#/definitions/ErrorResponse" + "$ref": "../../../../../../common-types/resource-management/v3/types.json#/definitions/ErrorResponse" } } + }, + "x-ms-examples": { + "Get Extension": { + "$ref": "./examples/GetExtension.json" + }, + "Get Extension with Plan": { + "$ref": "./examples/GetExtensionWithPlan.json" + } } }, - "delete": { + "put": { + "operationId": "Extensions_Create", "tags": [ "Extensions", "ClusterExtensions" ], - "description": "Delete a Kubernetes Cluster Extension. This will cause the Agent to Uninstall the extension from the cluster.", - "operationId": "Extensions_Delete", - "x-ms-examples": { - "Delete Extension": { - "$ref": "./examples/DeleteExtension.json" - } - }, + "description": "Create a new Kubernetes Cluster Extension.", "parameters": [ { - "$ref": "../../../../../../common-types/resource-management/v2/types.json#/parameters/SubscriptionIdParameter" + "$ref": "../../../../../../common-types/resource-management/v3/types.json#/parameters/ApiVersionParameter" }, { - "$ref": "../../../../../../common-types/resource-management/v2/types.json#/parameters/ResourceGroupNameParameter" + "$ref": "../../../../../../common-types/resource-management/v3/types.json#/parameters/SubscriptionIdParameter" }, { - "$ref": "../../../common/2023-05-01-preview/parameters.json#/parameters/ClusterRpParameter" + "$ref": "../../../../../../common-types/resource-management/v3/types.json#/parameters/ResourceGroupNameParameter" }, { - "$ref": "../../../common/2023-05-01-preview/parameters.json#/parameters/ClusterResourceNameParameter" + "name": "clusterRp", + "in": "path", + "description": "The Kubernetes cluster RP - i.e. Microsoft.ContainerService, Microsoft.Kubernetes, Microsoft.HybridContainerService.", + "required": true, + "type": "string" }, { - "$ref": "../../../common/2023-05-01-preview/parameters.json#/parameters/ClusterNameParameter" + "name": "clusterResourceName", + "in": "path", + "description": "The Kubernetes cluster resource name - i.e. managedClusters, connectedClusters, provisionedClusters, appliances.", + "required": true, + "type": "string", + "pattern": "^[a-zA-Z]*$" }, { - "$ref": "#/parameters/ExtensionNameParameter" + "name": "clusterName", + "in": "path", + "description": "The name of the kubernetes cluster.", + "required": true, + "type": "string", + "pattern": "^.*" }, { - "$ref": "../../../../../../common-types/resource-management/v2/types.json#/parameters/ApiVersionParameter" + "name": "extensionName", + "in": "path", + "description": "Name of the Extension.", + "required": true, + "type": "string" }, { - "name": "forceDelete", - "in": "query", - "description": "Delete the extension resource in Azure - not the normal asynchronous delete.", - "type": "boolean" + "name": "extension", + "in": "body", + "description": "Properties necessary to Create an Extension.", + "required": true, + "schema": { + "$ref": "#/definitions/Extension" + } } ], "responses": { "200": { - "description": "OK" - }, - "202": { - "description": "Accepted. The request has been accepted for processing." + "description": "Resource 'Extension' update operation succeeded", + "schema": { + "$ref": "#/definitions/Extension" + } }, - "204": { - "description": "No Content. The request has been accepted but the extension was not found." + "201": { + "description": "Resource 'Extension' create operation succeeded", + "schema": { + "$ref": "#/definitions/Extension" + }, + "headers": { + "Azure-AsyncOperation": { + "type": "string", + "description": "A link to the status monitor" + }, + "Retry-After": { + "type": "integer", + "format": "int32", + "description": "The Retry-After header can indicate how long the client should wait before polling the operation status." + } + } }, "default": { - "description": "Error response describing why the operation failed.", + "description": "An unexpected error response.", "schema": { - "$ref": "../../../../../../common-types/resource-management/v2/types.json#/definitions/ErrorResponse" + "$ref": "../../../../../../common-types/resource-management/v3/types.json#/definitions/ErrorResponse" } } }, - "x-ms-long-running-operation": true, + "x-ms-examples": { + "Create Extension": { + "$ref": "./examples/CreateExtension.json" + }, + "Create Extension with Plan": { + "$ref": "./examples/CreateExtensionWithPlan.json" + } + }, "x-ms-long-running-operation-options": { - "final-state-via": "azure-async-operation" - } + "final-state-via": "azure-async-operation", + "final-state-schema": "#/definitions/Extension" + }, + "x-ms-long-running-operation": true }, "patch": { + "operationId": "Extensions_Update", "tags": [ "Extensions", "ClusterExtensions" ], "description": "Patch an existing Kubernetes Cluster Extension.", - "operationId": "Extensions_Update", - "x-ms-examples": { - "Update Extension": { - "$ref": "./examples/PatchExtension.json" - } - }, "parameters": [ { - "$ref": "../../../../../../common-types/resource-management/v2/types.json#/parameters/SubscriptionIdParameter" + "$ref": "../../../../../../common-types/resource-management/v3/types.json#/parameters/ApiVersionParameter" }, { - "$ref": "../../../../../../common-types/resource-management/v2/types.json#/parameters/ResourceGroupNameParameter" + "$ref": "../../../../../../common-types/resource-management/v3/types.json#/parameters/SubscriptionIdParameter" }, { - "$ref": "../../../common/2023-05-01-preview/parameters.json#/parameters/ClusterRpParameter" + "$ref": "../../../../../../common-types/resource-management/v3/types.json#/parameters/ResourceGroupNameParameter" }, { - "$ref": "../../../common/2023-05-01-preview/parameters.json#/parameters/ClusterResourceNameParameter" + "name": "clusterRp", + "in": "path", + "description": "The Kubernetes cluster RP - i.e. Microsoft.ContainerService, Microsoft.Kubernetes, Microsoft.HybridContainerService.", + "required": true, + "type": "string" }, { - "$ref": "../../../common/2023-05-01-preview/parameters.json#/parameters/ClusterNameParameter" + "name": "clusterResourceName", + "in": "path", + "description": "The Kubernetes cluster resource name - i.e. managedClusters, connectedClusters, provisionedClusters, appliances.", + "required": true, + "type": "string", + "pattern": "^[a-zA-Z]*$" }, { - "$ref": "#/parameters/ExtensionNameParameter" + "name": "clusterName", + "in": "path", + "description": "The name of the kubernetes cluster.", + "required": true, + "type": "string", + "pattern": "^.*" }, { - "$ref": "../../../../../../common-types/resource-management/v2/types.json#/parameters/ApiVersionParameter" + "name": "extensionName", + "in": "path", + "description": "Name of the Extension.", + "required": true, + "type": "string" }, { "name": "patchExtension", "in": "body", + "description": "Properties to Patch in an existing Extension.", "required": true, "schema": { - "$ref": "#/definitions/patchExtension" - }, - "description": "Properties to Patch in an existing Extension." + "$ref": "#/definitions/PatchExtension" + } } ], "responses": { - "202": { - "description": "Request received successfully, and the resource will be updated asynchronously.", + "200": { + "description": "Azure operation completed successfully.", "schema": { "$ref": "#/definitions/Extension" } }, - "200": { - "description": "No update is done to extension so return OK.", + "202": { + "description": "The request has been accepted for processing, but processing has not yet completed.", "schema": { "$ref": "#/definitions/Extension" + }, + "headers": { + "Azure-AsyncOperation": { + "type": "string", + "description": "A link to the status monitor" + }, + "Retry-After": { + "type": "integer", + "format": "int32", + "description": "The Retry-After header can indicate how long the client should wait before polling the operation status." + } } }, "default": { - "description": "Error response describing why the operation failed.", + "description": "An unexpected error response.", "schema": { - "$ref": "../../../../../../common-types/resource-management/v2/types.json#/definitions/ErrorResponse" + "$ref": "../../../../../../common-types/resource-management/v3/types.json#/definitions/ErrorResponse" } } }, - "x-ms-long-running-operation": true, + "x-ms-examples": { + "Update Extension": { + "$ref": "./examples/PatchExtension.json" + } + }, "x-ms-long-running-operation-options": { - "final-state-via": "azure-async-operation" - } - } - }, - "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{clusterRp}/{clusterResourceName}/{clusterName}/providers/Microsoft.KubernetesConfiguration/extensions": { - "get": { + "final-state-via": "azure-async-operation", + "final-state-schema": "#/definitions/Extension" + }, + "x-ms-long-running-operation": true + }, + "delete": { + "operationId": "Extensions_Delete", "tags": [ "Extensions", "ClusterExtensions" ], - "description": "List all Extensions in the cluster.", - "operationId": "Extensions_List", - "x-ms-examples": { - "List Extensions": { - "$ref": "./examples/ListExtensions.json" - } - }, + "description": "Delete a Kubernetes Cluster Extension. This will cause the Agent to Uninstall the extension from the cluster.", "parameters": [ { - "$ref": "../../../../../../common-types/resource-management/v2/types.json#/parameters/SubscriptionIdParameter" + "$ref": "../../../../../../common-types/resource-management/v3/types.json#/parameters/ApiVersionParameter" }, { - "$ref": "../../../../../../common-types/resource-management/v2/types.json#/parameters/ResourceGroupNameParameter" + "$ref": "../../../../../../common-types/resource-management/v3/types.json#/parameters/SubscriptionIdParameter" }, { - "$ref": "../../../common/2023-05-01-preview/parameters.json#/parameters/ClusterRpParameter" + "$ref": "../../../../../../common-types/resource-management/v3/types.json#/parameters/ResourceGroupNameParameter" }, { - "$ref": "../../../common/2023-05-01-preview/parameters.json#/parameters/ClusterResourceNameParameter" + "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", + "pattern": "^[a-zA-Z]*$" }, { - "$ref": "../../../common/2023-05-01-preview/parameters.json#/parameters/ClusterNameParameter" + "name": "clusterName", + "in": "path", + "description": "The name of the kubernetes cluster.", + "required": true, + "type": "string", + "pattern": "^.*" }, { - "$ref": "../../../../../../common-types/resource-management/v2/types.json#/parameters/ApiVersionParameter" + "name": "extensionName", + "in": "path", + "description": "Name of the Extension.", + "required": true, + "type": "string" + }, + { + "name": "forceDelete", + "in": "query", + "description": "Delete the extension resource in Azure - not the normal asynchronous delete.", + "required": false, + "type": "boolean" } ], "responses": { "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/ExtensionsList" + "description": "Resource deleted successfully." + }, + "202": { + "description": "Resource deletion accepted.", + "headers": { + "Azure-AsyncOperation": { + "type": "string", + "description": "A link to the status monitor" + }, + "Retry-After": { + "type": "integer", + "format": "int32", + "description": "The Retry-After header can indicate how long the client should wait before polling the operation status." + } } }, + "204": { + "description": "Resource does not exist." + }, "default": { - "description": "Error response describing why the operation failed.", + "description": "An unexpected error response.", "schema": { - "$ref": "../../../../../../common-types/resource-management/v2/types.json#/definitions/ErrorResponse" + "$ref": "../../../../../../common-types/resource-management/v3/types.json#/definitions/ErrorResponse" } } }, - "x-ms-pageable": { - "nextLinkName": "nextLink" - } + "x-ms-examples": { + "Delete Extension": { + "$ref": "./examples/DeleteExtension.json" + } + }, + "x-ms-long-running-operation-options": { + "final-state-via": "azure-async-operation" + }, + "x-ms-long-running-operation": true } }, "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{clusterRp}/{clusterResourceName}/{clusterName}/providers/Microsoft.KubernetesConfiguration/extensions/{extensionName}/operations/{operationId}": { "get": { + "operationId": "OperationStatus_Get", "tags": [ "Extension Operation Status" ], - "operationId": "OperationStatus_Get", "description": "Get Async Operation status", - "x-ms-examples": { - "ExtensionAsyncOperationStatus Get": { - "$ref": "./examples/GetExtensionAsyncOperationStatus.json" - } - }, "parameters": [ { - "$ref": "../../../../../../common-types/resource-management/v2/types.json#/parameters/SubscriptionIdParameter" + "$ref": "../../../../../../common-types/resource-management/v3/types.json#/parameters/ApiVersionParameter" }, { - "$ref": "../../../../../../common-types/resource-management/v2/types.json#/parameters/ResourceGroupNameParameter" + "$ref": "../../../../../../common-types/resource-management/v3/types.json#/parameters/SubscriptionIdParameter" }, { - "$ref": "../../../common/2023-05-01-preview/parameters.json#/parameters/ClusterRpParameter" + "$ref": "../../../../../../common-types/resource-management/v3/types.json#/parameters/ResourceGroupNameParameter" }, { - "$ref": "../../../common/2023-05-01-preview/parameters.json#/parameters/ClusterResourceNameParameter" + "name": "clusterRp", + "in": "path", + "description": "The Kubernetes cluster RP - i.e. Microsoft.ContainerService, Microsoft.Kubernetes, Microsoft.HybridContainerService.", + "required": true, + "type": "string" }, { - "$ref": "../../../common/2023-05-01-preview/parameters.json#/parameters/ClusterNameParameter" + "name": "clusterResourceName", + "in": "path", + "description": "The Kubernetes cluster resource name - i.e. managedClusters, connectedClusters, provisionedClusters, appliances.", + "required": true, + "type": "string", + "pattern": "^[a-zA-Z]*$" }, { - "$ref": "#/parameters/ExtensionNameParameter" + "name": "clusterName", + "in": "path", + "description": "The name of the kubernetes cluster.", + "required": true, + "type": "string", + "pattern": "^.*" }, { - "$ref": "../../../../../../common-types/resource-management/v2/types.json#/parameters/ApiVersionParameter" + "name": "extensionName", + "in": "path", + "description": "Name of the Extension.", + "required": true, + "type": "string" }, { "name": "operationId", "in": "path", - "description": "operation Id", "required": true, "type": "string" } ], "responses": { "200": { - "description": "Extension Operation Status", + "description": "Azure operation completed successfully.", "schema": { - "$ref": "../../../common/2022-03-01/definitions.json#/definitions/OperationStatusResult" + "$ref": "#/definitions/OperationStatusResult" } }, "default": { - "description": "Error response describing why the operation failed.", + "description": "An unexpected error response.", "schema": { - "$ref": "../../../../../../common-types/resource-management/v2/types.json#/definitions/ErrorResponse" + "$ref": "../../../../../../common-types/resource-management/v3/types.json#/definitions/ErrorResponse" } } + }, + "x-ms-examples": { + "ExtensionAsyncOperationStatus Get": { + "$ref": "./examples/GetExtensionAsyncOperationStatus.json" + } } } } }, "definitions": { - "ScopeCluster": { - "description": "Specifies that the scope of the extension is Cluster", - "type": "object", - "properties": { - "releaseNamespace": { - "description": "Namespace where the extension Release must be placed, for a Cluster scoped extension. If this namespace does not exist, it will be created", - "type": "string" - } + "AKSIdentityType": { + "type": "string", + "description": "The identity type.", + "enum": [ + "SystemAssigned", + "UserAssigned" + ], + "x-ms-enum": { + "name": "AKSIdentityType", + "modelAsString": false, + "values": [ + { + "name": "SystemAssigned", + "value": "SystemAssigned", + "description": "SystemAssigned" + }, + { + "name": "UserAssigned", + "value": "UserAssigned", + "description": "UserAssigned" + } + ] } }, - "ScopeNamespace": { - "description": "Specifies that the scope of the extension is Namespace", + "CreatedByType": { + "type": "string", + "description": "The type of identity that created the resource.", + "enum": [ + "User", + "Application", + "ManagedIdentity", + "Key" + ], + "x-ms-enum": { + "name": "CreatedByType", + "modelAsString": true, + "values": [ + { + "name": "User", + "value": "User", + "description": "User" + }, + { + "name": "Application", + "value": "Application", + "description": "Application" + }, + { + "name": "ManagedIdentity", + "value": "ManagedIdentity", + "description": "ManagedIdentity" + }, + { + "name": "Key", + "value": "Key", + "description": "Key" + } + ] + } + }, + "Extension": { "type": "object", + "description": "The Extension object.", "properties": { - "targetNamespace": { - "description": "Namespace where the extension will be created for an Namespace scoped extension. If this namespace does not exist, it will be created", - "type": "string" + "properties": { + "$ref": "#/definitions/ExtensionProperties", + "description": "Properties of an Extension resource", + "x-ms-client-flatten": true + }, + "identity": { + "$ref": "../../../../../../common-types/resource-management/v3/types.json#/definitions/Identity", + "description": "Identity of the Extension resource" + }, + "plan": { + "$ref": "../../../../../../common-types/resource-management/v3/types.json#/definitions/Plan", + "description": "Details of the resource plan." } - } + }, + "allOf": [ + { + "$ref": "../../../../../../common-types/resource-management/v3/types.json#/definitions/ProxyResource" + } + ] }, - "Scope": { - "description": "Scope of the extension. It can be either Cluster or Namespace; but not both.", + "ExtensionProperties": { "type": "object", + "description": "Properties of an Extension resource", "properties": { - "cluster": { + "extensionType": { + "type": "string", + "description": "Type of the Extension, of which this resource is an instance of. It must be one of the Extension Types registered with Microsoft.KubernetesConfiguration by the Extension publisher." + }, + "autoUpgradeMinorVersion": { + "type": "boolean", + "description": "Flag to note if this extension participates in auto upgrade of minor version, or not.", + "default": true + }, + "releaseTrain": { + "type": "string", + "description": "ReleaseTrain this extension participates in for auto-upgrade (e.g. Stable, Preview, etc.) - only if autoUpgradeMinorVersion is 'true'.", + "default": "Stable" + }, + "version": { + "type": "string", + "description": "User-specified version of the extension for this extension to 'pin'. To use 'version', autoUpgradeMinorVersion must be 'false'.", + "x-nullable": true + }, + "scope": { + "$ref": "#/definitions/Scope", + "description": "Scope at which the extension is installed." + }, + "configurationSettings": { "type": "object", + "description": "Configuration settings, as name-value pairs for configuring this extension.", "x-nullable": true, - "description": "Specifies that the scope of the extension is Cluster", - "$ref": "#/definitions/ScopeCluster" + "additionalProperties": { + "type": "string" + } }, - "namespace": { + "configurationProtectedSettings": { "type": "object", + "description": "Configuration settings that are sensitive, as name-value pairs for configuring this extension.", "x-nullable": true, - "description": "Specifies that the scope of the extension is Namespace", - "$ref": "#/definitions/ScopeNamespace" + "additionalProperties": { + "type": "string" + } + }, + "currentVersion": { + "type": "string", + "description": "Currently installed version of the extension.", + "x-nullable": true, + "readOnly": true + }, + "provisioningState": { + "$ref": "#/definitions/ProvisioningState", + "description": "Status of installation of this extension.", + "readOnly": true + }, + "statuses": { + "type": "array", + "description": "Status from this extension.", + "x-nullable": true, + "items": { + "$ref": "#/definitions/ExtensionStatus" + } + }, + "errorInfo": { + "$ref": "../../../../../../common-types/resource-management/v3/types.json#/definitions/ErrorDetail", + "description": "Error information from the Agent - e.g. errors during installation.", + "x-nullable": true, + "readOnly": true + }, + "customLocationSettings": { + "type": "object", + "description": "Custom Location settings properties.", + "x-nullable": true, + "additionalProperties": { + "type": "string" + }, + "readOnly": true + }, + "packageUri": { + "type": "string", + "description": "Uri of the Helm package", + "x-nullable": true, + "readOnly": true + }, + "aksAssignedIdentity": { + "$ref": "#/definitions/ExtensionPropertiesAksAssignedIdentity", + "description": "Identity of the Extension resource in an AKS cluster", + "x-nullable": true + }, + "isSystemExtension": { + "type": "boolean", + "description": "Flag to note if this extension is a system extension", + "default": false, + "readOnly": true + } + } + }, + "ExtensionPropertiesAksAssignedIdentity": { + "type": "object", + "description": "Identity of the Extension resource in an AKS cluster", + "properties": { + "principalId": { + "type": "string", + "description": "The principal ID of resource identity.", + "readOnly": true + }, + "tenantId": { + "type": "string", + "description": "The tenant ID of resource.", + "readOnly": true + }, + "type": { + "$ref": "#/definitions/AKSIdentityType", + "description": "The identity type." } } }, "ExtensionStatus": { - "description": "Status from the extension.", "type": "object", - "readOnly": true, + "description": "Status from the extension.", "properties": { "code": { "type": "string", @@ -459,15 +775,32 @@ "level": { "type": "string", "description": "Level of the status.", + "default": "Information", "enum": [ "Error", "Warning", "Information" ], - "default": "Information", "x-ms-enum": { "name": "LevelType", - "modelAsString": true + "modelAsString": true, + "values": [ + { + "name": "Error", + "value": "Error", + "description": "Error" + }, + { + "name": "Warning", + "value": "Warning", + "description": "Warning" + }, + { + "name": "Information", + "value": "Information", + "description": "Information" + } + ] } }, "message": { @@ -480,228 +813,226 @@ } } }, - "Extension": { - "description": "The Extension object.", + "ExtensionsList": { + "type": "object", + "description": "Result of the request to list Extensions. It contains a list of Extension objects and a URL link to get the next set of results.", + "properties": { + "value": { + "type": "array", + "description": "The Extension items on this page", + "items": { + "$ref": "#/definitions/Extension" + } + }, + "nextLink": { + "type": "string", + "format": "uri", + "description": "The link to the next page of items" + } + }, + "required": [ + "value" + ] + }, + "LevelType": { + "type": "string", + "description": "Level of the status.", + "enum": [ + "Error", + "Warning", + "Information" + ], + "x-ms-enum": { + "name": "LevelType", + "modelAsString": true, + "values": [ + { + "name": "Error", + "value": "Error", + "description": "Error" + }, + { + "name": "Warning", + "value": "Warning", + "description": "Warning" + }, + { + "name": "Information", + "value": "Information", + "description": "Information" + } + ] + } + }, + "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", - "x-ms-client-flatten": true, - "description": "Properties of an Extension resource", - "properties": { - "extensionType": { - "description": "Type of the Extension, of which this resource is an instance of. It must be one of the Extension Types registered with Microsoft.KubernetesConfiguration by the Extension publisher.", - "type": "string" - }, - "autoUpgradeMinorVersion": { - "description": "Flag to note if this extension participates in auto upgrade of minor version, or not.", - "type": "boolean", - "default": true - }, - "releaseTrain": { - "description": "ReleaseTrain this extension participates in for auto-upgrade (e.g. Stable, Preview, etc.) - only if autoUpgradeMinorVersion is 'true'.", - "type": "string", - "default": "Stable" - }, - "version": { - "description": "User-specified version of the extension for this extension to 'pin'. To use 'version', autoUpgradeMinorVersion must be 'false'.", - "type": "string", - "x-nullable": true - }, - "scope": { - "description": "Scope at which the extension is installed.", - "$ref": "#/definitions/Scope" - }, - "configurationSettings": { - "description": "Configuration settings, as name-value pairs for configuring this extension.", - "type": "object", - "x-nullable": true, - "additionalProperties": { - "type": "string" - } - }, - "configurationProtectedSettings": { - "description": "Configuration settings that are sensitive, as name-value pairs for configuring this extension.", - "type": "object", - "x-nullable": true, - "x-ms-secret": true, - "additionalProperties": { - "type": "string" - } - }, - "currentVersion": { - "description": "Currently installed version of the extension.", - "type": "string", - "readOnly": true, - "x-nullable": true - }, - "provisioningState": { - "description": "Status of installation of this extension.", - "type": "string", - "readOnly": true, - "$ref": "../../../common/2023-05-01-preview/definitions.json#/definitions/ProvisioningStateDefinition" - }, - "statuses": { - "description": "Status from this extension.", - "type": "array", - "x-nullable": true, - "items": { - "$ref": "#/definitions/ExtensionStatus" - }, - "x-ms-identifiers": [] - }, - "errorInfo": { - "description": "Error information from the Agent - e.g. errors during installation.", - "type": "object", - "readOnly": true, - "x-nullable": true, - "$ref": "../../../../../../common-types/resource-management/v2/types.json#/definitions/ErrorDetail" - }, - "customLocationSettings": { - "description": "Custom Location settings properties.", - "type": "object", - "readOnly": true, - "x-nullable": true, - "additionalProperties": { - "type": "string" - } - }, - "packageUri": { - "description": "Uri of the Helm package", - "type": "string", - "readOnly": true, - "x-nullable": true - }, - "aksAssignedIdentity": { - "description": "Identity of the Extension resource in an AKS cluster", - "x-nullable": true, - "type": "object", - "properties": { - "principalId": { - "readOnly": true, - "type": "string", - "description": "The principal ID of resource identity." - }, - "tenantId": { - "readOnly": true, - "type": "string", - "description": "The tenant ID of resource." - }, - "type": { - "type": "string", - "description": "The identity type.", - "enum": [ - "SystemAssigned", - "UserAssigned" - ], - "x-ms-enum": { - "name": "AKSIdentityType", - "modelAsString": false - } - } - } - }, - "isSystemExtension": { - "readOnly": true, - "description": "Flag to note if this extension is a system extension", - "type": "boolean", - "default": false - } + "description": "Additional information, if available.", + "x-nullable": true, + "additionalProperties": { + "type": "string" } }, - "identity": { - "description": "Identity of the Extension resource", + "error": { + "$ref": "../../../../../../common-types/resource-management/v3/types.json#/definitions/ErrorDetail", + "description": "If present, details of the operation error.", "x-nullable": true, - "$ref": "../../../../../../common-types/resource-management/v2/types.json#/definitions/Identity" - }, - "systemData": { - "description": "Top level metadata https://github.com/Azure/azure-resource-manager-rpc/blob/master/v1.0/common-api-contracts.md#system-metadata-for-all-azure-resources", - "$ref": "../../../../../../common-types/resource-management/v2/types.json#/definitions/systemData" - }, - "plan": { - "description": "The plan information.", - "$ref": "../../../../../../common-types/resource-management/v2/types.json#/definitions/Plan" + "readOnly": true } }, - "allOf": [ - { - "$ref": "../../../../../../common-types/resource-management/v2/types.json#/definitions/ProxyResource" - } + "required": [ + "status" ] }, - "ExtensionsList": { - "description": "Result of the request to list Extensions. It contains a list of Extension objects and a URL link to get the next set of results.", + "PatchExtension": { "type": "object", + "description": "The Extension Patch Request object.", "properties": { - "value": { - "type": "array", - "readOnly": true, - "items": { - "$ref": "#/definitions/Extension" + "properties": { + "$ref": "#/definitions/PatchExtensionProperties", + "description": "Updatable properties of an Extension Patch Request", + "x-ms-client-flatten": true + } + } + }, + "PatchExtensionProperties": { + "type": "object", + "description": "Updatable properties of an Extension Patch Request", + "properties": { + "autoUpgradeMinorVersion": { + "type": "boolean", + "description": "Flag to note if this extension participates in auto upgrade of minor version, or not.", + "default": true + }, + "releaseTrain": { + "type": "string", + "description": "ReleaseTrain this extension participates in for auto-upgrade (e.g. Stable, Preview, etc.) - only if autoUpgradeMinorVersion is 'true'.", + "default": "Stable" + }, + "version": { + "type": "string", + "description": "Version of the extension for this extension, if it is 'pinned' to a specific version. autoUpgradeMinorVersion must be 'false'.", + "x-nullable": true + }, + "configurationSettings": { + "type": "object", + "description": "Configuration settings, as name-value pairs for configuring this extension.", + "x-nullable": true, + "additionalProperties": { + "type": "string" + } + }, + "configurationProtectedSettings": { + "type": "object", + "format": "password", + "description": "Configuration settings that are sensitive, as name-value pairs for configuring this extension.", + "x-nullable": true, + "additionalProperties": { + "type": "string" + }, + "x-ms-secret": true + } + } + }, + "ProvisioningState": { + "type": "string", + "description": "The provisioning state of the resource.", + "enum": [ + "Succeeded", + "Failed", + "Canceled", + "Creating", + "Updating", + "Deleting" + ], + "x-ms-enum": { + "name": "ProvisioningState", + "modelAsString": true, + "values": [ + { + "name": "Succeeded", + "value": "Succeeded", + "description": "Succeeded" }, - "description": "List of Extensions within a Kubernetes cluster." + { + "name": "Failed", + "value": "Failed", + "description": "Failed" + }, + { + "name": "Canceled", + "value": "Canceled", + "description": "Canceled" + }, + { + "name": "Creating", + "value": "Creating", + "description": "Creating" + }, + { + "name": "Updating", + "value": "Updating", + "description": "Updating" + }, + { + "name": "Deleting", + "value": "Deleting", + "description": "Deleting" + } + ] + } + }, + "Scope": { + "type": "object", + "description": "Scope of the extension. It can be either Cluster or Namespace; but not both.", + "properties": { + "cluster": { + "$ref": "#/definitions/ScopeCluster", + "description": "Specifies that the scope of the extension is Cluster", + "x-nullable": true }, - "nextLink": { + "namespace": { + "$ref": "#/definitions/ScopeNamespace", + "description": "Specifies that the scope of the extension is Namespace", + "x-nullable": true + } + } + }, + "ScopeCluster": { + "type": "object", + "description": "Specifies that the scope of the extension is Cluster", + "properties": { + "releaseNamespace": { "type": "string", - "readOnly": true, - "description": "URL to get the next set of extension objects, if any." + "description": "Namespace where the extension Release must be placed, for a Cluster scoped extension. If this namespace does not exist, it will be created" } } }, - "patchExtension": { - "description": "The Extension Patch Request object.", + "ScopeNamespace": { "type": "object", + "description": "Specifies that the scope of the extension is Namespace", "properties": { - "properties": { - "type": "object", - "x-ms-client-flatten": true, - "description": "Updatable properties of an Extension Patch Request", - "properties": { - "autoUpgradeMinorVersion": { - "description": "Flag to note if this extension participates in auto upgrade of minor version, or not.", - "type": "boolean", - "default": true - }, - "releaseTrain": { - "description": "ReleaseTrain this extension participates in for auto-upgrade (e.g. Stable, Preview, etc.) - only if autoUpgradeMinorVersion is 'true'.", - "type": "string", - "default": "Stable" - }, - "version": { - "description": "Version of the extension for this extension, if it is 'pinned' to a specific version. autoUpgradeMinorVersion must be 'false'.", - "type": "string", - "x-nullable": true - }, - "configurationSettings": { - "description": "Configuration settings, as name-value pairs for configuring this extension.", - "type": "object", - "x-nullable": true, - "additionalProperties": { - "type": "string" - } - }, - "configurationProtectedSettings": { - "description": "Configuration settings that are sensitive, as name-value pairs for configuring this extension.", - "type": "object", - "x-nullable": true, - "x-ms-secret": true, - "additionalProperties": { - "type": "string" - } - } - } + "targetNamespace": { + "type": "string", + "description": "Namespace where the extension will be created for an Namespace scoped extension. If this namespace does not exist, it will be created" } } } }, - "parameters": { - "ExtensionNameParameter": { - "name": "extensionName", - "in": "path", - "description": "Name of the Extension.", - "required": true, - "type": "string", - "x-ms-parameter-location": "method" - } - } + "parameters": {} } diff --git a/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/extensions/tspconfig.yaml b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/extensions/tspconfig.yaml new file mode 100644 index 000000000000..4990092224ba --- /dev/null +++ b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/extensions/tspconfig.yaml @@ -0,0 +1,47 @@ +parameters: + "service-dir": + default: "sdk/extensions" +emit: + - "@azure-tools/typespec-autorest" +options: + "@azure-tools/typespec-autorest": + omit-unreachable-types: false + emitter-output-dir: "{project-root}" + azure-resource-provider-folder: "resource-manager" + output-file: "{version-status}/{version}/extensions.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-extensions" + namespace: "azure.mgmt.kubernetesconfiguration.extensions" + 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-extensions" + namespace: "com.azure.resourcemanager.kubernetesconfiguration.extensions" + service-name: "Extensions" # human-readable service name, whitespace allowed + flavor: azure + "@azure-tools/typespec-ts": + service-dir: sdk/kubernetesconfiguration + emitter-output-dir: "{output-dir}/{service-dir}/arm-kubernetesconfiguration-extensions" + flavor: "azure" + experimental-extensible-enums: true + package-details: + name: "@azure/arm-kubernetesconfiguration-extensions" + "@azure-tools/typespec-go": + service-dir: "sdk/resourcemanager/kubernetesconfiguration" + emitter-output-dir: "{output-dir}/{service-dir}/armextensions" + module: "github.com/Azure/azure-sdk-for-go/{service-dir}/armextensions" + fix-const-stuttering: true + flavor: "azure" + generate-samples: true + generate-fakes: true + head-as-boolean: true + inject-spans: true +linter: + extends: + - "@azure-tools/typespec-azure-rulesets/resource-manager" diff --git a/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/fluxConfigurations/FluxConfiguration.tsp b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/fluxConfigurations/FluxConfiguration.tsp new file mode 100644 index 000000000000..8bb7f73bcdcd --- /dev/null +++ b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/fluxConfigurations/FluxConfiguration.tsp @@ -0,0 +1,196 @@ +import "@azure-tools/typespec-azure-core"; +import "@azure-tools/typespec-azure-resource-manager"; +import "@typespec/openapi"; +import "@typespec/rest"; +import "./models.tsp"; + +using TypeSpec.Rest; +using Azure.ResourceManager; +using TypeSpec.Http; +using TypeSpec.OpenAPI; + +namespace Microsoft.KubernetesConfiguration; +/** + * The Flux Configuration object returned in Get & Put response. + */ +model FluxConfiguration + is Azure.ResourceManager.ProxyResource { + ...ResourceNameParameter< + Resource = FluxConfiguration, + KeyName = "fluxConfigurationName", + SegmentName = "fluxConfigurations", + NamePattern = "" + >; +} + +alias FluxConfigurationOperationGroupOps = Azure.ResourceManager.Legacy.ExtensionOperations< + { + ...ApiVersionParameter; + ...SubscriptionIdParameter; + ...ResourceGroupParameter; + + /** + * The Kubernetes cluster RP - i.e. Microsoft.ContainerService, Microsoft.Kubernetes, Microsoft.HybridContainerService. + */ + @path + @segment("providers") + @key + 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("^.*") + clusterName: string; + }, + { + ...Extension.ExtensionProviderNamespace; + ...ParentKeysOf; + }, + { + ...Extension.ExtensionProviderNamespace; + ...KeysOf; + } +>; + +alias FluxConfigurationsBuildingOps = Azure.ResourceManager.Legacy.RoutedOperations< + { + ...ApiVersionParameter; + ...SubscriptionIdParameter; + ...ResourceGroupParameter; + + /** + * The Kubernetes cluster RP - i.e. Microsoft.ContainerService, Microsoft.Kubernetes, Microsoft.HybridContainerService. + */ + @path + @segment("providers") + @key + 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. + */ + @pattern("^.*") + @key + @path + clusterName: string; + + ...KeysOf; + }, + { + #suppress "@azure-tools/typespec-azure-core/documentation-required" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + @path + @segment("operations") + @key + operationId: string; + }, + ResourceRoute = #{ + route: "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{clusterRp}/{clusterResourceName}/{clusterName}/providers/Microsoft.KubernetesConfiguration/fluxConfigurations", + } +>; + +@armResourceOperations(#{ allowStaticRoutes: true, omitTags: true }) +interface FluxConfigurations { + /** + * Gets details of the Flux Configuration. + */ + @tag("FluxConfiguration") + @tag("Flux") + get is FluxConfigurationOperationGroupOps.Read; + + /** + * Create a new Kubernetes Flux Configuration. + */ + @tag("FluxConfiguration") + @tag("Flux") + createOrUpdate is FluxConfigurationOperationGroupOps.CreateOrUpdateAsync; + + /** + * Update an existing Kubernetes Flux Configuration. + */ + #suppress "@azure-tools/typespec-azure-resource-manager/lro-location-header" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + #suppress "@azure-tools/typespec-azure-resource-manager/no-response-body" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + @tag("FluxConfiguration") + @tag("Flux") + @patch(#{ implicitOptionality: false }) + update is FluxConfigurationOperationGroupOps.CustomPatchAsync< + FluxConfiguration, + PatchModel = FluxConfigurationPatch, + Response = ArmResponse | (ArmAcceptedLroResponse & + Azure.Core.Foundations.RetryAfterHeader> & { + @bodyRoot + _: FluxConfiguration; + }) + >; + + /** + * This will delete the YAML file used to set up the Flux Configuration, thus stopping future sync from the source repo. + */ + #suppress "@azure-tools/typespec-azure-resource-manager/lro-location-header" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + #suppress "@azure-tools/typespec-azure-resource-manager/arm-delete-operation-response-codes" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + @tag("FluxConfiguration") + @tag("Flux") + delete is FluxConfigurationOperationGroupOps.DeleteWithoutOkAsync< + FluxConfiguration, + Parameters = { + /** + * Delete the extension resource in Azure - not the normal asynchronous delete. + */ + @query("forceDelete") + forceDelete?: boolean; + }, + Response = ArmDeletedResponse | ArmDeleteAcceptedLroResponse | ArmDeletedNoContentResponse + >; + + /** + * List all Flux Configurations. + */ + @tag("FluxConfiguration") + @tag("Flux") + list is FluxConfigurationOperationGroupOps.List< + FluxConfiguration, + Response = ArmResponse + >; + + /** + * Get Async Operation status + */ + @tag("FluxConfiguration Operation Status") + @get + @route("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{clusterRp}/{clusterResourceName}/{clusterName}/providers/Microsoft.KubernetesConfiguration/fluxConfigurations/{fluxConfigurationName}/operations/{operationId}") + fluxConfigOperationStatusGet is FluxConfigurationsBuildingOps.ActionSync< + FluxConfiguration, + void, + ArmResponse + >; +} + +@@doc(FluxConfiguration.name, "Name of the Flux Configuration."); +@@doc(FluxConfiguration.properties, + "Properties to create a Flux Configuration resource" +); +@@doc(FluxConfigurations.createOrUpdate::parameters.resource, + "Properties necessary to Create a FluxConfiguration." +); +@@doc(FluxConfigurations.update::parameters.properties, + "Properties to Patch in an existing Flux Configuration." +); diff --git a/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/fluxConfigurations/back-compatible.tsp b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/fluxConfigurations/back-compatible.tsp new file mode 100644 index 000000000000..7a022e2cb89f --- /dev/null +++ b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/fluxConfigurations/back-compatible.tsp @@ -0,0 +1,22 @@ +import "@azure-tools/typespec-client-generator-core"; + +using Azure.ClientGenerator.Core; +using Microsoft.KubernetesConfiguration; + +#suppress "@azure-tools/typespec-azure-core/no-legacy-usage" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" +@@Legacy.flattenProperty(FluxConfigurationPatch.properties); + +@@clientName(FluxConfigurations.createOrUpdate::parameters.resource, + "fluxConfiguration" +); +@@clientName(FluxConfigurations.update::parameters.properties, + "fluxConfigurationPatch" +); +@@clientLocation(FluxConfigurations.fluxConfigOperationStatusGet, + "FluxConfigOperationStatus", + "!java" +); +@@clientName(FluxConfigurations.fluxConfigOperationStatusGet, "Get"); +#suppress "@azure-tools/typespec-azure-core/no-legacy-usage" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" +@@Legacy.flattenProperty(FluxConfiguration.properties); +@@visibility(FluxConfigurationsList.value, Lifecycle.Read); diff --git a/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/fluxConfigurations/client.tsp b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/fluxConfigurations/client.tsp new file mode 100644 index 000000000000..77833ed079d0 --- /dev/null +++ b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/fluxConfigurations/client.tsp @@ -0,0 +1,56 @@ +import "./main.tsp"; +import "@azure-tools/typespec-client-generator-core"; + +using Azure.ClientGenerator.Core; + +@@clientName(Microsoft.KubernetesConfiguration, + "KubernetesConfigurationFluxConfigurationsMgmtClient", + "python" +); + +@@clientName(Microsoft.KubernetesConfiguration, "FluxConfigClient", "java"); +@@clientName(Microsoft.KubernetesConfiguration.KustomizationDefinition.wait, + "waitValue", + "java" +); +@@clientName(Microsoft.KubernetesConfiguration.KustomizationPatchDefinition.wait, + "waitValue", + "java" +); + +@@clientName(Microsoft.KubernetesConfiguration.OCIRepositoryDefinition, + "OciRepositoryDefinition", + "java" +); + +@@clientName(Microsoft.KubernetesConfiguration.OCIRepositoryRefDefinition, + "OciRepositoryRefDefinition", + "java" +); + +@@clientName(Microsoft.KubernetesConfiguration.SourceKindType.OCIRepository, + "OciRepository", + "java" +); + +@@clientName(Microsoft.KubernetesConfiguration.OCIRepositoryPatchDefinition, + "OciRepositoryPatchDefinition", + "java" +); + +@@clientName(Microsoft.KubernetesConfiguration.OCIRepositoryRefPatchDefinition, + "OciRepositoryRefPatchDefinition", + "java" +); +@@clientName(Microsoft.KubernetesConfiguration.FluxConfigurations.fluxConfigOperationStatusGet, + "OperationStatus", + "java" +); +@@clientName(Microsoft.KubernetesConfiguration.FluxConfigurations, + "FluxConfigs", + "java" +); +@@clientName(Microsoft.KubernetesConfiguration.FluxConfigurationPatchProperties, + "FluxConfigPatchProperties", + "java" +); diff --git a/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/fluxConfigurations/examples/2025-04-01/CreateFluxConfiguration.json b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/fluxConfigurations/examples/2025-04-01/CreateFluxConfiguration.json new file mode 100644 index 000000000000..854f4a681b62 --- /dev/null +++ b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/fluxConfigurations/examples/2025-04-01/CreateFluxConfiguration.json @@ -0,0 +1,405 @@ +{ + "parameters": { + "api-version": "2025-04-01", + "clusterName": "clusterName1", + "clusterResourceName": "connectedClusters", + "clusterRp": "Microsoft.Kubernetes", + "fluxConfiguration": { + "properties": { + "gitRepository": { + "httpsCACert": "ZXhhbXBsZWNlcnRpZmljYXRl", + "repositoryRef": { + "branch": "master" + }, + "syncIntervalInSeconds": 600, + "timeoutInSeconds": 600, + "url": "https://github.com/Azure/arc-k8s-demo" + }, + "kustomizations": { + "srs-kustomization1": { + "path": "./test/path", + "dependsOn": [], + "postBuild": { + "substitute": { + "cluster_env": "prod", + "replica_count": "2" + }, + "substituteFrom": [ + { + "name": "cluster-test", + "kind": "ConfigMap", + "optional": true + } + ] + }, + "syncIntervalInSeconds": 600, + "timeoutInSeconds": 600, + "wait": true + }, + "srs-kustomization2": { + "path": "./other/test/path", + "dependsOn": [ + "srs-kustomization1" + ], + "postBuild": { + "substituteFrom": [ + { + "name": "cluster-values", + "kind": "ConfigMap", + "optional": true + }, + { + "name": "secret-name", + "kind": "Secret", + "optional": false + } + ] + }, + "prune": false, + "retryIntervalInSeconds": 600, + "syncIntervalInSeconds": 600, + "timeoutInSeconds": 600, + "wait": false + } + }, + "namespace": "srs-namespace", + "reconciliationWaitDuration": "PT30M", + "scope": "cluster", + "sourceKind": "GitRepository", + "suspend": false, + "waitForReconciliation": true + } + }, + "fluxConfigurationName": "srs-fluxconfig", + "resourceGroupName": "rg1", + "subscriptionId": "subId1" + }, + "responses": { + "200": { + "description": "Details of the Kubernetes Flux Configuration's current status.", + "body": { + "name": "srs-fluxconfig", + "type": "Microsoft.KubernetesConfiguration/fluxConfigurations", + "id": "/subscriptions/subId1/resourceGroups/rg1/providers/Microsoft.Kubernetes/connectedClusters/clusterName1/providers/Microsoft.KubernetesConfiguration/fluxConfigurations/srs-fluxconfig", + "properties": { + "complianceState": "Compliant", + "errorMessage": "", + "gitRepository": { + "httpsCACert": "ZXhhbXBsZWNlcnRpZmljYXRl", + "repositoryRef": { + "branch": "master", + "commit": null, + "semver": null, + "tag": null + }, + "syncIntervalInSeconds": 600, + "timeoutInSeconds": 600, + "url": "https://github.com/Azure/arc-k8s-demo" + }, + "kustomizations": { + "srs-kustomization1": { + "name": "srs-kustomization1", + "path": "./test/path", + "dependsOn": [], + "postBuild": { + "substitute": { + "cluster_env": "prod", + "replica_count": "2" + }, + "substituteFrom": [ + { + "name": "cluster-test", + "kind": "ConfigMap", + "optional": true + } + ] + }, + "syncIntervalInSeconds": 600, + "timeoutInSeconds": 600, + "wait": true + }, + "srs-kustomization2": { + "name": "srs-kustomization2", + "path": "./other/test/path", + "dependsOn": [ + "srs-kustomization1" + ], + "postBuild": { + "substituteFrom": [ + { + "name": "cluster-values", + "kind": "ConfigMap", + "optional": true + }, + { + "name": "secret-name", + "kind": "Secret", + "optional": false + } + ] + }, + "prune": false, + "retryIntervalInSeconds": 600, + "syncIntervalInSeconds": 600, + "timeoutInSeconds": 600, + "wait": false + } + }, + "namespace": "srs-namespace", + "provisioningState": "Succeeded", + "repositoryPublicKey": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDiNkrANrhtRy+02Xc7b5bwvgOKvQMbqUQaXeB6FCDkbLaavw/zO/vIhIBEQu+vbBt6IlI/Pui0rMFr5JjA8Vwwd85oabzU07TPzbFvKSU9eCXqWRKWf0DHNQj/kxPJNtyPYFv3lGoiZZ6QzejOxlW/lPPokUePN0oI10daWwqznm2q0Cmh1EgPUYveq3J5KCWncZXCdwY36zWYulCWFaqazoaGy4kxcqlVy+mPjE/UJthaoLm3mq+23uhlmmfCc1j7W6+H6fcOwTyOtcbimxz2Ug8HlTzSTXBPtEe7qyllMyk62EPNUUq4bVoVsex9sKBK6/hW0Cn2P5i5jslUPCQF", + "scope": "cluster", + "sourceKind": "GitRepository", + "sourceSyncedCommitId": "master/0ba6f0d30760d567de0bac86c8c4eec13ce1a590", + "sourceUpdatedAt": "2021-05-19T18:17:12Z", + "statusUpdatedAt": "2021-05-19T18:17:12Z", + "statuses": [ + { + "name": "srs-fluxconfig", + "appliedBy": null, + "complianceState": "Compliant", + "helmReleaseProperties": null, + "kind": "GitRepository", + "statusConditions": [ + { + "type": "Ready", + "lastTransitionTime": "2021-05-19T18:12:40Z", + "message": "'Fetched revision: master/0ba6f0d30760d567de0bac86c8c4eec13ce1a590'", + "reason": "GitOperationSucceed", + "status": "True" + } + ] + }, + { + "name": "srs-fluxconfig-srs-kustomization1", + "appliedBy": null, + "complianceState": "Compliant", + "helmReleaseProperties": { + "failureCount": null, + "helmChartRef": { + "name": "myname", + "namespace": "mynamespace" + }, + "installFailureCount": null, + "lastRevisionApplied": 1, + "upgradeFailureCount": null + }, + "kind": "Kustomization", + "statusConditions": [ + { + "type": "Ready", + "lastTransitionTime": "2021-05-19T18:12:40Z", + "message": "'Applied revision: master/0ba6f0d30760d567de0bac86c8c4eec13ce1a590'", + "reason": "ReconciliationSucceeded", + "status": "True" + } + ] + }, + { + "name": "srs-fluxconfig-srs-kustomization2", + "appliedBy": null, + "complianceState": "Compliant", + "helmReleaseProperties": { + "failureCount": null, + "helmChartRef": { + "name": "myname", + "namespace": "mynamespace" + }, + "installFailureCount": null, + "lastRevisionApplied": 1, + "upgradeFailureCount": null + }, + "kind": "Kustomization", + "statusConditions": [ + { + "type": "Ready", + "lastTransitionTime": "2021-05-19T18:12:40Z", + "message": "'Applied revision: master/0ba6f0d30760d567de0bac86c8c4eec13ce1a590'", + "reason": "ReconciliationSucceeded", + "status": "True" + } + ] + } + ], + "suspend": false + }, + "systemData": { + "createdAt": "2021-05-19T05:10:57.027Z", + "createdBy": "string", + "createdByType": "Application", + "lastModifiedAt": "2020-05-19T05:10:57.027Z", + "lastModifiedBy": "string", + "lastModifiedByType": "Application" + } + }, + "headers": { + "Operation-Location": "/subscriptions/subId1/resourceGroups/rg1/providers/Microsoft.Kubernetes/connectedClusters/clusterName1/providers/Microsoft.KubernetesConfiguration/fluxConfigurations/ClusterMonitor/srs-fluxconfig/{operationId}", + "x-ms-async-operation-timeout": "PT48H" + } + }, + "201": { + "description": "Details of the Kubernetes Flux Configuration's current status.", + "body": { + "name": "srs-fluxconfig", + "type": "Microsoft.KubernetesConfiguration/fluxConfigurations", + "id": "/subscriptions/subId1/resourceGroups/rg1/providers/Microsoft.Kubernetes/connectedClusters/clusterName1/providers/Microsoft.KubernetesConfiguration/fluxConfigurations/srs-fluxconfig", + "properties": { + "complianceState": "Compliant", + "errorMessage": "", + "gitRepository": { + "httpsCACert": "ZXhhbXBsZWNlcnRpZmljYXRl", + "repositoryRef": { + "branch": "master", + "commit": null, + "semver": null, + "tag": null + }, + "syncIntervalInSeconds": 600, + "timeoutInSeconds": 600, + "url": "https://github.com/Azure/arc-k8s-demo" + }, + "kustomizations": { + "srs-kustomization1": { + "name": "srs-", + "path": "./test/path", + "dependsOn": [], + "postBuild": { + "substitute": { + "cluster_env": "prod", + "replica_count": "2" + }, + "substituteFrom": [ + { + "name": "cluster-test", + "kind": "ConfigMap", + "optional": true + } + ] + }, + "syncIntervalInSeconds": 600, + "timeoutInSeconds": 600, + "wait": true + }, + "srs-kustomization2": { + "name": "srs-kustomization2", + "path": "./other/test/path", + "dependsOn": [ + "srs-kustomization1" + ], + "postBuild": { + "substituteFrom": [ + { + "name": "cluster-values", + "kind": "ConfigMap", + "optional": true + }, + { + "name": "secret-name", + "kind": "Secret", + "optional": false + } + ] + }, + "prune": false, + "retryIntervalInSeconds": 600, + "syncIntervalInSeconds": 600, + "timeoutInSeconds": 600, + "wait": false + } + }, + "namespace": "srs-namespace", + "provisioningState": "Succeeded", + "repositoryPublicKey": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDiNkrANrhtRy+02Xc7b5bwvgOKvQMbqUQaXeB6FCDkbLaavw/zO/vIhIBEQu+vbBt6IlI/Pui0rMFr5JjA8Vwwd85oabzU07TPzbFvKSU9eCXqWRKWf0DHNQj/kxPJNtyPYFv3lGoiZZ6QzejOxlW/lPPokUePN0oI10daWwqznm2q0Cmh1EgPUYveq3J5KCWncZXCdwY36zWYulCWFaqazoaGy4kxcqlVy+mPjE/UJthaoLm3mq+23uhlmmfCc1j7W6+H6fcOwTyOtcbimxz2Ug8HlTzSTXBPtEe7qyllMyk62EPNUUq4bVoVsex9sKBK6/hW0Cn2P5i5jslUPCQF", + "scope": "cluster", + "sourceKind": "GitRepository", + "sourceSyncedCommitId": "master/0ba6f0d30760d567de0bac86c8c4eec13ce1a590", + "sourceUpdatedAt": "2021-05-19T18:17:12Z", + "statusUpdatedAt": "2021-05-19T18:17:12Z", + "statuses": [ + { + "name": "srs-fluxconfig", + "appliedBy": null, + "complianceState": "Compliant", + "kind": "GitRepository", + "statusConditions": [ + { + "type": "Ready", + "lastTransitionTime": "2021-05-19T18:12:40Z", + "message": "'Fetched revision: master/0ba6f0d30760d567de0bac86c8c4eec13ce1a590'", + "reason": "GitOperationSucceed", + "status": "True" + } + ] + }, + { + "name": "srs-fluxconfig-srs-kustomization1", + "appliedBy": null, + "complianceState": "Compliant", + "helmReleaseProperties": { + "failureCount": null, + "helmChartRef": { + "name": "myname", + "namespace": "mynamespace" + }, + "installFailureCount": null, + "lastRevisionApplied": 1, + "upgradeFailureCount": null + }, + "kind": "Kustomization", + "statusConditions": [ + { + "type": "Ready", + "lastTransitionTime": "2021-05-19T18:12:40Z", + "message": "'Applied revision: master/0ba6f0d30760d567de0bac86c8c4eec13ce1a590'", + "reason": "ReconciliationSucceeded", + "status": "True" + } + ] + }, + { + "name": "srs-fluxconfig-srs-kustomization2", + "appliedBy": null, + "complianceState": "Compliant", + "helmReleaseProperties": { + "failureCount": null, + "helmChartRef": { + "name": "myname", + "namespace": "mynamespace" + }, + "installFailureCount": null, + "lastRevisionApplied": 1, + "upgradeFailureCount": null + }, + "kind": "Kustomization", + "statusConditions": [ + { + "type": "Ready", + "lastTransitionTime": "2021-05-19T18:12:40Z", + "message": "'Applied revision: master/0ba6f0d30760d567de0bac86c8c4eec13ce1a590'", + "reason": "ReconciliationSucceeded", + "status": "True" + } + ] + } + ], + "suspend": false + }, + "systemData": { + "createdAt": "2021-05-19T05:10:57.027Z", + "createdBy": "string", + "createdByType": "Application", + "lastModifiedAt": "2020-05-19T05:10:57.027Z", + "lastModifiedBy": "string", + "lastModifiedByType": "Application" + } + }, + "headers": { + "Azure-AsyncOperation": "http://management.azure.com/subscriptions/subId/resourceGroups/rg1/providers/Microsoft.Kubernetes/ConnectedClusters/clusterName1/providers/Microsoft.KubernetesConfiguration/fluxConfigurations/srs-fluxconfig/operations/operationId?api-version=2025-04-01", + "Operation-Location": "/subscriptions/subId1/resourceGroups/rg1/providers/Microsoft.Kubernetes/connectedClusters/clusterName1/providers/Microsoft.KubernetesConfiguration/fluxConfigurations/ClusterMonitor/srs-fluxconfig/{operationId}", + "x-ms-async-operation-timeout": "PT48H" + } + } + }, + "operationId": "FluxConfigurations_CreateOrUpdate", + "title": "Create Flux Configuration" +} diff --git a/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/fluxConfigurations/examples/2025-04-01/CreateFluxConfigurationWithBucket.json b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/fluxConfigurations/examples/2025-04-01/CreateFluxConfigurationWithBucket.json new file mode 100644 index 000000000000..8bcebe9c9ee3 --- /dev/null +++ b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/fluxConfigurations/examples/2025-04-01/CreateFluxConfigurationWithBucket.json @@ -0,0 +1,305 @@ +{ + "parameters": { + "api-version": "2025-04-01", + "clusterName": "clusterName1", + "clusterResourceName": "connectedClusters", + "clusterRp": "Microsoft.Kubernetes", + "fluxConfiguration": { + "properties": { + "bucket": { + "accessKey": "fluxminiotest", + "bucketName": "flux", + "syncIntervalInSeconds": 1000, + "timeoutInSeconds": 1000, + "url": "https://fluxminiotest.az.minio.io" + }, + "kustomizations": { + "srs-kustomization1": { + "path": "./test/path", + "dependsOn": [], + "syncIntervalInSeconds": 600, + "timeoutInSeconds": 600 + }, + "srs-kustomization2": { + "path": "./other/test/path", + "dependsOn": [ + "srs-kustomization1" + ], + "prune": false, + "retryIntervalInSeconds": 600, + "syncIntervalInSeconds": 600, + "timeoutInSeconds": 600 + } + }, + "namespace": "srs-namespace", + "scope": "cluster", + "sourceKind": "Bucket", + "suspend": false + } + }, + "fluxConfigurationName": "srs-fluxconfig", + "resourceGroupName": "rg1", + "subscriptionId": "subId1" + }, + "responses": { + "200": { + "description": "Details of the Kubernetes Flux Configuration's current status.", + "body": { + "name": "srs-fluxconfig", + "type": "Microsoft.KubernetesConfiguration/fluxConfigurations", + "id": "/subscriptions/subId1/resourceGroups/rg1/providers/Microsoft.Kubernetes/connectedClusters/clusterName1/providers/Microsoft.KubernetesConfiguration/fluxConfigurations/srs-fluxconfig", + "properties": { + "bucket": { + "accessKey": "fluxminiotest", + "bucketName": "flux", + "syncIntervalInSeconds": 1000, + "timeoutInSeconds": 1000, + "url": "https://fluxminiotest.az.minio.io" + }, + "complianceState": "Compliant", + "errorMessage": "", + "gitRepository": null, + "kustomizations": { + "srs-kustomization1": { + "name": "srs-kustomization1", + "path": "./test/path", + "dependsOn": [], + "syncIntervalInSeconds": 600, + "timeoutInSeconds": 600 + }, + "srs-kustomization2": { + "name": "srs-kustomization2", + "path": "./other/test/path", + "dependsOn": [ + "srs-kustomization1" + ], + "prune": false, + "retryIntervalInSeconds": 600, + "syncIntervalInSeconds": 600, + "timeoutInSeconds": 600 + } + }, + "namespace": "srs-namespace", + "provisioningState": "Succeeded", + "repositoryPublicKey": "", + "scope": "cluster", + "sourceKind": "Bucket", + "sourceSyncedCommitId": "0ba6f0d30760d567de0bac86c8c4eec13ce1a590", + "sourceUpdatedAt": "2021-05-19T18:17:12Z", + "statusUpdatedAt": "2021-05-19T18:17:12Z", + "statuses": [ + { + "name": "srs-fluxconfig", + "appliedBy": null, + "complianceState": "Compliant", + "helmReleaseProperties": null, + "kind": "Bucket", + "statusConditions": [ + { + "type": "Ready", + "lastTransitionTime": "2022-05-04T07:17:30+00:00", + "message": "stored artifact for revision '55396be14f18fa2b977c1f22becef26a94d1d9a7ccb1e19d12f9cac52d757a84'", + "reason": "Succeeded", + "status": "True" + } + ] + }, + { + "name": "srs-fluxconfig-srs-kustomization1", + "appliedBy": null, + "complianceState": "Compliant", + "helmReleaseProperties": { + "failureCount": null, + "helmChartRef": { + "name": "myname", + "namespace": "mynamespace" + }, + "installFailureCount": null, + "lastRevisionApplied": 1, + "upgradeFailureCount": null + }, + "kind": "Kustomization", + "statusConditions": [ + { + "type": "Ready", + "lastTransitionTime": "2021-05-19T18:12:40Z", + "message": "'Applied revision: 0ba6f0d30760d567de0bac86c8c4eec13ce1a590'", + "reason": "ReconciliationSucceeded", + "status": "True" + } + ] + }, + { + "name": "srs-fluxconfig-srs-kustomization2", + "appliedBy": null, + "complianceState": "Compliant", + "helmReleaseProperties": { + "failureCount": null, + "helmChartRef": { + "name": "myname", + "namespace": "mynamespace" + }, + "installFailureCount": null, + "lastRevisionApplied": 1, + "upgradeFailureCount": null + }, + "kind": "Kustomization", + "statusConditions": [ + { + "type": "Ready", + "lastTransitionTime": "2021-05-19T18:12:40Z", + "message": "'Applied revision: 0ba6f0d30760d567de0bac86c8c4eec13ce1a590'", + "reason": "ReconciliationSucceeded", + "status": "True" + } + ] + } + ], + "suspend": false + }, + "systemData": { + "createdAt": "2021-05-19T05:10:57.027Z", + "createdBy": "string", + "createdByType": "Application", + "lastModifiedAt": "2020-05-19T05:10:57.027Z", + "lastModifiedBy": "string", + "lastModifiedByType": "Application" + } + }, + "headers": { + "Operation-Location": "/subscriptions/subId1/resourceGroups/rg1/providers/Microsoft.Kubernetes/connectedClusters/clusterName1/providers/Microsoft.KubernetesConfiguration/fluxConfigurations/ClusterMonitor/srs-fluxconfig/{operationId}", + "x-ms-async-operation-timeout": "PT48H" + } + }, + "201": { + "description": "Details of the Kubernetes Flux Configuration's current status.", + "body": { + "name": "srs-fluxconfig", + "type": "Microsoft.KubernetesConfiguration/fluxConfigurations", + "id": "/subscriptions/subId1/resourceGroups/rg1/providers/Microsoft.Kubernetes/connectedClusters/clusterName1/providers/Microsoft.KubernetesConfiguration/fluxConfigurations/srs-fluxconfig", + "properties": { + "bucket": { + "accessKey": "fluxminiotest", + "bucketName": "flux", + "syncIntervalInSeconds": 1000, + "timeoutInSeconds": 1000, + "url": "https://fluxminiotest.az.minio.io" + }, + "complianceState": "Compliant", + "errorMessage": "", + "gitRepository": null, + "kustomizations": { + "srs-kustomization1": { + "name": "srs-kustomization1", + "path": "./test/path", + "dependsOn": [], + "syncIntervalInSeconds": 600, + "timeoutInSeconds": 600 + }, + "srs-kustomization2": { + "name": "srs-kustomization2", + "path": "./other/test/path", + "dependsOn": [ + "srs-kustomization1" + ], + "prune": false, + "retryIntervalInSeconds": 600, + "syncIntervalInSeconds": 600, + "timeoutInSeconds": 600 + } + }, + "namespace": "srs-namespace", + "provisioningState": "Succeeded", + "repositoryPublicKey": "", + "scope": "cluster", + "sourceKind": "Bucket", + "sourceSyncedCommitId": "0ba6f0d30760d567de0bac86c8c4eec13ce1a590", + "sourceUpdatedAt": "2021-05-19T18:17:12Z", + "statusUpdatedAt": "2021-05-19T18:17:12Z", + "statuses": [ + { + "name": "srs-fluxconfig", + "appliedBy": null, + "complianceState": "Compliant", + "kind": "Bucket", + "statusConditions": [ + { + "type": "Ready", + "lastTransitionTime": "2022-05-04T07:17:30+00:00", + "message": "stored artifact for revision '55396be14f18fa2b977c1f22becef26a94d1d9a7ccb1e19d12f9cac52d757a84'", + "reason": "Succeeded", + "status": "True" + } + ] + }, + { + "name": "srs-fluxconfig-srs-kustomization1", + "appliedBy": null, + "complianceState": "Compliant", + "helmReleaseProperties": { + "failureCount": null, + "helmChartRef": { + "name": "myname", + "namespace": "mynamespace" + }, + "installFailureCount": null, + "lastRevisionApplied": 1, + "upgradeFailureCount": null + }, + "kind": "Kustomization", + "statusConditions": [ + { + "type": "Ready", + "lastTransitionTime": "2021-05-19T18:12:40Z", + "message": "'Applied revision: 0ba6f0d30760d567de0bac86c8c4eec13ce1a590'", + "reason": "ReconciliationSucceeded", + "status": "True" + } + ] + }, + { + "name": "srs-fluxconfig-srs-kustomization2", + "appliedBy": null, + "complianceState": "Compliant", + "helmReleaseProperties": { + "failureCount": null, + "helmChartRef": { + "name": "myname", + "namespace": "mynamespace" + }, + "installFailureCount": null, + "lastRevisionApplied": 1, + "upgradeFailureCount": null + }, + "kind": "Kustomization", + "statusConditions": [ + { + "type": "Ready", + "lastTransitionTime": "2021-05-19T18:12:40Z", + "message": "'Applied revision: 0ba6f0d30760d567de0bac86c8c4eec13ce1a590'", + "reason": "ReconciliationSucceeded", + "status": "True" + } + ] + } + ], + "suspend": false + }, + "systemData": { + "createdAt": "2021-05-19T05:10:57.027Z", + "createdBy": "string", + "createdByType": "Application", + "lastModifiedAt": "2020-05-19T05:10:57.027Z", + "lastModifiedBy": "string", + "lastModifiedByType": "Application" + } + }, + "headers": { + "Operation-Location": "/subscriptions/subId1/resourceGroups/rg1/providers/Microsoft.Kubernetes/connectedClusters/clusterName1/providers/Microsoft.KubernetesConfiguration/fluxConfigurations/ClusterMonitor/srs-fluxconfig/{operationId}", + "x-ms-async-operation-timeout": "PT48H" + } + } + }, + "operationId": "FluxConfigurations_CreateOrUpdate", + "title": "Create Flux Configuration with Bucket Source Kind" +} diff --git a/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/fluxConfigurations/examples/2025-04-01/CreateFluxConfigurationWithOCIRepository.json b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/fluxConfigurations/examples/2025-04-01/CreateFluxConfigurationWithOCIRepository.json new file mode 100644 index 000000000000..8118e198e0fe --- /dev/null +++ b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/fluxConfigurations/examples/2025-04-01/CreateFluxConfigurationWithOCIRepository.json @@ -0,0 +1,306 @@ +{ + "parameters": { + "api-version": "2025-04-01", + "clusterName": "clusterName1", + "clusterResourceName": "connectedClusters", + "clusterRp": "Microsoft.Kubernetes", + "fluxConfiguration": { + "properties": { + "kustomizations": { + "srs-kustomization1": { + "path": "./test/path", + "dependsOn": [], + "syncIntervalInSeconds": 600, + "timeoutInSeconds": 600 + }, + "srs-kustomization2": { + "path": "./other/test/path", + "dependsOn": [ + "srs-kustomization1" + ], + "prune": false, + "retryIntervalInSeconds": 600, + "syncIntervalInSeconds": 600, + "timeoutInSeconds": 600 + } + }, + "namespace": "srs-namespace", + "ociRepository": { + "serviceAccountName": "testserviceaccount", + "syncIntervalInSeconds": 1000, + "timeoutInSeconds": 1000, + "url": "oci://ghcr.io/stefanprodan/manifests/podinfo" + }, + "scope": "cluster", + "sourceKind": "OCIRepository", + "suspend": false + } + }, + "fluxConfigurationName": "srs-fluxconfig", + "resourceGroupName": "rg1", + "subscriptionId": "subId1" + }, + "responses": { + "200": { + "description": "Details of the Kubernetes Flux Configuration's current status.", + "body": { + "name": "srs-fluxconfig", + "type": "Microsoft.KubernetesConfiguration/fluxConfigurations", + "id": "/subscriptions/subId1/resourceGroups/rg1/providers/Microsoft.Kubernetes/connectedClusters/clusterName1/providers/Microsoft.KubernetesConfiguration/fluxConfigurations/srs-fluxconfig", + "properties": { + "azureBlob": null, + "bucket": null, + "complianceState": "Compliant", + "errorMessage": "", + "gitRepository": null, + "kustomizations": { + "srs-kustomization1": { + "name": "srs-kustomization1", + "path": "./test/path", + "dependsOn": [], + "syncIntervalInSeconds": 600, + "timeoutInSeconds": 600 + }, + "srs-kustomization2": { + "name": "srs-kustomization2", + "path": "./other/test/path", + "dependsOn": [ + "srs-kustomization1" + ], + "prune": false, + "retryIntervalInSeconds": 600, + "syncIntervalInSeconds": 600, + "timeoutInSeconds": 600 + } + }, + "namespace": "srs-namespace", + "ociRepository": { + "serviceAccountName": "testserviceaccount", + "syncIntervalInSeconds": 1000, + "timeoutInSeconds": 1000, + "url": "oci://ghcr.io/stefanprodan/manifests/podinfo" + }, + "provisioningState": "Succeeded", + "repositoryPublicKey": "", + "scope": "cluster", + "sourceKind": "OCIRepository", + "sourceSyncedCommitId": "0ba6f0d30760d567de0bac86c8c4eec13ce1a590", + "sourceUpdatedAt": "2021-05-19T18:17:12Z", + "statusUpdatedAt": "2021-05-19T18:17:12Z", + "statuses": [ + { + "name": "srs-fluxconfig", + "appliedBy": null, + "complianceState": "Compliant", + "helmReleaseProperties": null, + "kind": "OCIRepository", + "statusConditions": [ + { + "type": "Ready", + "lastTransitionTime": "2022-05-04T07:17:30+00:00", + "message": "stored artifact for revision '55396be14f18fa2b977c1f22becef26a94d1d9a7ccb1e19d12f9cac52d757a84'", + "reason": "Succeeded", + "status": "True" + } + ] + }, + { + "name": "srs-fluxconfig-srs-kustomization1", + "appliedBy": null, + "complianceState": "Compliant", + "helmReleaseProperties": { + "failureCount": null, + "helmChartRef": { + "name": "myname", + "namespace": "mynamespace" + }, + "installFailureCount": null, + "lastRevisionApplied": 1, + "upgradeFailureCount": null + }, + "kind": "Kustomization", + "statusConditions": [ + { + "type": "Ready", + "lastTransitionTime": "2021-05-19T18:12:40Z", + "message": "'Applied revision: 0ba6f0d30760d567de0bac86c8c4eec13ce1a590'", + "reason": "ReconciliationSucceeded", + "status": "True" + } + ] + }, + { + "name": "srs-fluxconfig-srs-kustomization2", + "appliedBy": null, + "complianceState": "Compliant", + "helmReleaseProperties": { + "failureCount": null, + "helmChartRef": { + "name": "myname", + "namespace": "mynamespace" + }, + "installFailureCount": null, + "lastRevisionApplied": 1, + "upgradeFailureCount": null + }, + "kind": "Kustomization", + "statusConditions": [ + { + "type": "Ready", + "lastTransitionTime": "2021-05-19T18:12:40Z", + "message": "'Applied revision: 0ba6f0d30760d567de0bac86c8c4eec13ce1a590'", + "reason": "ReconciliationSucceeded", + "status": "True" + } + ] + } + ], + "suspend": false + }, + "systemData": { + "createdAt": "2021-05-19T05:10:57.027Z", + "createdBy": "string", + "createdByType": "Application", + "lastModifiedAt": "2020-05-19T05:10:57.027Z", + "lastModifiedBy": "string", + "lastModifiedByType": "Application" + } + }, + "headers": { + "Operation-Location": "/subscriptions/subId1/resourceGroups/rg1/providers/Microsoft.Kubernetes/connectedClusters/clusterName1/providers/Microsoft.KubernetesConfiguration/fluxConfigurations/ClusterMonitor/srs-fluxconfig/{operationId}", + "x-ms-async-operation-timeout": "PT48H" + } + }, + "201": { + "description": "Details of the Kubernetes Flux Configuration's current status.", + "body": { + "name": "srs-fluxconfig", + "type": "Microsoft.KubernetesConfiguration/fluxConfigurations", + "id": "/subscriptions/subId1/resourceGroups/rg1/providers/Microsoft.Kubernetes/connectedClusters/clusterName1/providers/Microsoft.KubernetesConfiguration/fluxConfigurations/srs-fluxconfig", + "properties": { + "azureBlob": null, + "bucket": null, + "complianceState": "Compliant", + "errorMessage": "", + "gitRepository": null, + "kustomizations": { + "srs-kustomization1": { + "name": "srs-kustomization1", + "path": "./test/path", + "dependsOn": [], + "syncIntervalInSeconds": 600, + "timeoutInSeconds": 600 + }, + "srs-kustomization2": { + "name": "srs-kustomization2", + "path": "./other/test/path", + "dependsOn": [ + "srs-kustomization1" + ], + "prune": false, + "retryIntervalInSeconds": 600, + "syncIntervalInSeconds": 600, + "timeoutInSeconds": 600 + } + }, + "namespace": "srs-namespace", + "ociRepository": { + "serviceAccountName": "testserviceaccount", + "syncIntervalInSeconds": 1000, + "timeoutInSeconds": 1000, + "url": "oci://ghcr.io/stefanprodan/manifests/podinfo" + }, + "provisioningState": "Succeeded", + "repositoryPublicKey": "", + "scope": "cluster", + "sourceKind": "OCIRepository", + "sourceSyncedCommitId": "0ba6f0d30760d567de0bac86c8c4eec13ce1a590", + "sourceUpdatedAt": "2021-05-19T18:17:12Z", + "statusUpdatedAt": "2021-05-19T18:17:12Z", + "statuses": [ + { + "name": "srs-fluxconfig", + "appliedBy": null, + "complianceState": "Compliant", + "kind": "OCIRepository", + "statusConditions": [ + { + "type": "Ready", + "lastTransitionTime": "2022-05-04T07:17:30+00:00", + "message": "stored artifact for revision '55396be14f18fa2b977c1f22becef26a94d1d9a7ccb1e19d12f9cac52d757a84'", + "reason": "Succeeded", + "status": "True" + } + ] + }, + { + "name": "srs-fluxconfig-srs-kustomization1", + "appliedBy": null, + "complianceState": "Compliant", + "helmReleaseProperties": { + "failureCount": null, + "helmChartRef": { + "name": "myname", + "namespace": "mynamespace" + }, + "installFailureCount": null, + "lastRevisionApplied": 1, + "upgradeFailureCount": null + }, + "kind": "Kustomization", + "statusConditions": [ + { + "type": "Ready", + "lastTransitionTime": "2021-05-19T18:12:40Z", + "message": "'Applied revision: 0ba6f0d30760d567de0bac86c8c4eec13ce1a590'", + "reason": "ReconciliationSucceeded", + "status": "True" + } + ] + }, + { + "name": "srs-fluxconfig-srs-kustomization2", + "appliedBy": null, + "complianceState": "Compliant", + "helmReleaseProperties": { + "failureCount": null, + "helmChartRef": { + "name": "myname", + "namespace": "mynamespace" + }, + "installFailureCount": null, + "lastRevisionApplied": 1, + "upgradeFailureCount": null + }, + "kind": "Kustomization", + "statusConditions": [ + { + "type": "Ready", + "lastTransitionTime": "2021-05-19T18:12:40Z", + "message": "'Applied revision: 0ba6f0d30760d567de0bac86c8c4eec13ce1a590'", + "reason": "ReconciliationSucceeded", + "status": "True" + } + ] + } + ], + "suspend": false + }, + "systemData": { + "createdAt": "2021-05-19T05:10:57.027Z", + "createdBy": "string", + "createdByType": "Application", + "lastModifiedAt": "2020-05-19T05:10:57.027Z", + "lastModifiedBy": "string", + "lastModifiedByType": "Application" + } + }, + "headers": { + "Operation-Location": "/subscriptions/subId1/resourceGroups/rg1/providers/Microsoft.Kubernetes/connectedClusters/clusterName1/providers/Microsoft.KubernetesConfiguration/fluxConfigurations/ClusterMonitor/srs-fluxconfig/{operationId}", + "x-ms-async-operation-timeout": "PT48H" + } + } + }, + "operationId": "FluxConfigurations_CreateOrUpdate", + "title": "Create Flux Configuration with OCIRepository Source Kind" +} diff --git a/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/fluxConfigurations/examples/2025-04-01/CreateFluxConfigurationWithProvider.json b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/fluxConfigurations/examples/2025-04-01/CreateFluxConfigurationWithProvider.json new file mode 100644 index 000000000000..c34a08f834c7 --- /dev/null +++ b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/fluxConfigurations/examples/2025-04-01/CreateFluxConfigurationWithProvider.json @@ -0,0 +1,406 @@ +{ + "parameters": { + "api-version": "2025-04-01", + "clusterName": "clusterName1", + "clusterResourceName": "connectedClusters", + "clusterRp": "Microsoft.Kubernetes", + "fluxConfiguration": { + "properties": { + "gitRepository": { + "httpsCACert": "ZXhhbXBsZWNlcnRpZmljYXRl", + "provider": "Azure", + "repositoryRef": { + "branch": "master" + }, + "syncIntervalInSeconds": 600, + "timeoutInSeconds": 600, + "url": "https://dev.azure.com/org/proj/_git/arc-k8s-demo" + }, + "kustomizations": { + "srs-kustomization1": { + "path": "./test/path", + "dependsOn": [], + "postBuild": { + "substitute": { + "cluster_env": "prod", + "replica_count": "2" + }, + "substituteFrom": [ + { + "name": "cluster-test", + "kind": "ConfigMap", + "optional": true + } + ] + }, + "syncIntervalInSeconds": 600, + "timeoutInSeconds": 600, + "wait": true + }, + "srs-kustomization2": { + "path": "./other/test/path", + "dependsOn": [ + "srs-kustomization1" + ], + "postBuild": { + "substituteFrom": [ + { + "name": "cluster-values", + "kind": "ConfigMap", + "optional": true + }, + { + "name": "secret-name", + "kind": "Secret", + "optional": false + } + ] + }, + "prune": false, + "retryIntervalInSeconds": 600, + "syncIntervalInSeconds": 600, + "timeoutInSeconds": 600, + "wait": false + } + }, + "namespace": "srs-namespace", + "reconciliationWaitDuration": "PT30M", + "scope": "cluster", + "sourceKind": "GitRepository", + "suspend": false, + "waitForReconciliation": true + } + }, + "fluxConfigurationName": "srs-fluxconfig", + "resourceGroupName": "rg1", + "subscriptionId": "subId1" + }, + "responses": { + "200": { + "description": "Details of the Kubernetes Flux Configuration's current status.", + "body": { + "name": "srs-fluxconfig", + "type": "Microsoft.KubernetesConfiguration/fluxConfigurations", + "id": "/subscriptions/subId1/resourceGroups/rg1/providers/Microsoft.Kubernetes/connectedClusters/clusterName1/providers/Microsoft.KubernetesConfiguration/fluxConfigurations/srs-fluxconfig", + "properties": { + "complianceState": "Compliant", + "errorMessage": "", + "gitRepository": { + "httpsCACert": "ZXhhbXBsZWNlcnRpZmljYXRl", + "repositoryRef": { + "branch": "master", + "commit": null, + "semver": null, + "tag": null + }, + "syncIntervalInSeconds": 600, + "timeoutInSeconds": 600, + "url": "https://github.com/Azure/arc-k8s-demo" + }, + "kustomizations": { + "srs-kustomization1": { + "name": "srs-kustomization1", + "path": "./test/path", + "dependsOn": [], + "postBuild": { + "substitute": { + "cluster_env": "prod", + "replica_count": "2" + }, + "substituteFrom": [ + { + "name": "cluster-test", + "kind": "ConfigMap", + "optional": true + } + ] + }, + "syncIntervalInSeconds": 600, + "timeoutInSeconds": 600, + "wait": true + }, + "srs-kustomization2": { + "name": "srs-kustomization2", + "path": "./other/test/path", + "dependsOn": [ + "srs-kustomization1" + ], + "postBuild": { + "substituteFrom": [ + { + "name": "cluster-values", + "kind": "ConfigMap", + "optional": true + }, + { + "name": "secret-name", + "kind": "Secret", + "optional": false + } + ] + }, + "prune": false, + "retryIntervalInSeconds": 600, + "syncIntervalInSeconds": 600, + "timeoutInSeconds": 600, + "wait": false + } + }, + "namespace": "srs-namespace", + "provisioningState": "Succeeded", + "repositoryPublicKey": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDiNkrANrhtRy+02Xc7b5bwvgOKvQMbqUQaXeB6FCDkbLaavw/zO/vIhIBEQu+vbBt6IlI/Pui0rMFr5JjA8Vwwd85oabzU07TPzbFvKSU9eCXqWRKWf0DHNQj/kxPJNtyPYFv3lGoiZZ6QzejOxlW/lPPokUePN0oI10daWwqznm2q0Cmh1EgPUYveq3J5KCWncZXCdwY36zWYulCWFaqazoaGy4kxcqlVy+mPjE/UJthaoLm3mq+23uhlmmfCc1j7W6+H6fcOwTyOtcbimxz2Ug8HlTzSTXBPtEe7qyllMyk62EPNUUq4bVoVsex9sKBK6/hW0Cn2P5i5jslUPCQF", + "scope": "cluster", + "sourceKind": "GitRepository", + "sourceSyncedCommitId": "master/0ba6f0d30760d567de0bac86c8c4eec13ce1a590", + "sourceUpdatedAt": "2021-05-19T18:17:12Z", + "statusUpdatedAt": "2021-05-19T18:17:12Z", + "statuses": [ + { + "name": "srs-fluxconfig", + "appliedBy": null, + "complianceState": "Compliant", + "helmReleaseProperties": null, + "kind": "GitRepository", + "statusConditions": [ + { + "type": "Ready", + "lastTransitionTime": "2021-05-19T18:12:40Z", + "message": "'Fetched revision: master/0ba6f0d30760d567de0bac86c8c4eec13ce1a590'", + "reason": "GitOperationSucceed", + "status": "True" + } + ] + }, + { + "name": "srs-fluxconfig-srs-kustomization1", + "appliedBy": null, + "complianceState": "Compliant", + "helmReleaseProperties": { + "failureCount": null, + "helmChartRef": { + "name": "myname", + "namespace": "mynamespace" + }, + "installFailureCount": null, + "lastRevisionApplied": 1, + "upgradeFailureCount": null + }, + "kind": "Kustomization", + "statusConditions": [ + { + "type": "Ready", + "lastTransitionTime": "2021-05-19T18:12:40Z", + "message": "'Applied revision: master/0ba6f0d30760d567de0bac86c8c4eec13ce1a590'", + "reason": "ReconciliationSucceeded", + "status": "True" + } + ] + }, + { + "name": "srs-fluxconfig-srs-kustomization2", + "appliedBy": null, + "complianceState": "Compliant", + "helmReleaseProperties": { + "failureCount": null, + "helmChartRef": { + "name": "myname", + "namespace": "mynamespace" + }, + "installFailureCount": null, + "lastRevisionApplied": 1, + "upgradeFailureCount": null + }, + "kind": "Kustomization", + "statusConditions": [ + { + "type": "Ready", + "lastTransitionTime": "2021-05-19T18:12:40Z", + "message": "'Applied revision: master/0ba6f0d30760d567de0bac86c8c4eec13ce1a590'", + "reason": "ReconciliationSucceeded", + "status": "True" + } + ] + } + ], + "suspend": false + }, + "systemData": { + "createdAt": "2021-05-19T05:10:57.027Z", + "createdBy": "string", + "createdByType": "Application", + "lastModifiedAt": "2020-05-19T05:10:57.027Z", + "lastModifiedBy": "string", + "lastModifiedByType": "Application" + } + }, + "headers": { + "Operation-Location": "/subscriptions/subId1/resourceGroups/rg1/providers/Microsoft.Kubernetes/connectedClusters/clusterName1/providers/Microsoft.KubernetesConfiguration/fluxConfigurations/ClusterMonitor/srs-fluxconfig/{operationId}", + "x-ms-async-operation-timeout": "PT48H" + } + }, + "201": { + "description": "Details of the Kubernetes Flux Configuration's current status.", + "body": { + "name": "srs-fluxconfig", + "type": "Microsoft.KubernetesConfiguration/fluxConfigurations", + "id": "/subscriptions/subId1/resourceGroups/rg1/providers/Microsoft.Kubernetes/connectedClusters/clusterName1/providers/Microsoft.KubernetesConfiguration/fluxConfigurations/srs-fluxconfig", + "properties": { + "complianceState": "Compliant", + "errorMessage": "", + "gitRepository": { + "httpsCACert": "ZXhhbXBsZWNlcnRpZmljYXRl", + "repositoryRef": { + "branch": "master", + "commit": null, + "semver": null, + "tag": null + }, + "syncIntervalInSeconds": 600, + "timeoutInSeconds": 600, + "url": "https://github.com/Azure/arc-k8s-demo" + }, + "kustomizations": { + "srs-kustomization1": { + "name": "srs-", + "path": "./test/path", + "dependsOn": [], + "postBuild": { + "substitute": { + "cluster_env": "prod", + "replica_count": "2" + }, + "substituteFrom": [ + { + "name": "cluster-test", + "kind": "ConfigMap", + "optional": true + } + ] + }, + "syncIntervalInSeconds": 600, + "timeoutInSeconds": 600, + "wait": true + }, + "srs-kustomization2": { + "name": "srs-kustomization2", + "path": "./other/test/path", + "dependsOn": [ + "srs-kustomization1" + ], + "postBuild": { + "substituteFrom": [ + { + "name": "cluster-values", + "kind": "ConfigMap", + "optional": true + }, + { + "name": "secret-name", + "kind": "Secret", + "optional": false + } + ] + }, + "prune": false, + "retryIntervalInSeconds": 600, + "syncIntervalInSeconds": 600, + "timeoutInSeconds": 600, + "wait": false + } + }, + "namespace": "srs-namespace", + "provisioningState": "Succeeded", + "repositoryPublicKey": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDiNkrANrhtRy+02Xc7b5bwvgOKvQMbqUQaXeB6FCDkbLaavw/zO/vIhIBEQu+vbBt6IlI/Pui0rMFr5JjA8Vwwd85oabzU07TPzbFvKSU9eCXqWRKWf0DHNQj/kxPJNtyPYFv3lGoiZZ6QzejOxlW/lPPokUePN0oI10daWwqznm2q0Cmh1EgPUYveq3J5KCWncZXCdwY36zWYulCWFaqazoaGy4kxcqlVy+mPjE/UJthaoLm3mq+23uhlmmfCc1j7W6+H6fcOwTyOtcbimxz2Ug8HlTzSTXBPtEe7qyllMyk62EPNUUq4bVoVsex9sKBK6/hW0Cn2P5i5jslUPCQF", + "scope": "cluster", + "sourceKind": "GitRepository", + "sourceSyncedCommitId": "master/0ba6f0d30760d567de0bac86c8c4eec13ce1a590", + "sourceUpdatedAt": "2021-05-19T18:17:12Z", + "statusUpdatedAt": "2021-05-19T18:17:12Z", + "statuses": [ + { + "name": "srs-fluxconfig", + "appliedBy": null, + "complianceState": "Compliant", + "kind": "GitRepository", + "statusConditions": [ + { + "type": "Ready", + "lastTransitionTime": "2021-05-19T18:12:40Z", + "message": "'Fetched revision: master/0ba6f0d30760d567de0bac86c8c4eec13ce1a590'", + "reason": "GitOperationSucceed", + "status": "True" + } + ] + }, + { + "name": "srs-fluxconfig-srs-kustomization1", + "appliedBy": null, + "complianceState": "Compliant", + "helmReleaseProperties": { + "failureCount": null, + "helmChartRef": { + "name": "myname", + "namespace": "mynamespace" + }, + "installFailureCount": null, + "lastRevisionApplied": 1, + "upgradeFailureCount": null + }, + "kind": "Kustomization", + "statusConditions": [ + { + "type": "Ready", + "lastTransitionTime": "2021-05-19T18:12:40Z", + "message": "'Applied revision: master/0ba6f0d30760d567de0bac86c8c4eec13ce1a590'", + "reason": "ReconciliationSucceeded", + "status": "True" + } + ] + }, + { + "name": "srs-fluxconfig-srs-kustomization2", + "appliedBy": null, + "complianceState": "Compliant", + "helmReleaseProperties": { + "failureCount": null, + "helmChartRef": { + "name": "myname", + "namespace": "mynamespace" + }, + "installFailureCount": null, + "lastRevisionApplied": 1, + "upgradeFailureCount": null + }, + "kind": "Kustomization", + "statusConditions": [ + { + "type": "Ready", + "lastTransitionTime": "2021-05-19T18:12:40Z", + "message": "'Applied revision: master/0ba6f0d30760d567de0bac86c8c4eec13ce1a590'", + "reason": "ReconciliationSucceeded", + "status": "True" + } + ] + } + ], + "suspend": false + }, + "systemData": { + "createdAt": "2021-05-19T05:10:57.027Z", + "createdBy": "string", + "createdByType": "Application", + "lastModifiedAt": "2020-05-19T05:10:57.027Z", + "lastModifiedBy": "string", + "lastModifiedByType": "Application" + } + }, + "headers": { + "Azure-AsyncOperation": "http://management.azure.com/subscriptions/subId/resourceGroups/rg1/providers/Microsoft.Kubernetes/ConnectedClusters/clusterName1/providers/Microsoft.KubernetesConfiguration/fluxConfigurations/srs-fluxconfig/operations/operationId?api-version=2025-04-01", + "Operation-Location": "/subscriptions/subId1/resourceGroups/rg1/providers/Microsoft.Kubernetes/connectedClusters/clusterName1/providers/Microsoft.KubernetesConfiguration/fluxConfigurations/ClusterMonitor/srs-fluxconfig/{operationId}", + "x-ms-async-operation-timeout": "PT48H" + } + } + }, + "operationId": "FluxConfigurations_CreateOrUpdate", + "title": "Create Flux Configuration with Git Repository Provider" +} diff --git a/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/fluxConfigurations/examples/2025-04-01/DeleteFluxConfiguration.json b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/fluxConfigurations/examples/2025-04-01/DeleteFluxConfiguration.json new file mode 100644 index 000000000000..d20f81907ebb --- /dev/null +++ b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/fluxConfigurations/examples/2025-04-01/DeleteFluxConfiguration.json @@ -0,0 +1,25 @@ +{ + "parameters": { + "api-version": "2025-04-01", + "clusterName": "clusterName1", + "clusterResourceName": "connectedClusters", + "clusterRp": "Microsoft.Kubernetes", + "fluxConfigurationName": "srs-fluxconfig", + "resourceGroupName": "rg1", + "subscriptionId": "subId1" + }, + "responses": { + "200": {}, + "202": { + "description": "Details of the Kubernetes Flux Configuration's current status.", + "headers": { + "Azure-AsyncOperation": "http://management.azure.com/subscriptions/subId/resourceGroups/rg1/providers/Microsoft.Kubernetes/ConnectedClusters/clusterName1/providers/Microsoft.KubernetesConfiguration/extensions/ClusterMonitor/operations/operationId?api-version=2025-04-01", + "Operation-Location": "/subscriptions/subId1/resourceGroups/rg1/providers/Microsoft.Kubernetes/connectedClusters/clusterName1/providers/Microsoft.KubernetesConfiguration/fluxConfigurations/srs-fluxconfig/operations/{operationId}", + "x-ms-async-operation-timeout": "PT1H" + } + }, + "204": {} + }, + "operationId": "FluxConfigurations_Delete", + "title": "Delete Flux Configuration" +} diff --git a/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/fluxConfigurations/examples/2025-04-01/GetFluxConfiguration.json b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/fluxConfigurations/examples/2025-04-01/GetFluxConfiguration.json new file mode 100644 index 000000000000..702e88f811e8 --- /dev/null +++ b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/fluxConfigurations/examples/2025-04-01/GetFluxConfiguration.json @@ -0,0 +1,176 @@ +{ + "parameters": { + "api-version": "2025-04-01", + "clusterName": "clusterName1", + "clusterResourceName": "connectedClusters", + "clusterRp": "Microsoft.Kubernetes", + "fluxConfigurationName": "srs-fluxconfig", + "resourceGroupName": "rg1", + "subscriptionId": "subId1" + }, + "responses": { + "200": { + "description": "Details of the Kubernetes Flux Configuration's current status.", + "body": { + "name": "srs-fluxconfig", + "type": "Microsoft.KubernetesConfiguration/fluxConfigurations", + "id": "/subscriptions/subId1/resourceGroups/rg1/providers/Microsoft.Kubernetes/connectedClusters/clusterName1/providers/Microsoft.KubernetesConfiguration/fluxConfigurations/srs-fluxconfig", + "properties": { + "complianceState": "Compliant", + "errorMessage": "", + "gitRepository": { + "repositoryRef": { + "branch": "master", + "commit": null, + "semver": null, + "tag": null + }, + "syncIntervalInSeconds": 600, + "timeoutInSeconds": 600, + "url": "https://github.com/Azure/arc-k8s-demo" + }, + "kustomizations": { + "srs-kustomization1": { + "name": "srs-kustomization1", + "path": "./test/path", + "dependsOn": [], + "postBuild": { + "substitute": { + "cluster_env": "prod", + "replica_count": "2" + }, + "substituteFrom": [ + { + "name": "cluster-test", + "kind": "ConfigMap", + "optional": true + } + ] + }, + "syncIntervalInSeconds": 600, + "timeoutInSeconds": 600, + "wait": true + }, + "srs-kustomization2": { + "name": "srs-kustomization2", + "path": "./other/test/path", + "dependsOn": [ + "srs-kustomization1" + ], + "postBuild": { + "substituteFrom": [ + { + "name": "cluster-values", + "kind": "ConfigMap", + "optional": true + }, + { + "name": "secret-name", + "kind": "Secret", + "optional": false + } + ] + }, + "prune": false, + "retryIntervalInSeconds": 600, + "syncIntervalInSeconds": 600, + "timeoutInSeconds": 600, + "wait": false + } + }, + "namespace": "srs-namespace", + "provisioningState": "Succeeded", + "repositoryPublicKey": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDiNkrANrhtRy+02Xc7b5bwvgOKvQMbqUQaXeB6FCDkbLaavw/zO/vIhIBEQu+vbBt6IlI/Pui0rMFr5JjA8Vwwd85oabzU07TPzbFvKSU9eCXqWRKWf0DHNQj/kxPJNtyPYFv3lGoiZZ6QzejOxlW/lPPokUePN0oI10daWwqznm2q0Cmh1EgPUYveq3J5KCWncZXCdwY36zWYulCWFaqazoaGy4kxcqlVy+mPjE/UJthaoLm3mq+23uhlmmfCc1j7W6+H6fcOwTyOtcbimxz2Ug8HlTzSTXBPtEe7qyllMyk62EPNUUq4bVoVsex9sKBK6/hW0Cn2P5i5jslUPCQF", + "scope": "cluster", + "sourceKind": "GitRepository", + "sourceSyncedCommitId": "master/0ba6f0d30760d567de0bac86c8c4eec13ce1a590", + "sourceUpdatedAt": "2021-05-19T18:17:12Z", + "statusUpdatedAt": "2021-05-19T18:17:12Z", + "statuses": [ + { + "name": "srs-fluxconfig", + "appliedBy": null, + "complianceState": "Compliant", + "helmReleaseProperties": null, + "kind": "GitRepository", + "statusConditions": [ + { + "type": "Ready", + "lastTransitionTime": "2021-05-19T18:12:40Z", + "message": "'Fetched revision: master/0ba6f0d30760d567de0bac86c8c4eec13ce1a590'", + "reason": "GitOperationSucceed", + "status": "True" + } + ] + }, + { + "name": "srs-fluxconfig-srs-kustomization1", + "appliedBy": { + "name": "my-name", + "namespace": "my-namespace" + }, + "complianceState": "Compliant", + "helmReleaseProperties": { + "failureCount": null, + "helmChartRef": { + "name": "myname", + "namespace": "mynamespace" + }, + "installFailureCount": null, + "lastRevisionApplied": 1, + "upgradeFailureCount": null + }, + "kind": "Kustomization", + "statusConditions": [ + { + "type": "Ready", + "lastTransitionTime": "2021-05-19T18:12:40Z", + "message": "'Applied revision: master/0ba6f0d30760d567de0bac86c8c4eec13ce1a590'", + "reason": "ReconciliationSucceeded", + "status": "True" + } + ] + }, + { + "name": "srs-fluxconfig-srs-kustomization2", + "appliedBy": null, + "complianceState": "Compliant", + "helmReleaseProperties": { + "failureCount": null, + "helmChartRef": { + "name": "myname", + "namespace": "mynamespace" + }, + "installFailureCount": null, + "lastRevisionApplied": 1, + "upgradeFailureCount": null + }, + "kind": "Kustomization", + "statusConditions": [ + { + "type": "Ready", + "lastTransitionTime": "2021-05-19T18:12:40Z", + "message": "'Applied revision: master/0ba6f0d30760d567de0bac86c8c4eec13ce1a590'", + "reason": "ReconciliationSucceeded", + "status": "True" + } + ] + } + ], + "suspend": false + }, + "systemData": { + "createdAt": "2021-05-19T05:10:57.027Z", + "createdBy": "string", + "createdByType": "Application", + "lastModifiedAt": "2020-05-19T05:10:57.027Z", + "lastModifiedBy": "string", + "lastModifiedByType": "Application" + } + }, + "headers": {} + } + }, + "operationId": "FluxConfigurations_Get", + "title": "Get Flux Configuration" +} diff --git a/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/fluxConfigurations/examples/2025-04-01/GetFluxConfigurationAsyncOperationStatus.json b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/fluxConfigurations/examples/2025-04-01/GetFluxConfigurationAsyncOperationStatus.json new file mode 100644 index 000000000000..7a4cd514c841 --- /dev/null +++ b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/fluxConfigurations/examples/2025-04-01/GetFluxConfigurationAsyncOperationStatus.json @@ -0,0 +1,26 @@ +{ + "parameters": { + "operationId": "99999999-9999-9999-9999-999999999999", + "api-version": "2025-04-01", + "clusterName": "clusterName1", + "clusterResourceName": "connectedClusters", + "clusterRp": "Microsoft.Kubernetes", + "fluxConfigurationName": "srs-fluxconfig", + "resourceGroupName": "rg1", + "subscriptionId": "subId1" + }, + "responses": { + "200": { + "body": { + "name": "99999999-9999-9999-9999-999999999999", + "error": null, + "id": "/subscriptions/subId1/resourceGroups/rg1/providers/Microsoft.Kubernetes/connectedClusters/clusterName1/providers/Microsoft.KubernetesConfiguration/fluxConfigurations/srs-fluxconfig/operations/99999999-9999-9999-9999-999999999999", + "properties": {}, + "status": "Succeeded" + }, + "headers": {} + } + }, + "operationId": "FluxConfigOperationStatus_Get", + "title": "FluxConfigurationAsyncOperationStatus Get" +} diff --git a/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/fluxConfigurations/examples/2025-04-01/ListFluxConfigurations.json b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/fluxConfigurations/examples/2025-04-01/ListFluxConfigurations.json new file mode 100644 index 000000000000..db673f34a6cc --- /dev/null +++ b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/fluxConfigurations/examples/2025-04-01/ListFluxConfigurations.json @@ -0,0 +1,216 @@ +{ + "parameters": { + "api-version": "2025-04-01", + "clusterName": "clusterName1", + "clusterResourceName": "connectedClusters", + "clusterRp": "Microsoft.Kubernetes", + "resourceGroupName": "rg1", + "subscriptionId": "subId1" + }, + "responses": { + "200": { + "body": { + "nextLink": null, + "value": [ + { + "name": "srs-fluxconfig", + "type": "Microsoft.KubernetesConfiguration/fluxConfigurations", + "id": "/subscriptions/subId1/resourceGroups/rg1/providers/Microsoft.Kubernetes/connectedClusters/clusterName1/providers/Microsoft.KubernetesConfiguration/fluxConfigurations/srs-fluxconfig", + "properties": { + "complianceState": "Compliant", + "errorMessage": "", + "gitRepository": { + "repositoryRef": { + "branch": "master", + "commit": null, + "semver": null, + "tag": null + }, + "syncIntervalInSeconds": 600, + "timeoutInSeconds": 600, + "url": "https://github.com/Azure/arc-k8s-demo" + }, + "kustomizations": { + "srs-kustomization1": { + "name": "srs-kustomization1", + "path": "./test/path", + "dependsOn": [], + "postBuild": { + "substitute": { + "cluster_env": "prod", + "replica_count": "2" + }, + "substituteFrom": [ + { + "name": "cluster-test", + "kind": "ConfigMap", + "optional": true + } + ] + }, + "syncIntervalInSeconds": 600, + "timeoutInSeconds": 600, + "wait": true + }, + "srs-kustomization2": { + "name": "srs-kustomization2", + "path": "./other/test/path", + "dependsOn": [ + "srs-kustomization1" + ], + "postBuild": { + "substituteFrom": [ + { + "name": "cluster-values", + "kind": "ConfigMap", + "optional": true + }, + { + "name": "secret-name", + "kind": "Secret", + "optional": false + } + ] + }, + "prune": false, + "retryIntervalInSeconds": 600, + "syncIntervalInSeconds": 600, + "timeoutInSeconds": 600, + "wait": false + } + }, + "namespace": "srs-namespace", + "provisioningState": "Succeeded", + "repositoryPublicKey": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDiNkrANrhtRy+02Xc7b5bwvgOKvQMbqUQaXeB6FCDkbLaavw/zO/vIhIBEQu+vbBt6IlI/Pui0rMFr5JjA8Vwwd85oabzU07TPzbFvKSU9eCXqWRKWf0DHNQj/kxPJNtyPYFv3lGoiZZ6QzejOxlW/lPPokUePN0oI10daWwqznm2q0Cmh1EgPUYveq3J5KCWncZXCdwY36zWYulCWFaqazoaGy4kxcqlVy+mPjE/UJthaoLm3mq+23uhlmmfCc1j7W6+H6fcOwTyOtcbimxz2Ug8HlTzSTXBPtEe7qyllMyk62EPNUUq4bVoVsex9sKBK6/hW0Cn2P5i5jslUPCQF", + "scope": "cluster", + "sourceKind": "GitRepository", + "sourceSyncedCommitId": "master/0ba6f0d30760d567de0bac86c8c4eec13ce1a590", + "sourceUpdatedAt": "2021-05-19T18:17:12Z", + "statusUpdatedAt": "2021-05-19T18:17:12Z", + "statuses": [ + { + "name": "srs-fluxconfig", + "appliedBy": null, + "complianceState": "Compliant", + "helmReleaseProperties": null, + "kind": "GitRepository", + "statusConditions": null + }, + { + "name": "srs-fluxconfig-srs-kustomization1", + "appliedBy": null, + "complianceState": "Compliant", + "helmReleaseProperties": null, + "kind": "Kustomization", + "statusConditions": null + }, + { + "name": "srs-fluxconfig-srs-kustomization2", + "appliedBy": null, + "complianceState": "Compliant", + "helmReleaseProperties": null, + "kind": "Kustomization", + "statusConditions": null + } + ], + "suspend": false + }, + "systemData": { + "createdAt": "2021-05-19T05:10:57.027Z", + "createdBy": "string", + "createdByType": "Application", + "lastModifiedAt": "2020-05-19T05:10:57.027Z", + "lastModifiedBy": "string", + "lastModifiedByType": "Application" + } + }, + { + "name": "srs-fluxconfig", + "type": "Microsoft.KubernetesConfiguration/fluxConfigurations", + "id": "/subscriptions/subId1/resourceGroups/rg1/providers/Microsoft.Kubernetes/connectedClusters/clusterName1/providers/Microsoft.KubernetesConfiguration/fluxConfigurations/srs-fluxconfig", + "properties": { + "complianceState": "Compliant", + "errorMessage": "", + "gitRepository": { + "repositoryRef": { + "branch": "master", + "commit": null, + "semver": null, + "tag": null + }, + "syncIntervalInSeconds": 600, + "timeoutInSeconds": 600, + "url": "https://github.com/Azure/arc-k8s-demo" + }, + "kustomizations": { + "srs-kustomization1": { + "name": "srs-kustomization1", + "path": "./test/path", + "dependsOn": [], + "syncIntervalInSeconds": 600, + "timeoutInSeconds": 600 + }, + "srs-kustomization2": { + "name": "srs-kustomization2", + "path": "./other/test/path", + "dependsOn": [ + "srs-kustomization1" + ], + "prune": false, + "retryIntervalInSeconds": 600, + "syncIntervalInSeconds": 600, + "timeoutInSeconds": 600 + } + }, + "namespace": "srs-namespace", + "provisioningState": "Succeeded", + "repositoryPublicKey": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDiNkrANrhtRy+02Xc7b5bwvgOKvQMbqUQaXeB6FCDkbLaavw/zO/vIhIBEQu+vbBt6IlI/Pui0rMFr5JjA8Vwwd85oabzU07TPzbFvKSU9eCXqWRKWf0DHNQj/kxPJNtyPYFv3lGoiZZ6QzejOxlW/lPPokUePN0oI10daWwqznm2q0Cmh1EgPUYveq3J5KCWncZXCdwY36zWYulCWFaqazoaGy4kxcqlVy+mPjE/UJthaoLm3mq+23uhlmmfCc1j7W6+H6fcOwTyOtcbimxz2Ug8HlTzSTXBPtEe7qyllMyk62EPNUUq4bVoVsex9sKBK6/hW0Cn2P5i5jslUPCQF", + "scope": "cluster", + "sourceKind": "GitRepository", + "sourceSyncedCommitId": "master/0ba6f0d30760d567de0bac86c8c4eec13ce1a590", + "sourceUpdatedAt": "2021-05-19T18:17:12Z", + "statusUpdatedAt": "2021-05-19T18:17:12Z", + "statuses": [ + { + "name": "srs-fluxconfig", + "appliedBy": null, + "complianceState": "Compliant", + "helmReleaseProperties": null, + "kind": "GitRepository", + "statusConditions": null + }, + { + "name": "srs-fluxconfig-srs-kustomization1", + "appliedBy": null, + "complianceState": "Compliant", + "helmReleaseProperties": null, + "kind": "Kustomization", + "statusConditions": null + }, + { + "name": "srs-fluxconfig-srs-kustomization2", + "appliedBy": null, + "complianceState": "Compliant", + "helmReleaseProperties": null, + "kind": "Kustomization", + "statusConditions": null + } + ], + "suspend": false + }, + "systemData": { + "createdAt": "2021-05-19T05:10:57.027Z", + "createdBy": "string", + "createdByType": "Application", + "lastModifiedAt": "2020-05-19T05:10:57.027Z", + "lastModifiedBy": "string", + "lastModifiedByType": "Application" + } + } + ] + } + } + }, + "operationId": "FluxConfigurations_List", + "title": "List Flux Configuration" +} diff --git a/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/fluxConfigurations/examples/2025-04-01/PatchFluxConfiguration.json b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/fluxConfigurations/examples/2025-04-01/PatchFluxConfiguration.json new file mode 100644 index 000000000000..1508db6fe9d9 --- /dev/null +++ b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/fluxConfigurations/examples/2025-04-01/PatchFluxConfiguration.json @@ -0,0 +1,266 @@ +{ + "parameters": { + "api-version": "2025-04-01", + "clusterName": "clusterName1", + "clusterResourceName": "connectedClusters", + "clusterRp": "Microsoft.Kubernetes", + "fluxConfigurationName": "srs-fluxconfig", + "fluxConfigurationPatch": { + "properties": { + "gitRepository": { + "url": "https://github.com/jonathan-innis/flux2-kustomize-helm-example.git" + }, + "kustomizations": { + "srs-kustomization1": null, + "srs-kustomization2": { + "path": "./test/alt-path", + "dependsOn": null, + "syncIntervalInSeconds": 300 + }, + "srs-kustomization3": { + "path": "./test/another-path", + "syncIntervalInSeconds": 300 + } + }, + "suspend": true + } + }, + "resourceGroupName": "rg1", + "subscriptionId": "subId1" + }, + "responses": { + "200": { + "description": "FluxConfiguration properties from not updating any property values.", + "body": { + "properties": { + "complianceState": "Compliant", + "errorMessage": "", + "gitRepository": { + "repositoryRef": { + "branch": "master", + "commit": null, + "semver": null, + "tag": null + }, + "syncIntervalInSeconds": 600, + "timeoutInSeconds": 600, + "url": "https://github.com/jonathan-innis/flux2-kustomize-helm-example.git" + }, + "kustomizations": { + "srs-kustomization2": { + "path": "./test/alt-path", + "prune": false, + "retryIntervalInSeconds": 600, + "syncIntervalInSeconds": 300, + "timeoutInSeconds": 600 + }, + "srs-kustomization3": { + "path": "./test/another-path", + "prune": false, + "retryIntervalInSeconds": null, + "syncIntervalInSeconds": 300, + "timeoutInSeconds": 600 + } + }, + "namespace": "srs-namespace", + "provisioningState": "Succeeded", + "repositoryPublicKey": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDiNkrANrhtRy+02Xc7b5bwvgOKvQMbqUQaXeB6FCDkbLaavw/zO/vIhIBEQu+vbBt6IlI/Pui0rMFr5JjA8Vwwd85oabzU07TPzbFvKSU9eCXqWRKWf0DHNQj/kxPJNtyPYFv3lGoiZZ6QzejOxlW/lPPokUePN0oI10daWwqznm2q0Cmh1EgPUYveq3J5KCWncZXCdwY36zWYulCWFaqazoaGy4kxcqlVy+mPjE/UJthaoLm3mq+23uhlmmfCc1j7W6+H6fcOwTyOtcbimxz2Ug8HlTzSTXBPtEe7qyllMyk62EPNUUq4bVoVsex9sKBK6/hW0Cn2P5i5jslUPCQF", + "scope": "cluster", + "sourceKind": "GitRepository", + "sourceSyncedCommitId": "master/0ba6f0d30760d567de0bac86c8c4eec13ce1a590", + "sourceUpdatedAt": "2021-05-19T18:17:12Z", + "statusUpdatedAt": "2021-05-19T18:17:12Z", + "statuses": [ + { + "name": "srs-fluxconfig", + "appliedBy": null, + "complianceState": "Compliant", + "helmReleaseProperties": null, + "kind": "GitRepository", + "statusConditions": [ + { + "type": "Ready", + "lastTransitionTime": "2021-05-19T18:12:40Z", + "message": "'Fetched revision: master/0ba6f0d30760d567de0bac86c8c4eec13ce1a590'", + "reason": "GitOperationSucceed", + "status": "True" + } + ] + }, + { + "name": "srs-fluxconfig-srs-kustomization1", + "appliedBy": null, + "complianceState": "Compliant", + "helmReleaseProperties": { + "failureCount": null, + "helmChartRef": { + "name": "myname", + "namespace": "mynamespace" + }, + "installFailureCount": null, + "lastRevisionApplied": 1, + "upgradeFailureCount": null + }, + "kind": "Kustomization", + "statusConditions": [ + { + "type": "Ready", + "lastTransitionTime": "2021-05-19T18:12:40Z", + "message": "'Applied revision: master/0ba6f0d30760d567de0bac86c8c4eec13ce1a590'", + "reason": "ReconciliationSucceeded", + "status": "True" + } + ] + }, + { + "name": "srs-fluxconfig-srs-kustomization2", + "appliedBy": null, + "complianceState": "Compliant", + "helmReleaseProperties": { + "failureCount": null, + "helmChartRef": { + "name": "myname", + "namespace": "mynamespace" + }, + "installFailureCount": null, + "lastRevisionApplied": 1, + "upgradeFailureCount": null + }, + "kind": "Kustomization", + "statusConditions": [ + { + "type": "Ready", + "lastTransitionTime": "2021-05-19T18:12:40Z", + "message": "'Applied revision: master/0ba6f0d30760d567de0bac86c8c4eec13ce1a590'", + "reason": "ReconciliationSucceeded", + "status": "True" + } + ] + } + ], + "suspend": false + } + } + }, + "202": { + "description": "FluxConfiguration properties and details of the Patch operation, including AsyncOperation url.", + "body": { + "properties": { + "complianceState": "Compliant", + "errorMessage": "", + "gitRepository": { + "repositoryRef": { + "branch": "master", + "commit": null, + "semver": null, + "tag": null + }, + "syncIntervalInSeconds": 600, + "timeoutInSeconds": 600, + "url": "https://github.com/jonathan-innis/flux2-kustomize-helm-example.git" + }, + "kustomizations": { + "srs-kustomization2": { + "path": "./test/alt-path", + "prune": false, + "retryIntervalInSeconds": 600, + "syncIntervalInSeconds": 300, + "timeoutInSeconds": 600 + }, + "srs-kustomization3": { + "path": "./test/another-path", + "prune": false, + "retryIntervalInSeconds": null, + "syncIntervalInSeconds": 300, + "timeoutInSeconds": 600 + } + }, + "namespace": "srs-namespace", + "provisioningState": "Succeeded", + "repositoryPublicKey": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDiNkrANrhtRy+02Xc7b5bwvgOKvQMbqUQaXeB6FCDkbLaavw/zO/vIhIBEQu+vbBt6IlI/Pui0rMFr5JjA8Vwwd85oabzU07TPzbFvKSU9eCXqWRKWf0DHNQj/kxPJNtyPYFv3lGoiZZ6QzejOxlW/lPPokUePN0oI10daWwqznm2q0Cmh1EgPUYveq3J5KCWncZXCdwY36zWYulCWFaqazoaGy4kxcqlVy+mPjE/UJthaoLm3mq+23uhlmmfCc1j7W6+H6fcOwTyOtcbimxz2Ug8HlTzSTXBPtEe7qyllMyk62EPNUUq4bVoVsex9sKBK6/hW0Cn2P5i5jslUPCQF", + "scope": "cluster", + "sourceKind": "GitRepository", + "sourceSyncedCommitId": "master/0ba6f0d30760d567de0bac86c8c4eec13ce1a590", + "sourceUpdatedAt": "2021-05-19T18:17:12Z", + "statusUpdatedAt": "2021-05-19T18:17:12Z", + "statuses": [ + { + "name": "srs-fluxconfig", + "appliedBy": null, + "complianceState": "Compliant", + "helmReleaseProperties": null, + "kind": "GitRepository", + "statusConditions": [ + { + "type": "Ready", + "lastTransitionTime": "2021-05-19T18:12:40Z", + "message": "'Fetched revision: master/0ba6f0d30760d567de0bac86c8c4eec13ce1a590'", + "reason": "GitOperationSucceed", + "status": "True" + } + ] + }, + { + "name": "srs-fluxconfig-srs-kustomization1", + "appliedBy": null, + "complianceState": "Compliant", + "helmReleaseProperties": { + "failureCount": null, + "helmChartRef": { + "name": "myname", + "namespace": "mynamespace" + }, + "installFailureCount": null, + "lastRevisionApplied": 1, + "upgradeFailureCount": null + }, + "kind": "Kustomization", + "statusConditions": [ + { + "type": "Ready", + "lastTransitionTime": "2021-05-19T18:12:40Z", + "message": "'Applied revision: master/0ba6f0d30760d567de0bac86c8c4eec13ce1a590'", + "reason": "ReconciliationSucceeded", + "status": "True" + } + ] + }, + { + "name": "srs-fluxconfig-srs-kustomization2", + "appliedBy": null, + "complianceState": "Compliant", + "helmReleaseProperties": { + "failureCount": null, + "helmChartRef": { + "name": "myname", + "namespace": "mynamespace" + }, + "installFailureCount": null, + "lastRevisionApplied": 1, + "upgradeFailureCount": null + }, + "kind": "Kustomization", + "statusConditions": [ + { + "type": "Ready", + "lastTransitionTime": "2021-05-19T18:12:40Z", + "message": "'Applied revision: master/0ba6f0d30760d567de0bac86c8c4eec13ce1a590'", + "reason": "ReconciliationSucceeded", + "status": "True" + } + ] + } + ], + "suspend": false + } + }, + "headers": { + "Azure-AsyncOperation": "http://management.azure.com/subscriptions/subId/resourceGroups/rg1/providers/Microsoft.Kubernetes/ConnectedClusters/clusterName1/providers/Microsoft.KubernetesConfiguration/fluxConfigurations/srs-fluxconfig/operations/operationId?api-version=2025-04-01", + "Operation-Location": "/subscriptions/subId1/resourceGroups/rg1/providers/Microsoft.Kubernetes/connectedClusters/clusterName1/providers/Microsoft.KubernetesConfiguration/fluxConfigurations/srs-fluxconfig/operations/operationId", + "x-ms-async-operation-timeout": "PT48H" + } + } + }, + "operationId": "FluxConfigurations_Update", + "title": "Patch Flux Configuration" +} diff --git a/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/fluxConfigurations/main.tsp b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/fluxConfigurations/main.tsp new file mode 100644 index 000000000000..b313f9ff14ee --- /dev/null +++ b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/fluxConfigurations/main.tsp @@ -0,0 +1,43 @@ +/** + * PLEASE DO NOT REMOVE - USED FOR CONVERTER METRICS + * Generated by package: @autorest/openapi-to-typespec + * Parameters used: + * isFullCompatible: true + * guessResourceKey: false + * Version: 0.11.12 + * Date: 2026-01-07T08:38:05.675Z + */ +import "@typespec/rest"; +import "@typespec/versioning"; +import "@azure-tools/typespec-azure-core"; +import "@azure-tools/typespec-azure-resource-manager"; +import "./models.tsp"; +import "./back-compatible.tsp"; +import "./FluxConfiguration.tsp"; + +using TypeSpec.Rest; +using TypeSpec.Http; +using Azure.ResourceManager.Foundations; +using Azure.Core; +using Azure.ResourceManager; +using TypeSpec.Versioning; +/** + * Use these APIs to create Flux Configuration resources through ARM, for Kubernetes Clusters. + */ +#suppress "@azure-tools/typespec-azure-resource-manager/missing-operations-endpoint" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" +@armProviderNamespace +@service(#{ title: "FluxConfigurationClient" }) +@versioned(Versions) +// FIXME: Common type version v2 is not supported for now. Set to v3. +@armCommonTypesVersion(Azure.ResourceManager.CommonTypes.Versions.v3) +namespace Microsoft.KubernetesConfiguration; + +/** + * The available API versions. + */ +enum Versions { + /** + * The 2025-04-01 API version. + */ + v2025_04_01: "2025-04-01", +} diff --git a/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/fluxConfigurations/models.tsp b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/fluxConfigurations/models.tsp new file mode 100644 index 000000000000..91c0e61ee388 --- /dev/null +++ b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/fluxConfigurations/models.tsp @@ -0,0 +1,1563 @@ +import "@typespec/rest"; +import "@typespec/http"; +import "@azure-tools/typespec-azure-resource-manager"; +import "@azure-tools/typespec-azure-core"; + +using TypeSpec.Rest; +using TypeSpec.Http; +using Azure.ResourceManager; +using Azure.ResourceManager.Foundations; + +namespace Microsoft.KubernetesConfiguration; + +/** + * Scope at which the configuration will be installed. + */ +union ScopeType { + string, + + /** + * cluster + */ + cluster: "cluster", + + /** + * namespace + */ + `namespace`: "namespace", +} + +/** + * Source Kind to pull the configuration data from. + */ +union SourceKindType { + string, + + /** + * GitRepository + */ + GitRepository: "GitRepository", + + /** + * Bucket + */ + Bucket: "Bucket", + + /** + * AzureBlob + */ + AzureBlob: "AzureBlob", + + /** + * OCIRepository + */ + OCIRepository: "OCIRepository", +} + +/** + * Name of the provider used for authentication. + */ +union ProviderType { + string, + + /** + * Azure provider can be used to authenticate to Azure DevOps repositories using Managed Identity. + */ + Azure: "Azure", + + /** + * GitHub provider can be used to authenticate + */ + GitHub: "GitHub", + + /** + * Generic is the default provider that indicates secret-based authentication mechanism. + */ + Generic: "Generic", +} + +/** + * The operation to be performed on the selected layer. The default value is 'extract', but it can be set to 'copy'. + */ +union OperationType { + string, + + /** + * extract + */ + extract: "extract", + + /** + * copy + */ + copy: "copy", +} + +/** + * Compliance state of the cluster object. + */ +union FluxComplianceState { + string, + + /** + * Compliant + */ + Compliant: "Compliant", + + /** + * Non-Compliant + */ + `Non-Compliant`: "Non-Compliant", + + /** + * Pending + */ + Pending: "Pending", + + /** + * Suspended + */ + Suspended: "Suspended", + + /** + * Unknown + */ + Unknown: "Unknown", +} + +/** + * The provisioning state of the resource. + */ +union ProvisioningState { + string, + + /** + * Succeeded + */ + Succeeded: "Succeeded", + + /** + * Failed + */ + Failed: "Failed", + + /** + * Canceled + */ + Canceled: "Canceled", + + /** + * Creating + */ + Creating: "Creating", + + /** + * Updating + */ + Updating: "Updating", + + /** + * Deleting + */ + Deleting: "Deleting", +} + +/** + * The type of identity that created the resource. + */ +union CreatedByType { + string, + + /** + * User + */ + User: "User", + + /** + * Application + */ + Application: "Application", + + /** + * ManagedIdentity + */ + ManagedIdentity: "ManagedIdentity", + + /** + * Key + */ + Key: "Key", +} + +/** + * Specify whether to validate the Kubernetes objects referenced in the Kustomization before applying them to the cluster. + */ +union KustomizationValidationType { + string, + + /** + * none + */ + none: "none", + + /** + * client + */ + client: "client", + + /** + * server + */ + server: "server", +} + +/** + * Properties to create a Flux Configuration resource + */ +model FluxConfigurationProperties { + /** + * Scope at which the operator will be installed. + */ + @visibility(Lifecycle.Read, Lifecycle.Create) + scope?: ScopeType = ScopeType.cluster; + + /** + * The namespace to which this configuration is installed to. Maximum of 253 lower case alphanumeric characters, hyphen and period only. + */ + @visibility(Lifecycle.Read, Lifecycle.Create) + `namespace`?: string = "default"; + + /** + * Source Kind to pull the configuration data from. + */ + sourceKind?: SourceKindType = SourceKindType.GitRepository; + + /** + * Whether this configuration should suspend its reconciliation of its kustomizations and sources. + */ + suspend?: boolean = false; + + /** + * Parameters to reconcile to the GitRepository source kind type. + */ + gitRepository?: GitRepositoryDefinition; + + /** + * Parameters to reconcile to the Bucket source kind type. + */ + bucket?: BucketDefinition; + + /** + * Parameters to reconcile to the AzureBlob source kind type. + */ + azureBlob?: AzureBlobDefinition; + + /** + * Parameters to reconcile to the OCIRepository source kind type. + */ + ociRepository?: OCIRepositoryDefinition; + + /** + * Array of kustomizations used to reconcile the artifact pulled by the source type on the cluster. + */ + #suppress "@azure-tools/typespec-azure-core/no-nullable" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + #suppress "@azure-tools/typespec-azure-resource-manager/arm-no-record" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + kustomizations?: Record | null; + + /** + * Key-value pairs of protected configuration settings for the configuration + */ + #suppress "@azure-tools/typespec-azure-resource-manager/arm-no-record" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + #suppress "@azure-tools/typespec-azure-core/no-nullable" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + @secret + configurationProtectedSettings?: Record | null; + + /** + * Statuses of the Flux Kubernetes resources created by the fluxConfiguration or created by the managed objects provisioned by the fluxConfiguration. + */ + #suppress "@azure-tools/typespec-azure-core/no-nullable" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + @visibility(Lifecycle.Read) + statuses?: ObjectStatusDefinition[] | null; + + /** + * Public Key associated with this fluxConfiguration (either generated within the cluster or provided by the user). + */ + #suppress "@azure-tools/typespec-azure-core/no-nullable" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + @visibility(Lifecycle.Read) + repositoryPublicKey?: string | null; + + /** + * Branch and/or SHA of the source commit synced with the cluster. + */ + #suppress "@azure-tools/typespec-azure-core/no-nullable" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + @visibility(Lifecycle.Read) + sourceSyncedCommitId?: string | null; + + /** + * Datetime the fluxConfiguration synced its source on the cluster. + */ + #suppress "@azure-tools/typespec-azure-core/no-nullable" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + // FIXME: (utcDateTime) Please double check that this is the correct type for your scenario. + @visibility(Lifecycle.Read) + sourceUpdatedAt?: utcDateTime | null; + + /** + * Datetime the fluxConfiguration synced its status on the cluster with Azure. + */ + #suppress "@azure-tools/typespec-azure-core/no-nullable" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + // FIXME: (utcDateTime) Please double check that this is the correct type for your scenario. + @visibility(Lifecycle.Read) + statusUpdatedAt?: utcDateTime | null; + + /** + * Whether flux configuration deployment should wait for cluster to reconcile the kustomizations. + */ + #suppress "@azure-tools/typespec-azure-core/no-nullable" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + waitForReconciliation?: boolean | null; + + /** + * Maximum duration to wait for flux configuration reconciliation. E.g PT1H, PT5M, P1D + */ + #suppress "@azure-tools/typespec-azure-core/no-nullable" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + reconciliationWaitDuration?: string | null; + + /** + * Combined status of the Flux Kubernetes resources created by the fluxConfiguration or created by the managed objects. + */ + @visibility(Lifecycle.Read) + complianceState?: FluxComplianceState = FluxComplianceState.Unknown; + + /** + * Status of the creation of the fluxConfiguration. + */ + @visibility(Lifecycle.Read) + provisioningState?: ProvisioningState; + + /** + * Error message returned to the user in the case of provisioning failure. + */ + #suppress "@azure-tools/typespec-azure-core/no-nullable" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + @visibility(Lifecycle.Read) + errorMessage?: string | null; +} + +/** + * Parameters to reconcile to the GitRepository source kind type. + */ +model GitRepositoryDefinition { + /** + * The URL to sync for the flux configuration git repository. + */ + #suppress "@azure-tools/typespec-azure-core/no-nullable" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + url?: string | null; + + /** + * The maximum time to attempt to reconcile the cluster git repository source with the remote. + */ + #suppress "@azure-tools/typespec-azure-core/no-nullable" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + timeoutInSeconds?: int64 | null = 600; + + /** + * The interval at which to re-reconcile the cluster git repository source with the remote. + */ + #suppress "@azure-tools/typespec-azure-core/no-nullable" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + syncIntervalInSeconds?: int64 | null = 600; + + /** + * The source reference for the GitRepository object. + */ + repositoryRef?: RepositoryRefDefinition; + + /** + * Base64-encoded known_hosts value containing public SSH keys required to access private git repositories over SSH + */ + #suppress "@azure-tools/typespec-azure-core/no-nullable" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + sshKnownHosts?: string | null; + + /** + * Plaintext HTTPS username used to access private git repositories over HTTPS + */ + #suppress "@azure-tools/typespec-azure-core/no-nullable" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + httpsUser?: string | null; + + /** + * Base64-encoded HTTPS certificate authority contents used to access git private git repositories over HTTPS + */ + #suppress "@azure-tools/typespec-azure-core/casing-style" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + #suppress "@azure-tools/typespec-azure-core/no-nullable" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + httpsCACert?: string | null; + + /** + * Name of a local secret on the Kubernetes cluster to use as the authentication secret rather than the managed or user-provided configuration secrets. + */ + #suppress "@azure-tools/typespec-azure-core/no-nullable" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + localAuthRef?: string | null; + + /** + * Name of the provider used for authentication. + */ + #suppress "@azure-tools/typespec-azure-core/no-nullable" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + provider?: ProviderType | null; +} + +/** + * The source reference for the GitRepository object. + */ +model RepositoryRefDefinition { + /** + * The git repository branch name to checkout. + */ + #suppress "@azure-tools/typespec-azure-core/no-nullable" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + branch?: string | null; + + /** + * The git repository tag name to checkout. This takes precedence over branch. + */ + #suppress "@azure-tools/typespec-azure-core/no-nullable" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + tag?: string | null; + + /** + * The semver range used to match against git repository tags. This takes precedence over tag. + */ + #suppress "@azure-tools/typespec-azure-core/no-nullable" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + semver?: string | null; + + /** + * The commit SHA to checkout. This value must be combined with the branch name to be valid. This takes precedence over semver. + */ + #suppress "@azure-tools/typespec-azure-core/no-nullable" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + commit?: string | null; +} + +/** + * Parameters to reconcile to the Bucket source kind type. + */ +model BucketDefinition { + /** + * The URL to sync for the flux configuration S3 bucket. + */ + url?: string; + + /** + * The bucket name to sync from the url endpoint for the flux configuration. + */ + bucketName?: string; + + /** + * Specify whether to use insecure communication when puling data from the S3 bucket. + */ + insecure?: boolean = true; + + /** + * The maximum time to attempt to reconcile the cluster bucket source with the remote. + */ + #suppress "@azure-tools/typespec-azure-core/no-nullable" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + timeoutInSeconds?: int64 | null = 600; + + /** + * The interval at which to re-reconcile the cluster bucket source with the remote. + */ + #suppress "@azure-tools/typespec-azure-core/no-nullable" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + syncIntervalInSeconds?: int64 | null = 600; + + /** + * Plaintext access key used to securely access the S3 bucket + */ + #suppress "@azure-tools/typespec-azure-core/no-nullable" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + accessKey?: string | null; + + /** + * Name of a local secret on the Kubernetes cluster to use as the authentication secret rather than the managed or user-provided configuration secrets. + */ + #suppress "@azure-tools/typespec-azure-core/no-nullable" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + localAuthRef?: string | null; +} + +/** + * Parameters to reconcile to the AzureBlob source kind type. + */ +model AzureBlobDefinition { + /** + * The URL to sync for the flux configuration Azure Blob storage account. + */ + #suppress "@azure-tools/typespec-azure-core/no-nullable" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + url?: string | null; + + /** + * The Azure Blob container name to sync from the url endpoint for the flux configuration. + */ + #suppress "@azure-tools/typespec-azure-core/no-nullable" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + containerName?: string | null; + + /** + * The maximum time to attempt to reconcile the cluster Azure Blob source with the remote. + */ + #suppress "@azure-tools/typespec-azure-core/no-nullable" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + timeoutInSeconds?: int64 | null = 600; + + /** + * The interval at which to re-reconcile the cluster Azure Blob source with the remote. + */ + #suppress "@azure-tools/typespec-azure-core/no-nullable" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + syncIntervalInSeconds?: int64 | null = 600; + + /** + * Parameters to authenticate using Service Principal. + */ + servicePrincipal?: ServicePrincipalDefinition; + + /** + * The account key (shared key) to access the storage account + */ + #suppress "@azure-tools/typespec-azure-core/no-nullable" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + @secret + accountKey?: string | null; + + /** + * The Shared Access token to access the storage container + */ + #suppress "@azure-tools/typespec-azure-core/no-nullable" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + @secret + sasToken?: string | null; + + /** + * Parameters to authenticate using a Managed Identity. + */ + managedIdentity?: ManagedIdentityDefinition; + + /** + * Name of a local secret on the Kubernetes cluster to use as the authentication secret rather than the managed or user-provided configuration secrets. + */ + #suppress "@azure-tools/typespec-azure-core/no-nullable" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + localAuthRef?: string | null; +} + +/** + * Parameters to authenticate using Service Principal. + */ +model ServicePrincipalDefinition { + /** + * The client Id for authenticating a Service Principal. + */ + #suppress "@azure-tools/typespec-azure-core/no-nullable" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + clientId?: string | null; + + /** + * The tenant Id for authenticating a Service Principal + */ + #suppress "@azure-tools/typespec-azure-core/no-nullable" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + tenantId?: string | null; + + /** + * The client secret for authenticating a Service Principal + */ + #suppress "@azure-tools/typespec-azure-core/no-nullable" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + @secret + clientSecret?: string | null; + + /** + * Base64-encoded certificate used to authenticate a Service Principal + */ + #suppress "@azure-tools/typespec-azure-core/no-nullable" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + @secret + clientCertificate?: string | null; + + /** + * The password for the certificate used to authenticate a Service Principal + */ + #suppress "@azure-tools/typespec-azure-core/no-nullable" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + @secret + clientCertificatePassword?: string | null; + + /** + * Specifies whether to include x5c header in client claims when acquiring a token to enable subject name / issuer based authentication for the Client Certificate + */ + clientCertificateSendChain?: boolean = false; +} + +/** + * Parameters to authenticate using a Managed Identity. + */ +model ManagedIdentityDefinition { + /** + * The client Id for authenticating a Managed Identity. + */ + #suppress "@azure-tools/typespec-azure-core/no-nullable" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + clientId?: string | null; +} + +/** + * Parameters to reconcile to the OCIRepository source kind type. + */ +#suppress "@azure-tools/typespec-azure-core/casing-style" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" +model OCIRepositoryDefinition { + /** + * The URL to sync for the flux configuration OCI repository. + */ + #suppress "@azure-tools/typespec-azure-core/no-nullable" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + url?: url | null; + + /** + * The maximum time to attempt to reconcile the cluster OCI repository source with the remote. + */ + #suppress "@azure-tools/typespec-azure-core/no-nullable" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + timeoutInSeconds?: int64 | null = 600; + + /** + * The interval at which to re-reconcile the cluster OCI repository source with the remote. + */ + #suppress "@azure-tools/typespec-azure-core/no-nullable" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + syncIntervalInSeconds?: int64 | null = 600; + + /** + * The source reference for the OCIRepository object. + */ + repositoryRef?: OCIRepositoryRefDefinition; + + /** + * The layer to be pulled from the OCI artifact. + */ + layerSelector?: LayerSelectorDefinition; + + /** + * Verification of the authenticity of an OCI Artifact. + */ + verify?: VerifyDefinition; + + /** + * Specify whether to allow connecting to a non-TLS HTTP container registry. + */ + insecure?: boolean = false; + + /** + * Specifies whether to use Workload Identity to authenticate with the OCI repository. + */ + useWorkloadIdentity?: boolean = false; + + /** + * The service account name to authenticate with the OCI repository. + */ + #suppress "@azure-tools/typespec-azure-core/no-nullable" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + serviceAccountName?: string | null; + + /** + * Parameters to authenticate using TLS config for OCI repository. + */ + tlsConfig?: TlsConfigDefinition; + + /** + * Name of a local secret on the Kubernetes cluster to use as the authentication secret rather than the managed or user-provided configuration secrets. + */ + #suppress "@azure-tools/typespec-azure-core/no-nullable" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + localAuthRef?: string | null; +} + +/** + * The source reference for the OCIRepository object. + */ +#suppress "@azure-tools/typespec-azure-core/casing-style" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" +model OCIRepositoryRefDefinition { + /** + * The OCI repository image tag name to pull. This defaults to 'latest'. + */ + #suppress "@azure-tools/typespec-azure-core/no-nullable" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + tag?: string | null; + + /** + * The semver range used to match against OCI repository tags. This takes precedence over tag. + */ + #suppress "@azure-tools/typespec-azure-core/no-nullable" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + semver?: string | null; + + /** + * The image digest to pull from OCI repository, the value should be in the format ‘sha256:’. This takes precedence over semver. + */ + #suppress "@azure-tools/typespec-azure-core/no-nullable" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + digest?: string | null; +} + +/** + * Parameters to specify which layer to pull from the OCI artifact. By default, the first layer in the artifact is pulled. + */ +model LayerSelectorDefinition { + /** + * The first layer matching the specified media type will be used. + */ + #suppress "@azure-tools/typespec-azure-core/no-nullable" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + mediaType?: string | null; + + /** + * The operation to be performed on the selected layer. The default value is 'extract', but it can be set to 'copy'. + */ + #suppress "@azure-tools/typespec-azure-core/no-nullable" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + operation?: OperationType | null; +} + +/** + * Parameters to verify the authenticity of an OCI Artifact. + */ +model VerifyDefinition { + /** + * Verification provider name. + */ + provider?: string; + + /** + * An object containing trusted public keys of trusted authors. + */ + #suppress "@azure-tools/typespec-azure-core/no-nullable" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + #suppress "@azure-tools/typespec-azure-resource-manager/arm-no-record" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + verificationConfig?: Record | null; + + /** + * Array defining the criteria for matching the identity while verifying an OCI artifact. + */ + #suppress "@azure-tools/typespec-azure-core/no-nullable" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + matchOidcIdentity?: MatchOidcIdentityDefinition[] | null; +} + +/** + * MatchOIDCIdentity defines the criteria for matching the identity while verifying an OCI artifact. + */ +model MatchOidcIdentityDefinition { + /** + * The regex pattern to match against to verify the OIDC issuer. + */ + issuer?: string; + + /** + * The regex pattern to match against to verify the identity subject. + */ + subject?: string; +} + +/** + * Parameters to authenticate using TLS config for OCI repository. + */ +model TlsConfigDefinition { + /** + * Base64-encoded certificate used to authenticate a client with the OCI repository. + */ + #suppress "@azure-tools/typespec-azure-core/no-nullable" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + @secret + clientCertificate?: string | null; + + /** + * Base64-encoded private key used to authenticate a client with the OCI repository. + */ + #suppress "@azure-tools/typespec-azure-core/no-nullable" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + @secret + privateKey?: string | null; + + /** + * Base64-encoded CA certificate used to verify the server. + */ + #suppress "@azure-tools/typespec-azure-core/no-nullable" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + @secret + caCertificate?: string | null; +} + +/** + * The Kustomization defining how to reconcile the artifact pulled by the source type on the cluster. + */ +model KustomizationDefinition { + /** + * Name of the Kustomization, matching the key in the Kustomizations object map. + */ + @visibility(Lifecycle.Read) + name?: string; + + /** + * The path in the source reference to reconcile on the cluster. + */ + path?: string = ""; + + /** + * Specifies other Kustomizations that this Kustomization depends on. This Kustomization will not reconcile until all dependencies have completed their reconciliation. + */ + #suppress "@azure-tools/typespec-azure-core/no-nullable" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + dependsOn?: string[] | null; + + /** + * The maximum time to attempt to reconcile the Kustomization on the cluster. + */ + #suppress "@azure-tools/typespec-azure-core/no-nullable" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + timeoutInSeconds?: int64 | null = 600; + + /** + * The interval at which to re-reconcile the Kustomization on the cluster. + */ + #suppress "@azure-tools/typespec-azure-core/no-nullable" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + syncIntervalInSeconds?: int64 | null = 600; + + /** + * The interval at which to re-reconcile the Kustomization on the cluster in the event of failure on reconciliation. + */ + #suppress "@azure-tools/typespec-azure-core/no-nullable" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + retryIntervalInSeconds?: int64 | null; + + /** + * Enable/disable garbage collections of Kubernetes objects created by this Kustomization. + */ + prune?: boolean = false; + + /** + * Enable/disable re-creating Kubernetes resources on the cluster when patching fails due to an immutable field change. + */ + force?: boolean = false; + + /** + * Enable/disable health check for all Kubernetes objects created by this Kustomization. + */ + wait?: boolean = true; + + /** + * Used for variable substitution for this Kustomization after kustomize build. + */ + #suppress "@azure-tools/typespec-azure-core/no-nullable" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + postBuild?: PostBuildDefinition | null; +} + +/** + * The postBuild definitions defining variable substitutions for this Kustomization after kustomize build. + */ +model PostBuildDefinition { + /** + * Key/value pairs holding the variables to be substituted in this Kustomization. + */ + #suppress "@azure-tools/typespec-azure-core/no-nullable" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + #suppress "@azure-tools/typespec-azure-resource-manager/arm-no-record" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + substitute?: Record | null; + + /** + * Array of ConfigMaps/Secrets from which the variables are substituted for this Kustomization. + */ + @identifiers(#[]) + substituteFrom?: SubstituteFromDefinition[]; +} + +/** + * Array of ConfigMaps/Secrets from which the variables are substituted for this Kustomization. + */ +model SubstituteFromDefinition { + /** + * Define whether it is ConfigMap or Secret that holds the variables to be used in substitution. + */ + kind?: string; + + /** + * Name of the ConfigMap/Secret that holds the variables to be used in substitution. + */ + name?: string; + + /** + * Set to True to proceed without ConfigMap/Secret, if it is not present. + */ + optional?: boolean = false; +} + +/** + * Statuses of objects deployed by the user-specified kustomizations from the git repository. + */ +model ObjectStatusDefinition { + /** + * Name of the applied object + */ + name?: string; + + /** + * Namespace of the applied object + */ + `namespace`?: string; + + /** + * Kind of the applied object + */ + kind?: string; + + /** + * Compliance state of the applied object showing whether the applied object has come into a ready state on the cluster. + */ + complianceState?: FluxComplianceState = FluxComplianceState.Unknown; + + /** + * Object reference to the Kustomization that applied this object + */ + #suppress "@azure-tools/typespec-azure-core/no-nullable" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + appliedBy?: ObjectReferenceDefinition | null; + + /** + * List of Kubernetes object status conditions present on the cluster + */ + #suppress "@azure-tools/typespec-azure-core/no-nullable" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + statusConditions?: ObjectStatusConditionDefinition[] | null; + + /** + * Additional properties that are provided from objects of the HelmRelease kind + */ + helmReleaseProperties?: HelmReleasePropertiesDefinition; +} + +/** + * Object reference to a Kubernetes object on a cluster + */ +model ObjectReferenceDefinition { + /** + * Name of the object + */ + name?: string; + + /** + * Namespace of the object + */ + `namespace`?: string; +} + +/** + * Status condition of Kubernetes object + */ +model ObjectStatusConditionDefinition { + /** + * Last time this status condition has changed + */ + // FIXME: (utcDateTime) Please double check that this is the correct type for your scenario. + lastTransitionTime?: utcDateTime; + + /** + * A more verbose description of the object status condition + */ + message?: string; + + /** + * Reason for the specified status condition type status + */ + reason?: string; + + /** + * Status of the Kubernetes object condition type + */ + status?: string; + + /** + * Object status condition type for this object + */ + type?: string; +} + +/** + * Properties for HelmRelease objects + */ +model HelmReleasePropertiesDefinition { + /** + * The revision number of the last released object change + */ + #suppress "@azure-tools/typespec-azure-core/no-nullable" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + lastRevisionApplied?: int64 | null; + + /** + * The reference to the HelmChart object used as the source to this HelmRelease + */ + helmChartRef?: ObjectReferenceDefinition; + + /** + * Total number of times that the HelmRelease failed to install or upgrade + */ + #suppress "@azure-tools/typespec-azure-core/no-nullable" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + failureCount?: int64 | null; + + /** + * Number of times that the HelmRelease failed to install + */ + #suppress "@azure-tools/typespec-azure-core/no-nullable" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + installFailureCount?: int64 | null; + + /** + * Number of times that the HelmRelease failed to upgrade + */ + #suppress "@azure-tools/typespec-azure-core/no-nullable" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + upgradeFailureCount?: int64 | null; +} + +/** + * The Flux Configuration Patch Request object. + */ +model FluxConfigurationPatch { + /** + * Updatable properties of an Flux Configuration Patch Request + */ + properties?: FluxConfigurationPatchProperties; +} + +/** + * Updatable properties of an Flux Configuration Patch Request + */ +model FluxConfigurationPatchProperties { + /** + * Source Kind to pull the configuration data from. + */ + sourceKind?: SourceKindType; + + /** + * Whether this configuration should suspend its reconciliation of its kustomizations and sources. + */ + suspend?: boolean; + + /** + * Parameters to reconcile to the GitRepository source kind type. + */ + gitRepository?: GitRepositoryPatchDefinition; + + /** + * Parameters to reconcile to the Bucket source kind type. + */ + bucket?: BucketPatchDefinition; + + /** + * Parameters to reconcile to the AzureBlob source kind type. + */ + azureBlob?: AzureBlobPatchDefinition; + + /** + * Parameters to reconcile to the OCIRepository source kind type. + */ + ociRepository?: OCIRepositoryPatchDefinition; + + /** + * Array of kustomizations used to reconcile the artifact pulled by the source type on the cluster. + */ + #suppress "@azure-tools/typespec-azure-resource-manager/arm-no-record" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + kustomizations?: Record; + + /** + * Key-value pairs of protected configuration settings for the configuration + */ + #suppress "@azure-tools/typespec-azure-resource-manager/arm-no-record" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + configurationProtectedSettings?: Record; +} + +/** + * Parameters to reconcile to the GitRepository source kind type. + */ +model GitRepositoryPatchDefinition { + /** + * The URL to sync for the flux configuration git repository. + */ + #suppress "@azure-tools/typespec-azure-core/no-nullable" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + url?: string | null; + + /** + * The maximum time to attempt to reconcile the cluster git repository source with the remote. + */ + #suppress "@azure-tools/typespec-azure-core/no-nullable" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + timeoutInSeconds?: int64 | null; + + /** + * The interval at which to re-reconcile the cluster git repository source with the remote. + */ + #suppress "@azure-tools/typespec-azure-core/no-nullable" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + syncIntervalInSeconds?: int64 | null; + + /** + * The source reference for the GitRepository object. + */ + repositoryRef?: RepositoryRefDefinition; + + /** + * Base64-encoded known_hosts value containing public SSH keys required to access private git repositories over SSH + */ + #suppress "@azure-tools/typespec-azure-core/no-nullable" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + sshKnownHosts?: string | null; + + /** + * Plaintext HTTPS username used to access private git repositories over HTTPS + */ + #suppress "@azure-tools/typespec-azure-core/no-nullable" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + httpsUser?: string | null; + + /** + * Base64-encoded HTTPS certificate authority contents used to access git private git repositories over HTTPS + */ + #suppress "@azure-tools/typespec-azure-core/casing-style" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + #suppress "@azure-tools/typespec-azure-core/no-nullable" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + httpsCACert?: string | null; + + /** + * Name of a local secret on the Kubernetes cluster to use as the authentication secret rather than the managed or user-provided configuration secrets. + */ + #suppress "@azure-tools/typespec-azure-core/no-nullable" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + localAuthRef?: string | null; + + /** + * Name of the provider used for authentication. + */ + #suppress "@azure-tools/typespec-azure-core/no-nullable" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + provider?: ProviderType | null; +} + +/** + * Parameters to reconcile to the Bucket source kind type. + */ +model BucketPatchDefinition { + /** + * The URL to sync for the flux configuration S3 bucket. + */ + #suppress "@azure-tools/typespec-azure-core/no-nullable" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + url?: string | null; + + /** + * The bucket name to sync from the url endpoint for the flux configuration. + */ + #suppress "@azure-tools/typespec-azure-core/no-nullable" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + bucketName?: string | null; + + /** + * Specify whether to use insecure communication when puling data from the S3 bucket. + */ + #suppress "@azure-tools/typespec-azure-core/no-nullable" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + insecure?: boolean | null; + + /** + * The maximum time to attempt to reconcile the cluster bucket source with the remote. + */ + #suppress "@azure-tools/typespec-azure-core/no-nullable" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + timeoutInSeconds?: int64 | null; + + /** + * The interval at which to re-reconcile the cluster bucket source with the remote. + */ + #suppress "@azure-tools/typespec-azure-core/no-nullable" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + syncIntervalInSeconds?: int64 | null; + + /** + * Plaintext access key used to securely access the S3 bucket + */ + #suppress "@azure-tools/typespec-azure-core/no-nullable" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + accessKey?: string | null; + + /** + * Name of a local secret on the Kubernetes cluster to use as the authentication secret rather than the managed or user-provided configuration secrets. + */ + #suppress "@azure-tools/typespec-azure-core/no-nullable" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + localAuthRef?: string | null; +} + +/** + * Parameters to reconcile to the AzureBlob source kind type. + */ +model AzureBlobPatchDefinition { + /** + * The URL to sync for the flux configuration Azure Blob storage account. + */ + #suppress "@azure-tools/typespec-azure-core/no-nullable" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + url?: string | null; + + /** + * The Azure Blob container name to sync from the url endpoint for the flux configuration. + */ + #suppress "@azure-tools/typespec-azure-core/no-nullable" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + containerName?: string | null; + + /** + * The maximum time to attempt to reconcile the cluster Azure Blob source with the remote. + */ + #suppress "@azure-tools/typespec-azure-core/no-nullable" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + timeoutInSeconds?: int64 | null; + + /** + * The interval at which to re-reconcile the cluster Azure Blob source with the remote. + */ + #suppress "@azure-tools/typespec-azure-core/no-nullable" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + syncIntervalInSeconds?: int64 | null; + + /** + * Parameters to authenticate using Service Principal. + */ + servicePrincipal?: ServicePrincipalPatchDefinition; + + /** + * The account key (shared key) to access the storage account + */ + #suppress "@azure-tools/typespec-azure-core/no-nullable" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + @secret + accountKey?: string | null; + + /** + * The Shared Access token to access the storage container + */ + #suppress "@azure-tools/typespec-azure-core/no-nullable" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + @secret + sasToken?: string | null; + + /** + * Parameters to authenticate using a Managed Identity. + */ + managedIdentity?: ManagedIdentityPatchDefinition; + + /** + * Name of a local secret on the Kubernetes cluster to use as the authentication secret rather than the managed or user-provided configuration secrets. + */ + #suppress "@azure-tools/typespec-azure-core/no-nullable" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + localAuthRef?: string | null; +} + +/** + * Parameters to authenticate using Service Principal. + */ +model ServicePrincipalPatchDefinition { + /** + * The client Id for authenticating a Service Principal. + */ + #suppress "@azure-tools/typespec-azure-core/no-nullable" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + clientId?: string | null; + + /** + * The tenant Id for authenticating a Service Principal + */ + #suppress "@azure-tools/typespec-azure-core/no-nullable" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + tenantId?: string | null; + + /** + * The client secret for authenticating a Service Principal + */ + #suppress "@azure-tools/typespec-azure-core/no-nullable" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + @secret + clientSecret?: string | null; + + /** + * Base64-encoded certificate used to authenticate a Service Principal + */ + #suppress "@azure-tools/typespec-azure-core/no-nullable" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + @secret + clientCertificate?: string; + + /** + * The password for the certificate used to authenticate a Service Principal + */ + #suppress "@azure-tools/typespec-azure-core/no-nullable" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + @secret + clientCertificatePassword?: string | null; + + /** + * Specifies whether to include x5c header in client claims when acquiring a token to enable subject name / issuer based authentication for the Client Certificate + */ + clientCertificateSendChain?: boolean; +} + +/** + * Parameters to authenticate using a Managed Identity. + */ +model ManagedIdentityPatchDefinition { + /** + * The client Id for authenticating a Managed Identity. + */ + #suppress "@azure-tools/typespec-azure-core/no-nullable" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + clientId?: string | null; +} + +/** + * Parameters to reconcile to the OCIRepository source kind type. + */ +#suppress "@azure-tools/typespec-azure-core/casing-style" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" +model OCIRepositoryPatchDefinition { + /** + * The URL to sync for the flux configuration OCI repository. + */ + #suppress "@azure-tools/typespec-azure-core/no-nullable" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + url?: url | null; + + /** + * The maximum time to attempt to reconcile the cluster OCI repository source with the remote. + */ + #suppress "@azure-tools/typespec-azure-core/no-nullable" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + timeoutInSeconds?: int64 | null; + + /** + * The interval at which to re-reconcile the cluster OCI repository source with the remote. + */ + #suppress "@azure-tools/typespec-azure-core/no-nullable" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + syncIntervalInSeconds?: int64 | null; + + /** + * The source reference for the OCIRepository object. + */ + repositoryRef?: OCIRepositoryRefPatchDefinition; + + /** + * The layer to be pulled from the OCI artifact. + */ + layerSelector?: LayerSelectorPatchDefinition; + + /** + * Verification of the authenticity of an OCI Artifact. + */ + verify?: VerifyPatchDefinition; + + /** + * Specify whether to allow connecting to a non-TLS HTTP container registry. + */ + #suppress "@azure-tools/typespec-azure-core/no-nullable" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + insecure?: boolean = false; + + /** + * Specifies whether to use Workload Identity to authenticate with the OCI repository. + */ + #suppress "@azure-tools/typespec-azure-core/no-nullable" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + useWorkloadIdentity?: boolean = false; + + /** + * The service account name to authenticate with the OCI repository. + */ + #suppress "@azure-tools/typespec-azure-core/no-nullable" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + serviceAccountName?: string | null; + + /** + * Parameters to authenticate using TLS config for OCI repository. + */ + tlsConfig?: TlsConfigPatchDefinition; + + /** + * Name of a local secret on the Kubernetes cluster to use as the authentication secret rather than the managed or user-provided configuration secrets. + */ + #suppress "@azure-tools/typespec-azure-core/no-nullable" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + localAuthRef?: string | null; +} + +/** + * The source reference for the OCIRepository object. + */ +#suppress "@azure-tools/typespec-azure-core/casing-style" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" +model OCIRepositoryRefPatchDefinition { + /** + * The OCI repository image tag name to pull. This defaults to 'latest'. + */ + #suppress "@azure-tools/typespec-azure-core/no-nullable" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + tag?: string | null; + + /** + * The semver range used to match against OCI repository tags. This takes precedence over tag. + */ + #suppress "@azure-tools/typespec-azure-core/no-nullable" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + semver?: string | null; + + /** + * The image digest to pull from OCI repository, the value should be in the format ‘sha256:’. This takes precedence over semver. + */ + #suppress "@azure-tools/typespec-azure-core/no-nullable" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + digest?: string | null; +} + +/** + * Parameters to specify which layer to pull from the OCI artifact. By default, the first layer in the artifact is pulled. + */ +model LayerSelectorPatchDefinition { + /** + * The first layer matching the specified media type will be used. + */ + #suppress "@azure-tools/typespec-azure-core/no-nullable" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + mediaType?: string | null; + + /** + * The operation to be performed on the selected layer. The default value is 'extract', but it can be set to 'copy'. + */ + #suppress "@azure-tools/typespec-azure-core/no-nullable" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + operation?: OperationType | null; +} + +/** + * Parameters to verify the authenticity of an OCI Artifact. + */ +model VerifyPatchDefinition { + /** + * Verification provider name. + */ + provider?: string; + + /** + * An object containing trusted public keys of trusted authors. + */ + #suppress "@azure-tools/typespec-azure-core/no-nullable" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + #suppress "@azure-tools/typespec-azure-resource-manager/arm-no-record" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + verificationConfig?: Record | null; + + /** + * Array defining the criteria for matching the OIDC identity while verifying an OCI artifact. + */ + #suppress "@azure-tools/typespec-azure-core/no-nullable" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + matchOidcIdentity?: MatchOidcIdentityPatchDefinition[] | null; +} + +/** + * MatchOIDCIdentity defines the criteria for matching the identity while verifying an OCI artifact. + */ +model MatchOidcIdentityPatchDefinition { + /** + * The regex pattern to match against to verify the OIDC issuer. + */ + issuer?: string; + + /** + * The regex pattern to match against to verify the identity subject. + */ + subject?: string; +} + +/** + * Parameters to authenticate using TLS config for OCI repository. + */ +model TlsConfigPatchDefinition { + /** + * Base64-encoded certificate used to authenticate a client with the OCI repository. + */ + #suppress "@azure-tools/typespec-azure-core/no-nullable" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + @secret + clientCertificate?: string | null; + + /** + * Base64-encoded private key used to authenticate a client with the OCI repository. + */ + #suppress "@azure-tools/typespec-azure-core/no-nullable" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + @secret + privateKey?: string | null; + + /** + * Base64-encoded CA certificate used to verify the server. + */ + #suppress "@azure-tools/typespec-azure-core/no-nullable" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + @secret + caCertificate?: string | null; +} + +/** + * The Kustomization defining how to reconcile the artifact pulled by the source type on the cluster. + */ +model KustomizationPatchDefinition { + /** + * The path in the source reference to reconcile on the cluster. + */ + #suppress "@azure-tools/typespec-azure-core/no-nullable" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + path?: string | null; + + /** + * Specifies other Kustomizations that this Kustomization depends on. This Kustomization will not reconcile until all dependencies have completed their reconciliation. + */ + #suppress "@azure-tools/typespec-azure-core/no-nullable" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + dependsOn?: string[] | null; + + /** + * The maximum time to attempt to reconcile the Kustomization on the cluster. + */ + #suppress "@azure-tools/typespec-azure-core/no-nullable" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + timeoutInSeconds?: int64 | null; + + /** + * The interval at which to re-reconcile the Kustomization on the cluster. + */ + #suppress "@azure-tools/typespec-azure-core/no-nullable" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + syncIntervalInSeconds?: int64 | null; + + /** + * The interval at which to re-reconcile the Kustomization on the cluster in the event of failure on reconciliation. + */ + #suppress "@azure-tools/typespec-azure-core/no-nullable" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + retryIntervalInSeconds?: int64 | null; + + /** + * Enable/disable garbage collections of Kubernetes objects created by this Kustomization. + */ + #suppress "@azure-tools/typespec-azure-core/no-nullable" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + #suppress "@azure-tools/typespec-azure-core/no-nullable" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + prune?: boolean | null; + + /** + * Enable/disable re-creating Kubernetes resources on the cluster when patching fails due to an immutable field change. + */ + #suppress "@azure-tools/typespec-azure-core/no-nullable" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + force?: boolean | null; + + /** + * Enable/disable health check for all Kubernetes objects created by this Kustomization. + */ + #suppress "@azure-tools/typespec-azure-core/no-nullable" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + wait?: boolean | null; + + /** + * Used for variable substitution for this Kustomization after kustomize build. + */ + #suppress "@azure-tools/typespec-azure-core/no-nullable" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + postBuild?: PostBuildPatchDefinition | null; +} + +/** + * The postBuild definitions defining variable substitutions for this Kustomization after kustomize build. + */ +model PostBuildPatchDefinition { + /** + * Key/value pairs holding the variables to be substituted in this Kustomization. + */ + #suppress "@azure-tools/typespec-azure-core/no-nullable" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + #suppress "@azure-tools/typespec-azure-resource-manager/arm-no-record" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + substitute?: Record | null; + + /** + * Array of ConfigMaps/Secrets from which the variables are substituted for this Kustomization. + */ + #suppress "@azure-tools/typespec-azure-core/no-nullable" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + substituteFrom?: SubstituteFromPatchDefinition[] | null; +} + +/** + * Array of ConfigMaps/Secrets from which the variables are substituted for this Kustomization. + */ +model SubstituteFromPatchDefinition { + /** + * Define whether it is ConfigMap or Secret that holds the variables to be used in substitution. + */ + kind?: string; + + /** + * Name of the ConfigMap/Secret that holds the variables to be used in substitution. + */ + name?: string; + + /** + * Set to True to proceed without ConfigMap/Secret, if it is not present. + */ + optional?: boolean = false; +} + +/** + * Result of the request to list Flux Configurations. It contains a list of FluxConfiguration objects and a URL link to get the next set of results. + */ +model FluxConfigurationsList is Azure.Core.Page; + +/** + * The current status of an async operation. + */ +model OperationStatusResult { + /** + * Fully qualified ID for the async operation. + */ + id?: string; + + /** + * Name of the async operation. + */ + name?: string; + + /** + * Operation status. + */ + status: string; + + /** + * Additional information, if available. + */ + #suppress "@azure-tools/typespec-azure-resource-manager/arm-no-record" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + properties?: Record; + + /** + * If present, details of the operation error. + */ + @visibility(Lifecycle.Read) + error?: Azure.ResourceManager.CommonTypes.ErrorDetail; +} diff --git a/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/fluxConfigurations/stable/2025-04-01/examples/CreateFluxConfiguration.json b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/fluxConfigurations/stable/2025-04-01/examples/CreateFluxConfiguration.json index 9abe6fd7b30b..854f4a681b62 100644 --- a/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/fluxConfigurations/stable/2025-04-01/examples/CreateFluxConfiguration.json +++ b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/fluxConfigurations/stable/2025-04-01/examples/CreateFluxConfiguration.json @@ -1,34 +1,24 @@ { "parameters": { - "subscriptionId": "subId1", - "resourceGroupName": "rg1", - "clusterRp": "Microsoft.Kubernetes", - "clusterResourceName": "connectedClusters", - "fluxConfigurationName": "srs-fluxconfig", "api-version": "2025-04-01", "clusterName": "clusterName1", + "clusterResourceName": "connectedClusters", + "clusterRp": "Microsoft.Kubernetes", "fluxConfiguration": { "properties": { - "scope": "cluster", - "namespace": "srs-namespace", - "sourceKind": "GitRepository", - "suspend": false, "gitRepository": { - "url": "https://github.com/Azure/arc-k8s-demo", - "timeoutInSeconds": 600, - "syncIntervalInSeconds": 600, + "httpsCACert": "ZXhhbXBsZWNlcnRpZmljYXRl", "repositoryRef": { "branch": "master" }, - "httpsCACert": "ZXhhbXBsZWNlcnRpZmljYXRl" + "syncIntervalInSeconds": 600, + "timeoutInSeconds": 600, + "url": "https://github.com/Azure/arc-k8s-demo" }, "kustomizations": { "srs-kustomization1": { "path": "./test/path", "dependsOn": [], - "timeoutInSeconds": 600, - "syncIntervalInSeconds": 600, - "wait": true, "postBuild": { "substitute": { "cluster_env": "prod", @@ -36,88 +26,81 @@ }, "substituteFrom": [ { - "kind": "ConfigMap", "name": "cluster-test", + "kind": "ConfigMap", "optional": true } ] - } + }, + "syncIntervalInSeconds": 600, + "timeoutInSeconds": 600, + "wait": true }, "srs-kustomization2": { "path": "./other/test/path", "dependsOn": [ "srs-kustomization1" ], - "timeoutInSeconds": 600, - "syncIntervalInSeconds": 600, - "retryIntervalInSeconds": 600, - "prune": false, - "wait": false, "postBuild": { "substituteFrom": [ { - "kind": "ConfigMap", "name": "cluster-values", + "kind": "ConfigMap", "optional": true }, { - "kind": "Secret", "name": "secret-name", + "kind": "Secret", "optional": false } ] - } + }, + "prune": false, + "retryIntervalInSeconds": 600, + "syncIntervalInSeconds": 600, + "timeoutInSeconds": 600, + "wait": false } }, - "waitForReconciliation": true, - "reconciliationWaitDuration": "PT30M" + "namespace": "srs-namespace", + "reconciliationWaitDuration": "PT30M", + "scope": "cluster", + "sourceKind": "GitRepository", + "suspend": false, + "waitForReconciliation": true } - } + }, + "fluxConfigurationName": "srs-fluxconfig", + "resourceGroupName": "rg1", + "subscriptionId": "subId1" }, "responses": { "200": { - "headers": { - "Operation-Location": "/subscriptions/subId1/resourceGroups/rg1/providers/Microsoft.Kubernetes/connectedClusters/clusterName1/providers/Microsoft.KubernetesConfiguration/fluxConfigurations/ClusterMonitor/srs-fluxconfig/{operationId}", - "x-ms-async-operation-timeout": "PT48H" - }, "description": "Details of the Kubernetes Flux Configuration's current status.", "body": { - "id": "/subscriptions/subId1/resourceGroups/rg1/providers/Microsoft.Kubernetes/connectedClusters/clusterName1/providers/Microsoft.KubernetesConfiguration/fluxConfigurations/srs-fluxconfig", - "type": "Microsoft.KubernetesConfiguration/fluxConfigurations", "name": "srs-fluxconfig", - "systemData": { - "createdBy": "string", - "createdByType": "Application", - "createdAt": "2021-05-19T05:10:57.027Z", - "lastModifiedBy": "string", - "lastModifiedByType": "Application", - "lastModifiedAt": "2020-05-19T05:10:57.027Z" - }, + "type": "Microsoft.KubernetesConfiguration/fluxConfigurations", + "id": "/subscriptions/subId1/resourceGroups/rg1/providers/Microsoft.Kubernetes/connectedClusters/clusterName1/providers/Microsoft.KubernetesConfiguration/fluxConfigurations/srs-fluxconfig", "properties": { - "scope": "cluster", - "namespace": "srs-namespace", - "sourceKind": "GitRepository", - "suspend": false, + "complianceState": "Compliant", + "errorMessage": "", "gitRepository": { - "url": "https://github.com/Azure/arc-k8s-demo", - "timeoutInSeconds": 600, - "syncIntervalInSeconds": 600, + "httpsCACert": "ZXhhbXBsZWNlcnRpZmljYXRl", "repositoryRef": { "branch": "master", - "tag": null, + "commit": null, "semver": null, - "commit": null + "tag": null }, - "httpsCACert": "ZXhhbXBsZWNlcnRpZmljYXRl" + "syncIntervalInSeconds": 600, + "timeoutInSeconds": 600, + "url": "https://github.com/Azure/arc-k8s-demo" }, "kustomizations": { "srs-kustomization1": { "name": "srs-kustomization1", "path": "./test/path", "dependsOn": [], - "timeoutInSeconds": 600, - "syncIntervalInSeconds": 600, - "wait": true, "postBuild": { "substitute": { "cluster_env": "prod", @@ -125,12 +108,15 @@ }, "substituteFrom": [ { - "kind": "ConfigMap", "name": "cluster-test", + "kind": "ConfigMap", "optional": true } ] - } + }, + "syncIntervalInSeconds": 600, + "timeoutInSeconds": 600, + "wait": true }, "srs-kustomization2": { "name": "srs-kustomization2", @@ -138,149 +124,145 @@ "dependsOn": [ "srs-kustomization1" ], - "timeoutInSeconds": 600, - "syncIntervalInSeconds": 600, - "retryIntervalInSeconds": 600, - "prune": false, - "wait": false, "postBuild": { "substituteFrom": [ { - "kind": "ConfigMap", "name": "cluster-values", + "kind": "ConfigMap", "optional": true }, { - "kind": "Secret", "name": "secret-name", + "kind": "Secret", "optional": false } ] - } + }, + "prune": false, + "retryIntervalInSeconds": 600, + "syncIntervalInSeconds": 600, + "timeoutInSeconds": 600, + "wait": false } }, + "namespace": "srs-namespace", + "provisioningState": "Succeeded", + "repositoryPublicKey": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDiNkrANrhtRy+02Xc7b5bwvgOKvQMbqUQaXeB6FCDkbLaavw/zO/vIhIBEQu+vbBt6IlI/Pui0rMFr5JjA8Vwwd85oabzU07TPzbFvKSU9eCXqWRKWf0DHNQj/kxPJNtyPYFv3lGoiZZ6QzejOxlW/lPPokUePN0oI10daWwqznm2q0Cmh1EgPUYveq3J5KCWncZXCdwY36zWYulCWFaqazoaGy4kxcqlVy+mPjE/UJthaoLm3mq+23uhlmmfCc1j7W6+H6fcOwTyOtcbimxz2Ug8HlTzSTXBPtEe7qyllMyk62EPNUUq4bVoVsex9sKBK6/hW0Cn2P5i5jslUPCQF", + "scope": "cluster", + "sourceKind": "GitRepository", + "sourceSyncedCommitId": "master/0ba6f0d30760d567de0bac86c8c4eec13ce1a590", + "sourceUpdatedAt": "2021-05-19T18:17:12Z", + "statusUpdatedAt": "2021-05-19T18:17:12Z", "statuses": [ { "name": "srs-fluxconfig", - "kind": "GitRepository", - "complianceState": "Compliant", "appliedBy": null, + "complianceState": "Compliant", "helmReleaseProperties": null, + "kind": "GitRepository", "statusConditions": [ { + "type": "Ready", "lastTransitionTime": "2021-05-19T18:12:40Z", "message": "'Fetched revision: master/0ba6f0d30760d567de0bac86c8c4eec13ce1a590'", "reason": "GitOperationSucceed", - "status": "True", - "type": "Ready" + "status": "True" } ] }, { "name": "srs-fluxconfig-srs-kustomization1", - "kind": "Kustomization", - "complianceState": "Compliant", "appliedBy": null, + "complianceState": "Compliant", "helmReleaseProperties": { - "lastRevisionApplied": 1, + "failureCount": null, "helmChartRef": { "name": "myname", "namespace": "mynamespace" }, - "failureCount": null, - "upgradeFailureCount": null, - "installFailureCount": null + "installFailureCount": null, + "lastRevisionApplied": 1, + "upgradeFailureCount": null }, + "kind": "Kustomization", "statusConditions": [ { + "type": "Ready", "lastTransitionTime": "2021-05-19T18:12:40Z", "message": "'Applied revision: master/0ba6f0d30760d567de0bac86c8c4eec13ce1a590'", "reason": "ReconciliationSucceeded", - "status": "True", - "type": "Ready" + "status": "True" } ] }, { "name": "srs-fluxconfig-srs-kustomization2", - "kind": "Kustomization", - "complianceState": "Compliant", "appliedBy": null, + "complianceState": "Compliant", "helmReleaseProperties": { - "lastRevisionApplied": 1, + "failureCount": null, "helmChartRef": { "name": "myname", "namespace": "mynamespace" }, - "failureCount": null, - "upgradeFailureCount": null, - "installFailureCount": null + "installFailureCount": null, + "lastRevisionApplied": 1, + "upgradeFailureCount": null }, + "kind": "Kustomization", "statusConditions": [ { + "type": "Ready", "lastTransitionTime": "2021-05-19T18:12:40Z", "message": "'Applied revision: master/0ba6f0d30760d567de0bac86c8c4eec13ce1a590'", "reason": "ReconciliationSucceeded", - "status": "True", - "type": "Ready" + "status": "True" } ] } ], - "repositoryPublicKey": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDiNkrANrhtRy+02Xc7b5bwvgOKvQMbqUQaXeB6FCDkbLaavw/zO/vIhIBEQu+vbBt6IlI/Pui0rMFr5JjA8Vwwd85oabzU07TPzbFvKSU9eCXqWRKWf0DHNQj/kxPJNtyPYFv3lGoiZZ6QzejOxlW/lPPokUePN0oI10daWwqznm2q0Cmh1EgPUYveq3J5KCWncZXCdwY36zWYulCWFaqazoaGy4kxcqlVy+mPjE/UJthaoLm3mq+23uhlmmfCc1j7W6+H6fcOwTyOtcbimxz2Ug8HlTzSTXBPtEe7qyllMyk62EPNUUq4bVoVsex9sKBK6/hW0Cn2P5i5jslUPCQF", - "sourceSyncedCommitId": "master/0ba6f0d30760d567de0bac86c8c4eec13ce1a590", - "sourceUpdatedAt": "2021-05-19T18:17:12Z", - "statusUpdatedAt": "2021-05-19T18:17:12Z", - "complianceState": "Compliant", - "provisioningState": "Succeeded", - "errorMessage": "" + "suspend": false + }, + "systemData": { + "createdAt": "2021-05-19T05:10:57.027Z", + "createdBy": "string", + "createdByType": "Application", + "lastModifiedAt": "2020-05-19T05:10:57.027Z", + "lastModifiedBy": "string", + "lastModifiedByType": "Application" } + }, + "headers": { + "Operation-Location": "/subscriptions/subId1/resourceGroups/rg1/providers/Microsoft.Kubernetes/connectedClusters/clusterName1/providers/Microsoft.KubernetesConfiguration/fluxConfigurations/ClusterMonitor/srs-fluxconfig/{operationId}", + "x-ms-async-operation-timeout": "PT48H" } }, "201": { - "headers": { - "Operation-Location": "/subscriptions/subId1/resourceGroups/rg1/providers/Microsoft.Kubernetes/connectedClusters/clusterName1/providers/Microsoft.KubernetesConfiguration/fluxConfigurations/ClusterMonitor/srs-fluxconfig/{operationId}", - "x-ms-async-operation-timeout": "PT48H", - "Azure-AsyncOperation": "http://management.azure.com/subscriptions/subId/resourceGroups/rg1/providers/Microsoft.Kubernetes/ConnectedClusters/clusterName1/providers/Microsoft.KubernetesConfiguration/fluxConfigurations/srs-fluxconfig/operations/operationId?api-version=2025-04-01" - }, "description": "Details of the Kubernetes Flux Configuration's current status.", "body": { - "id": "/subscriptions/subId1/resourceGroups/rg1/providers/Microsoft.Kubernetes/connectedClusters/clusterName1/providers/Microsoft.KubernetesConfiguration/fluxConfigurations/srs-fluxconfig", - "type": "Microsoft.KubernetesConfiguration/fluxConfigurations", "name": "srs-fluxconfig", - "systemData": { - "createdBy": "string", - "createdByType": "Application", - "createdAt": "2021-05-19T05:10:57.027Z", - "lastModifiedBy": "string", - "lastModifiedByType": "Application", - "lastModifiedAt": "2020-05-19T05:10:57.027Z" - }, + "type": "Microsoft.KubernetesConfiguration/fluxConfigurations", + "id": "/subscriptions/subId1/resourceGroups/rg1/providers/Microsoft.Kubernetes/connectedClusters/clusterName1/providers/Microsoft.KubernetesConfiguration/fluxConfigurations/srs-fluxconfig", "properties": { - "scope": "cluster", - "namespace": "srs-namespace", - "sourceKind": "GitRepository", - "suspend": false, + "complianceState": "Compliant", + "errorMessage": "", "gitRepository": { - "url": "https://github.com/Azure/arc-k8s-demo", - "timeoutInSeconds": 600, - "syncIntervalInSeconds": 600, + "httpsCACert": "ZXhhbXBsZWNlcnRpZmljYXRl", "repositoryRef": { "branch": "master", - "tag": null, + "commit": null, "semver": null, - "commit": null + "tag": null }, - "httpsCACert": "ZXhhbXBsZWNlcnRpZmljYXRl" + "syncIntervalInSeconds": 600, + "timeoutInSeconds": 600, + "url": "https://github.com/Azure/arc-k8s-demo" }, "kustomizations": { "srs-kustomization1": { "name": "srs-", "path": "./test/path", "dependsOn": [], - "timeoutInSeconds": 600, - "syncIntervalInSeconds": 600, - "wait": true, "postBuild": { "substitute": { "cluster_env": "prod", @@ -288,12 +270,15 @@ }, "substituteFrom": [ { - "kind": "ConfigMap", "name": "cluster-test", + "kind": "ConfigMap", "optional": true } ] - } + }, + "syncIntervalInSeconds": 600, + "timeoutInSeconds": 600, + "wait": true }, "srs-kustomization2": { "name": "srs-kustomization2", @@ -301,103 +286,120 @@ "dependsOn": [ "srs-kustomization1" ], - "timeoutInSeconds": 600, - "syncIntervalInSeconds": 600, - "retryIntervalInSeconds": 600, - "prune": false, - "wait": false, "postBuild": { "substituteFrom": [ { - "kind": "ConfigMap", "name": "cluster-values", + "kind": "ConfigMap", "optional": true }, { - "kind": "Secret", "name": "secret-name", + "kind": "Secret", "optional": false } ] - } + }, + "prune": false, + "retryIntervalInSeconds": 600, + "syncIntervalInSeconds": 600, + "timeoutInSeconds": 600, + "wait": false } }, + "namespace": "srs-namespace", + "provisioningState": "Succeeded", + "repositoryPublicKey": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDiNkrANrhtRy+02Xc7b5bwvgOKvQMbqUQaXeB6FCDkbLaavw/zO/vIhIBEQu+vbBt6IlI/Pui0rMFr5JjA8Vwwd85oabzU07TPzbFvKSU9eCXqWRKWf0DHNQj/kxPJNtyPYFv3lGoiZZ6QzejOxlW/lPPokUePN0oI10daWwqznm2q0Cmh1EgPUYveq3J5KCWncZXCdwY36zWYulCWFaqazoaGy4kxcqlVy+mPjE/UJthaoLm3mq+23uhlmmfCc1j7W6+H6fcOwTyOtcbimxz2Ug8HlTzSTXBPtEe7qyllMyk62EPNUUq4bVoVsex9sKBK6/hW0Cn2P5i5jslUPCQF", + "scope": "cluster", + "sourceKind": "GitRepository", + "sourceSyncedCommitId": "master/0ba6f0d30760d567de0bac86c8c4eec13ce1a590", + "sourceUpdatedAt": "2021-05-19T18:17:12Z", + "statusUpdatedAt": "2021-05-19T18:17:12Z", "statuses": [ { "name": "srs-fluxconfig", - "kind": "GitRepository", - "complianceState": "Compliant", "appliedBy": null, + "complianceState": "Compliant", + "kind": "GitRepository", "statusConditions": [ { + "type": "Ready", "lastTransitionTime": "2021-05-19T18:12:40Z", "message": "'Fetched revision: master/0ba6f0d30760d567de0bac86c8c4eec13ce1a590'", "reason": "GitOperationSucceed", - "status": "True", - "type": "Ready" + "status": "True" } ] }, { "name": "srs-fluxconfig-srs-kustomization1", - "kind": "Kustomization", - "complianceState": "Compliant", "appliedBy": null, + "complianceState": "Compliant", "helmReleaseProperties": { - "lastRevisionApplied": 1, + "failureCount": null, "helmChartRef": { "name": "myname", "namespace": "mynamespace" }, - "failureCount": null, - "upgradeFailureCount": null, - "installFailureCount": null + "installFailureCount": null, + "lastRevisionApplied": 1, + "upgradeFailureCount": null }, + "kind": "Kustomization", "statusConditions": [ { + "type": "Ready", "lastTransitionTime": "2021-05-19T18:12:40Z", "message": "'Applied revision: master/0ba6f0d30760d567de0bac86c8c4eec13ce1a590'", "reason": "ReconciliationSucceeded", - "status": "True", - "type": "Ready" + "status": "True" } ] }, { "name": "srs-fluxconfig-srs-kustomization2", - "kind": "Kustomization", - "complianceState": "Compliant", "appliedBy": null, + "complianceState": "Compliant", "helmReleaseProperties": { - "lastRevisionApplied": 1, + "failureCount": null, "helmChartRef": { "name": "myname", "namespace": "mynamespace" }, - "failureCount": null, - "upgradeFailureCount": null, - "installFailureCount": null + "installFailureCount": null, + "lastRevisionApplied": 1, + "upgradeFailureCount": null }, + "kind": "Kustomization", "statusConditions": [ { + "type": "Ready", "lastTransitionTime": "2021-05-19T18:12:40Z", "message": "'Applied revision: master/0ba6f0d30760d567de0bac86c8c4eec13ce1a590'", "reason": "ReconciliationSucceeded", - "status": "True", - "type": "Ready" + "status": "True" } ] } ], - "repositoryPublicKey": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDiNkrANrhtRy+02Xc7b5bwvgOKvQMbqUQaXeB6FCDkbLaavw/zO/vIhIBEQu+vbBt6IlI/Pui0rMFr5JjA8Vwwd85oabzU07TPzbFvKSU9eCXqWRKWf0DHNQj/kxPJNtyPYFv3lGoiZZ6QzejOxlW/lPPokUePN0oI10daWwqznm2q0Cmh1EgPUYveq3J5KCWncZXCdwY36zWYulCWFaqazoaGy4kxcqlVy+mPjE/UJthaoLm3mq+23uhlmmfCc1j7W6+H6fcOwTyOtcbimxz2Ug8HlTzSTXBPtEe7qyllMyk62EPNUUq4bVoVsex9sKBK6/hW0Cn2P5i5jslUPCQF", - "sourceSyncedCommitId": "master/0ba6f0d30760d567de0bac86c8c4eec13ce1a590", - "sourceUpdatedAt": "2021-05-19T18:17:12Z", - "statusUpdatedAt": "2021-05-19T18:17:12Z", - "complianceState": "Compliant", - "provisioningState": "Succeeded", - "errorMessage": "" + "suspend": false + }, + "systemData": { + "createdAt": "2021-05-19T05:10:57.027Z", + "createdBy": "string", + "createdByType": "Application", + "lastModifiedAt": "2020-05-19T05:10:57.027Z", + "lastModifiedBy": "string", + "lastModifiedByType": "Application" } + }, + "headers": { + "Azure-AsyncOperation": "http://management.azure.com/subscriptions/subId/resourceGroups/rg1/providers/Microsoft.Kubernetes/ConnectedClusters/clusterName1/providers/Microsoft.KubernetesConfiguration/fluxConfigurations/srs-fluxconfig/operations/operationId?api-version=2025-04-01", + "Operation-Location": "/subscriptions/subId1/resourceGroups/rg1/providers/Microsoft.Kubernetes/connectedClusters/clusterName1/providers/Microsoft.KubernetesConfiguration/fluxConfigurations/ClusterMonitor/srs-fluxconfig/{operationId}", + "x-ms-async-operation-timeout": "PT48H" } } - } + }, + "operationId": "FluxConfigurations_CreateOrUpdate", + "title": "Create Flux Configuration" } diff --git a/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/fluxConfigurations/stable/2025-04-01/examples/CreateFluxConfigurationWithBucket.json b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/fluxConfigurations/stable/2025-04-01/examples/CreateFluxConfigurationWithBucket.json index 043a8bd1e364..8bcebe9c9ee3 100644 --- a/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/fluxConfigurations/stable/2025-04-01/examples/CreateFluxConfigurationWithBucket.json +++ b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/fluxConfigurations/stable/2025-04-01/examples/CreateFluxConfigurationWithBucket.json @@ -1,85 +1,71 @@ { "parameters": { - "subscriptionId": "subId1", - "resourceGroupName": "rg1", - "clusterRp": "Microsoft.Kubernetes", - "clusterResourceName": "connectedClusters", - "fluxConfigurationName": "srs-fluxconfig", "api-version": "2025-04-01", "clusterName": "clusterName1", + "clusterResourceName": "connectedClusters", + "clusterRp": "Microsoft.Kubernetes", "fluxConfiguration": { "properties": { - "scope": "cluster", - "namespace": "srs-namespace", - "sourceKind": "Bucket", - "suspend": false, "bucket": { - "url": "https://fluxminiotest.az.minio.io", + "accessKey": "fluxminiotest", "bucketName": "flux", "syncIntervalInSeconds": 1000, "timeoutInSeconds": 1000, - "accessKey": "fluxminiotest" + "url": "https://fluxminiotest.az.minio.io" }, "kustomizations": { "srs-kustomization1": { "path": "./test/path", "dependsOn": [], - "timeoutInSeconds": 600, - "syncIntervalInSeconds": 600 + "syncIntervalInSeconds": 600, + "timeoutInSeconds": 600 }, "srs-kustomization2": { "path": "./other/test/path", "dependsOn": [ "srs-kustomization1" ], - "timeoutInSeconds": 600, - "syncIntervalInSeconds": 600, + "prune": false, "retryIntervalInSeconds": 600, - "prune": false + "syncIntervalInSeconds": 600, + "timeoutInSeconds": 600 } - } + }, + "namespace": "srs-namespace", + "scope": "cluster", + "sourceKind": "Bucket", + "suspend": false } - } + }, + "fluxConfigurationName": "srs-fluxconfig", + "resourceGroupName": "rg1", + "subscriptionId": "subId1" }, "responses": { "200": { - "headers": { - "Operation-Location": "/subscriptions/subId1/resourceGroups/rg1/providers/Microsoft.Kubernetes/connectedClusters/clusterName1/providers/Microsoft.KubernetesConfiguration/fluxConfigurations/ClusterMonitor/srs-fluxconfig/{operationId}", - "x-ms-async-operation-timeout": "PT48H" - }, "description": "Details of the Kubernetes Flux Configuration's current status.", "body": { - "id": "/subscriptions/subId1/resourceGroups/rg1/providers/Microsoft.Kubernetes/connectedClusters/clusterName1/providers/Microsoft.KubernetesConfiguration/fluxConfigurations/srs-fluxconfig", - "type": "Microsoft.KubernetesConfiguration/fluxConfigurations", "name": "srs-fluxconfig", - "systemData": { - "createdBy": "string", - "createdByType": "Application", - "createdAt": "2021-05-19T05:10:57.027Z", - "lastModifiedBy": "string", - "lastModifiedByType": "Application", - "lastModifiedAt": "2020-05-19T05:10:57.027Z" - }, + "type": "Microsoft.KubernetesConfiguration/fluxConfigurations", + "id": "/subscriptions/subId1/resourceGroups/rg1/providers/Microsoft.Kubernetes/connectedClusters/clusterName1/providers/Microsoft.KubernetesConfiguration/fluxConfigurations/srs-fluxconfig", "properties": { - "scope": "cluster", - "namespace": "srs-namespace", - "sourceKind": "Bucket", - "suspend": false, - "gitRepository": null, "bucket": { - "url": "https://fluxminiotest.az.minio.io", + "accessKey": "fluxminiotest", "bucketName": "flux", "syncIntervalInSeconds": 1000, "timeoutInSeconds": 1000, - "accessKey": "fluxminiotest" + "url": "https://fluxminiotest.az.minio.io" }, + "complianceState": "Compliant", + "errorMessage": "", + "gitRepository": null, "kustomizations": { "srs-kustomization1": { "name": "srs-kustomization1", "path": "./test/path", "dependsOn": [], - "timeoutInSeconds": 600, - "syncIntervalInSeconds": 600 + "syncIntervalInSeconds": 600, + "timeoutInSeconds": 600 }, "srs-kustomization2": { "name": "srs-kustomization2", @@ -87,128 +73,128 @@ "dependsOn": [ "srs-kustomization1" ], - "timeoutInSeconds": 600, - "syncIntervalInSeconds": 600, + "prune": false, "retryIntervalInSeconds": 600, - "prune": false + "syncIntervalInSeconds": 600, + "timeoutInSeconds": 600 } }, + "namespace": "srs-namespace", + "provisioningState": "Succeeded", + "repositoryPublicKey": "", + "scope": "cluster", + "sourceKind": "Bucket", + "sourceSyncedCommitId": "0ba6f0d30760d567de0bac86c8c4eec13ce1a590", + "sourceUpdatedAt": "2021-05-19T18:17:12Z", + "statusUpdatedAt": "2021-05-19T18:17:12Z", "statuses": [ { "name": "srs-fluxconfig", - "kind": "Bucket", - "complianceState": "Compliant", "appliedBy": null, + "complianceState": "Compliant", "helmReleaseProperties": null, + "kind": "Bucket", "statusConditions": [ { + "type": "Ready", "lastTransitionTime": "2022-05-04T07:17:30+00:00", "message": "stored artifact for revision '55396be14f18fa2b977c1f22becef26a94d1d9a7ccb1e19d12f9cac52d757a84'", "reason": "Succeeded", - "status": "True", - "type": "Ready" + "status": "True" } ] }, { "name": "srs-fluxconfig-srs-kustomization1", - "kind": "Kustomization", - "complianceState": "Compliant", "appliedBy": null, + "complianceState": "Compliant", "helmReleaseProperties": { - "lastRevisionApplied": 1, + "failureCount": null, "helmChartRef": { "name": "myname", "namespace": "mynamespace" }, - "failureCount": null, - "upgradeFailureCount": null, - "installFailureCount": null + "installFailureCount": null, + "lastRevisionApplied": 1, + "upgradeFailureCount": null }, + "kind": "Kustomization", "statusConditions": [ { + "type": "Ready", "lastTransitionTime": "2021-05-19T18:12:40Z", "message": "'Applied revision: 0ba6f0d30760d567de0bac86c8c4eec13ce1a590'", "reason": "ReconciliationSucceeded", - "status": "True", - "type": "Ready" + "status": "True" } ] }, { "name": "srs-fluxconfig-srs-kustomization2", - "kind": "Kustomization", - "complianceState": "Compliant", "appliedBy": null, + "complianceState": "Compliant", "helmReleaseProperties": { - "lastRevisionApplied": 1, + "failureCount": null, "helmChartRef": { "name": "myname", "namespace": "mynamespace" }, - "failureCount": null, - "upgradeFailureCount": null, - "installFailureCount": null + "installFailureCount": null, + "lastRevisionApplied": 1, + "upgradeFailureCount": null }, + "kind": "Kustomization", "statusConditions": [ { + "type": "Ready", "lastTransitionTime": "2021-05-19T18:12:40Z", "message": "'Applied revision: 0ba6f0d30760d567de0bac86c8c4eec13ce1a590'", "reason": "ReconciliationSucceeded", - "status": "True", - "type": "Ready" + "status": "True" } ] } ], - "repositoryPublicKey": "", - "sourceSyncedCommitId": "0ba6f0d30760d567de0bac86c8c4eec13ce1a590", - "sourceUpdatedAt": "2021-05-19T18:17:12Z", - "statusUpdatedAt": "2021-05-19T18:17:12Z", - "complianceState": "Compliant", - "provisioningState": "Succeeded", - "errorMessage": "" + "suspend": false + }, + "systemData": { + "createdAt": "2021-05-19T05:10:57.027Z", + "createdBy": "string", + "createdByType": "Application", + "lastModifiedAt": "2020-05-19T05:10:57.027Z", + "lastModifiedBy": "string", + "lastModifiedByType": "Application" } - } - }, - "201": { + }, "headers": { "Operation-Location": "/subscriptions/subId1/resourceGroups/rg1/providers/Microsoft.Kubernetes/connectedClusters/clusterName1/providers/Microsoft.KubernetesConfiguration/fluxConfigurations/ClusterMonitor/srs-fluxconfig/{operationId}", "x-ms-async-operation-timeout": "PT48H" - }, + } + }, + "201": { "description": "Details of the Kubernetes Flux Configuration's current status.", "body": { - "id": "/subscriptions/subId1/resourceGroups/rg1/providers/Microsoft.Kubernetes/connectedClusters/clusterName1/providers/Microsoft.KubernetesConfiguration/fluxConfigurations/srs-fluxconfig", - "type": "Microsoft.KubernetesConfiguration/fluxConfigurations", "name": "srs-fluxconfig", - "systemData": { - "createdBy": "string", - "createdByType": "Application", - "createdAt": "2021-05-19T05:10:57.027Z", - "lastModifiedBy": "string", - "lastModifiedByType": "Application", - "lastModifiedAt": "2020-05-19T05:10:57.027Z" - }, + "type": "Microsoft.KubernetesConfiguration/fluxConfigurations", + "id": "/subscriptions/subId1/resourceGroups/rg1/providers/Microsoft.Kubernetes/connectedClusters/clusterName1/providers/Microsoft.KubernetesConfiguration/fluxConfigurations/srs-fluxconfig", "properties": { - "scope": "cluster", - "namespace": "srs-namespace", - "sourceKind": "Bucket", - "suspend": false, - "gitRepository": null, "bucket": { - "url": "https://fluxminiotest.az.minio.io", + "accessKey": "fluxminiotest", "bucketName": "flux", "syncIntervalInSeconds": 1000, "timeoutInSeconds": 1000, - "accessKey": "fluxminiotest" + "url": "https://fluxminiotest.az.minio.io" }, + "complianceState": "Compliant", + "errorMessage": "", + "gitRepository": null, "kustomizations": { "srs-kustomization1": { "name": "srs-kustomization1", "path": "./test/path", "dependsOn": [], - "timeoutInSeconds": 600, - "syncIntervalInSeconds": 600 + "syncIntervalInSeconds": 600, + "timeoutInSeconds": 600 }, "srs-kustomization2": { "name": "srs-kustomization2", @@ -216,88 +202,104 @@ "dependsOn": [ "srs-kustomization1" ], - "timeoutInSeconds": 600, - "syncIntervalInSeconds": 600, + "prune": false, "retryIntervalInSeconds": 600, - "prune": false + "syncIntervalInSeconds": 600, + "timeoutInSeconds": 600 } }, + "namespace": "srs-namespace", + "provisioningState": "Succeeded", + "repositoryPublicKey": "", + "scope": "cluster", + "sourceKind": "Bucket", + "sourceSyncedCommitId": "0ba6f0d30760d567de0bac86c8c4eec13ce1a590", + "sourceUpdatedAt": "2021-05-19T18:17:12Z", + "statusUpdatedAt": "2021-05-19T18:17:12Z", "statuses": [ { "name": "srs-fluxconfig", - "kind": "Bucket", - "complianceState": "Compliant", "appliedBy": null, + "complianceState": "Compliant", + "kind": "Bucket", "statusConditions": [ { + "type": "Ready", "lastTransitionTime": "2022-05-04T07:17:30+00:00", "message": "stored artifact for revision '55396be14f18fa2b977c1f22becef26a94d1d9a7ccb1e19d12f9cac52d757a84'", "reason": "Succeeded", - "status": "True", - "type": "Ready" + "status": "True" } ] }, { "name": "srs-fluxconfig-srs-kustomization1", - "kind": "Kustomization", - "complianceState": "Compliant", "appliedBy": null, + "complianceState": "Compliant", "helmReleaseProperties": { - "lastRevisionApplied": 1, + "failureCount": null, "helmChartRef": { "name": "myname", "namespace": "mynamespace" }, - "failureCount": null, - "upgradeFailureCount": null, - "installFailureCount": null + "installFailureCount": null, + "lastRevisionApplied": 1, + "upgradeFailureCount": null }, + "kind": "Kustomization", "statusConditions": [ { + "type": "Ready", "lastTransitionTime": "2021-05-19T18:12:40Z", "message": "'Applied revision: 0ba6f0d30760d567de0bac86c8c4eec13ce1a590'", "reason": "ReconciliationSucceeded", - "status": "True", - "type": "Ready" + "status": "True" } ] }, { "name": "srs-fluxconfig-srs-kustomization2", - "kind": "Kustomization", - "complianceState": "Compliant", "appliedBy": null, + "complianceState": "Compliant", "helmReleaseProperties": { - "lastRevisionApplied": 1, + "failureCount": null, "helmChartRef": { "name": "myname", "namespace": "mynamespace" }, - "failureCount": null, - "upgradeFailureCount": null, - "installFailureCount": null + "installFailureCount": null, + "lastRevisionApplied": 1, + "upgradeFailureCount": null }, + "kind": "Kustomization", "statusConditions": [ { + "type": "Ready", "lastTransitionTime": "2021-05-19T18:12:40Z", "message": "'Applied revision: 0ba6f0d30760d567de0bac86c8c4eec13ce1a590'", "reason": "ReconciliationSucceeded", - "status": "True", - "type": "Ready" + "status": "True" } ] } ], - "repositoryPublicKey": "", - "sourceSyncedCommitId": "0ba6f0d30760d567de0bac86c8c4eec13ce1a590", - "sourceUpdatedAt": "2021-05-19T18:17:12Z", - "statusUpdatedAt": "2021-05-19T18:17:12Z", - "complianceState": "Compliant", - "provisioningState": "Succeeded", - "errorMessage": "" + "suspend": false + }, + "systemData": { + "createdAt": "2021-05-19T05:10:57.027Z", + "createdBy": "string", + "createdByType": "Application", + "lastModifiedAt": "2020-05-19T05:10:57.027Z", + "lastModifiedBy": "string", + "lastModifiedByType": "Application" } + }, + "headers": { + "Operation-Location": "/subscriptions/subId1/resourceGroups/rg1/providers/Microsoft.Kubernetes/connectedClusters/clusterName1/providers/Microsoft.KubernetesConfiguration/fluxConfigurations/ClusterMonitor/srs-fluxconfig/{operationId}", + "x-ms-async-operation-timeout": "PT48H" } } - } + }, + "operationId": "FluxConfigurations_CreateOrUpdate", + "title": "Create Flux Configuration with Bucket Source Kind" } diff --git a/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/fluxConfigurations/stable/2025-04-01/examples/CreateFluxConfigurationWithOCIRepository.json b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/fluxConfigurations/stable/2025-04-01/examples/CreateFluxConfigurationWithOCIRepository.json index 326038d9b6d5..8118e198e0fe 100644 --- a/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/fluxConfigurations/stable/2025-04-01/examples/CreateFluxConfigurationWithOCIRepository.json +++ b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/fluxConfigurations/stable/2025-04-01/examples/CreateFluxConfigurationWithOCIRepository.json @@ -1,85 +1,65 @@ { "parameters": { - "subscriptionId": "subId1", - "resourceGroupName": "rg1", - "clusterRp": "Microsoft.Kubernetes", - "clusterResourceName": "connectedClusters", - "fluxConfigurationName": "srs-fluxconfig", "api-version": "2025-04-01", "clusterName": "clusterName1", + "clusterResourceName": "connectedClusters", + "clusterRp": "Microsoft.Kubernetes", "fluxConfiguration": { "properties": { - "scope": "cluster", - "namespace": "srs-namespace", - "sourceKind": "OCIRepository", - "suspend": false, - "ociRepository": { - "url": "oci://ghcr.io/stefanprodan/manifests/podinfo", - "syncIntervalInSeconds": 1000, - "timeoutInSeconds": 1000, - "serviceAccountName": "testserviceaccount" - }, "kustomizations": { "srs-kustomization1": { "path": "./test/path", "dependsOn": [], - "timeoutInSeconds": 600, - "syncIntervalInSeconds": 600 + "syncIntervalInSeconds": 600, + "timeoutInSeconds": 600 }, "srs-kustomization2": { "path": "./other/test/path", "dependsOn": [ "srs-kustomization1" ], - "timeoutInSeconds": 600, - "syncIntervalInSeconds": 600, + "prune": false, "retryIntervalInSeconds": 600, - "prune": false + "syncIntervalInSeconds": 600, + "timeoutInSeconds": 600 } - } + }, + "namespace": "srs-namespace", + "ociRepository": { + "serviceAccountName": "testserviceaccount", + "syncIntervalInSeconds": 1000, + "timeoutInSeconds": 1000, + "url": "oci://ghcr.io/stefanprodan/manifests/podinfo" + }, + "scope": "cluster", + "sourceKind": "OCIRepository", + "suspend": false } - } + }, + "fluxConfigurationName": "srs-fluxconfig", + "resourceGroupName": "rg1", + "subscriptionId": "subId1" }, "responses": { "200": { - "headers": { - "Operation-Location": "/subscriptions/subId1/resourceGroups/rg1/providers/Microsoft.Kubernetes/connectedClusters/clusterName1/providers/Microsoft.KubernetesConfiguration/fluxConfigurations/ClusterMonitor/srs-fluxconfig/{operationId}", - "x-ms-async-operation-timeout": "PT48H" - }, "description": "Details of the Kubernetes Flux Configuration's current status.", "body": { - "id": "/subscriptions/subId1/resourceGroups/rg1/providers/Microsoft.Kubernetes/connectedClusters/clusterName1/providers/Microsoft.KubernetesConfiguration/fluxConfigurations/srs-fluxconfig", - "type": "Microsoft.KubernetesConfiguration/fluxConfigurations", "name": "srs-fluxconfig", - "systemData": { - "createdBy": "string", - "createdByType": "Application", - "createdAt": "2021-05-19T05:10:57.027Z", - "lastModifiedBy": "string", - "lastModifiedByType": "Application", - "lastModifiedAt": "2020-05-19T05:10:57.027Z" - }, + "type": "Microsoft.KubernetesConfiguration/fluxConfigurations", + "id": "/subscriptions/subId1/resourceGroups/rg1/providers/Microsoft.Kubernetes/connectedClusters/clusterName1/providers/Microsoft.KubernetesConfiguration/fluxConfigurations/srs-fluxconfig", "properties": { - "scope": "cluster", - "namespace": "srs-namespace", - "sourceKind": "OCIRepository", - "suspend": false, - "gitRepository": null, - "bucket": null, "azureBlob": null, - "ociRepository": { - "url": "oci://ghcr.io/stefanprodan/manifests/podinfo", - "syncIntervalInSeconds": 1000, - "timeoutInSeconds": 1000, - "serviceAccountName": "testserviceaccount" - }, + "bucket": null, + "complianceState": "Compliant", + "errorMessage": "", + "gitRepository": null, "kustomizations": { "srs-kustomization1": { "name": "srs-kustomization1", "path": "./test/path", "dependsOn": [], - "timeoutInSeconds": 600, - "syncIntervalInSeconds": 600 + "syncIntervalInSeconds": 600, + "timeoutInSeconds": 600 }, "srs-kustomization2": { "name": "srs-kustomization2", @@ -87,129 +67,129 @@ "dependsOn": [ "srs-kustomization1" ], - "timeoutInSeconds": 600, - "syncIntervalInSeconds": 600, + "prune": false, "retryIntervalInSeconds": 600, - "prune": false + "syncIntervalInSeconds": 600, + "timeoutInSeconds": 600 } }, + "namespace": "srs-namespace", + "ociRepository": { + "serviceAccountName": "testserviceaccount", + "syncIntervalInSeconds": 1000, + "timeoutInSeconds": 1000, + "url": "oci://ghcr.io/stefanprodan/manifests/podinfo" + }, + "provisioningState": "Succeeded", + "repositoryPublicKey": "", + "scope": "cluster", + "sourceKind": "OCIRepository", + "sourceSyncedCommitId": "0ba6f0d30760d567de0bac86c8c4eec13ce1a590", + "sourceUpdatedAt": "2021-05-19T18:17:12Z", + "statusUpdatedAt": "2021-05-19T18:17:12Z", "statuses": [ { "name": "srs-fluxconfig", - "kind": "OCIRepository", - "complianceState": "Compliant", "appliedBy": null, + "complianceState": "Compliant", "helmReleaseProperties": null, + "kind": "OCIRepository", "statusConditions": [ { + "type": "Ready", "lastTransitionTime": "2022-05-04T07:17:30+00:00", "message": "stored artifact for revision '55396be14f18fa2b977c1f22becef26a94d1d9a7ccb1e19d12f9cac52d757a84'", "reason": "Succeeded", - "status": "True", - "type": "Ready" + "status": "True" } ] }, { "name": "srs-fluxconfig-srs-kustomization1", - "kind": "Kustomization", - "complianceState": "Compliant", "appliedBy": null, + "complianceState": "Compliant", "helmReleaseProperties": { - "lastRevisionApplied": 1, + "failureCount": null, "helmChartRef": { "name": "myname", "namespace": "mynamespace" }, - "failureCount": null, - "upgradeFailureCount": null, - "installFailureCount": null + "installFailureCount": null, + "lastRevisionApplied": 1, + "upgradeFailureCount": null }, + "kind": "Kustomization", "statusConditions": [ { + "type": "Ready", "lastTransitionTime": "2021-05-19T18:12:40Z", "message": "'Applied revision: 0ba6f0d30760d567de0bac86c8c4eec13ce1a590'", "reason": "ReconciliationSucceeded", - "status": "True", - "type": "Ready" + "status": "True" } ] }, { "name": "srs-fluxconfig-srs-kustomization2", - "kind": "Kustomization", - "complianceState": "Compliant", "appliedBy": null, + "complianceState": "Compliant", "helmReleaseProperties": { - "lastRevisionApplied": 1, + "failureCount": null, "helmChartRef": { "name": "myname", "namespace": "mynamespace" }, - "failureCount": null, - "upgradeFailureCount": null, - "installFailureCount": null + "installFailureCount": null, + "lastRevisionApplied": 1, + "upgradeFailureCount": null }, + "kind": "Kustomization", "statusConditions": [ { + "type": "Ready", "lastTransitionTime": "2021-05-19T18:12:40Z", "message": "'Applied revision: 0ba6f0d30760d567de0bac86c8c4eec13ce1a590'", "reason": "ReconciliationSucceeded", - "status": "True", - "type": "Ready" + "status": "True" } ] } ], - "repositoryPublicKey": "", - "sourceSyncedCommitId": "0ba6f0d30760d567de0bac86c8c4eec13ce1a590", - "sourceUpdatedAt": "2021-05-19T18:17:12Z", - "statusUpdatedAt": "2021-05-19T18:17:12Z", - "complianceState": "Compliant", - "provisioningState": "Succeeded", - "errorMessage": "" + "suspend": false + }, + "systemData": { + "createdAt": "2021-05-19T05:10:57.027Z", + "createdBy": "string", + "createdByType": "Application", + "lastModifiedAt": "2020-05-19T05:10:57.027Z", + "lastModifiedBy": "string", + "lastModifiedByType": "Application" } - } - }, - "201": { + }, "headers": { "Operation-Location": "/subscriptions/subId1/resourceGroups/rg1/providers/Microsoft.Kubernetes/connectedClusters/clusterName1/providers/Microsoft.KubernetesConfiguration/fluxConfigurations/ClusterMonitor/srs-fluxconfig/{operationId}", "x-ms-async-operation-timeout": "PT48H" - }, + } + }, + "201": { "description": "Details of the Kubernetes Flux Configuration's current status.", "body": { - "id": "/subscriptions/subId1/resourceGroups/rg1/providers/Microsoft.Kubernetes/connectedClusters/clusterName1/providers/Microsoft.KubernetesConfiguration/fluxConfigurations/srs-fluxconfig", - "type": "Microsoft.KubernetesConfiguration/fluxConfigurations", "name": "srs-fluxconfig", - "systemData": { - "createdBy": "string", - "createdByType": "Application", - "createdAt": "2021-05-19T05:10:57.027Z", - "lastModifiedBy": "string", - "lastModifiedByType": "Application", - "lastModifiedAt": "2020-05-19T05:10:57.027Z" - }, + "type": "Microsoft.KubernetesConfiguration/fluxConfigurations", + "id": "/subscriptions/subId1/resourceGroups/rg1/providers/Microsoft.Kubernetes/connectedClusters/clusterName1/providers/Microsoft.KubernetesConfiguration/fluxConfigurations/srs-fluxconfig", "properties": { - "scope": "cluster", - "namespace": "srs-namespace", - "sourceKind": "OCIRepository", - "suspend": false, - "gitRepository": null, - "bucket": null, "azureBlob": null, - "ociRepository": { - "url": "oci://ghcr.io/stefanprodan/manifests/podinfo", - "syncIntervalInSeconds": 1000, - "timeoutInSeconds": 1000, - "serviceAccountName": "testserviceaccount" - }, + "bucket": null, + "complianceState": "Compliant", + "errorMessage": "", + "gitRepository": null, "kustomizations": { "srs-kustomization1": { "name": "srs-kustomization1", "path": "./test/path", "dependsOn": [], - "timeoutInSeconds": 600, - "syncIntervalInSeconds": 600 + "syncIntervalInSeconds": 600, + "timeoutInSeconds": 600 }, "srs-kustomization2": { "name": "srs-kustomization2", @@ -217,88 +197,110 @@ "dependsOn": [ "srs-kustomization1" ], - "timeoutInSeconds": 600, - "syncIntervalInSeconds": 600, + "prune": false, "retryIntervalInSeconds": 600, - "prune": false + "syncIntervalInSeconds": 600, + "timeoutInSeconds": 600 } }, + "namespace": "srs-namespace", + "ociRepository": { + "serviceAccountName": "testserviceaccount", + "syncIntervalInSeconds": 1000, + "timeoutInSeconds": 1000, + "url": "oci://ghcr.io/stefanprodan/manifests/podinfo" + }, + "provisioningState": "Succeeded", + "repositoryPublicKey": "", + "scope": "cluster", + "sourceKind": "OCIRepository", + "sourceSyncedCommitId": "0ba6f0d30760d567de0bac86c8c4eec13ce1a590", + "sourceUpdatedAt": "2021-05-19T18:17:12Z", + "statusUpdatedAt": "2021-05-19T18:17:12Z", "statuses": [ { "name": "srs-fluxconfig", - "kind": "OCIRepository", - "complianceState": "Compliant", "appliedBy": null, + "complianceState": "Compliant", + "kind": "OCIRepository", "statusConditions": [ { + "type": "Ready", "lastTransitionTime": "2022-05-04T07:17:30+00:00", "message": "stored artifact for revision '55396be14f18fa2b977c1f22becef26a94d1d9a7ccb1e19d12f9cac52d757a84'", "reason": "Succeeded", - "status": "True", - "type": "Ready" + "status": "True" } ] }, { "name": "srs-fluxconfig-srs-kustomization1", - "kind": "Kustomization", - "complianceState": "Compliant", "appliedBy": null, + "complianceState": "Compliant", "helmReleaseProperties": { - "lastRevisionApplied": 1, + "failureCount": null, "helmChartRef": { "name": "myname", "namespace": "mynamespace" }, - "failureCount": null, - "upgradeFailureCount": null, - "installFailureCount": null + "installFailureCount": null, + "lastRevisionApplied": 1, + "upgradeFailureCount": null }, + "kind": "Kustomization", "statusConditions": [ { + "type": "Ready", "lastTransitionTime": "2021-05-19T18:12:40Z", "message": "'Applied revision: 0ba6f0d30760d567de0bac86c8c4eec13ce1a590'", "reason": "ReconciliationSucceeded", - "status": "True", - "type": "Ready" + "status": "True" } ] }, { "name": "srs-fluxconfig-srs-kustomization2", - "kind": "Kustomization", - "complianceState": "Compliant", "appliedBy": null, + "complianceState": "Compliant", "helmReleaseProperties": { - "lastRevisionApplied": 1, + "failureCount": null, "helmChartRef": { "name": "myname", "namespace": "mynamespace" }, - "failureCount": null, - "upgradeFailureCount": null, - "installFailureCount": null + "installFailureCount": null, + "lastRevisionApplied": 1, + "upgradeFailureCount": null }, + "kind": "Kustomization", "statusConditions": [ { + "type": "Ready", "lastTransitionTime": "2021-05-19T18:12:40Z", "message": "'Applied revision: 0ba6f0d30760d567de0bac86c8c4eec13ce1a590'", "reason": "ReconciliationSucceeded", - "status": "True", - "type": "Ready" + "status": "True" } ] } ], - "repositoryPublicKey": "", - "sourceSyncedCommitId": "0ba6f0d30760d567de0bac86c8c4eec13ce1a590", - "sourceUpdatedAt": "2021-05-19T18:17:12Z", - "statusUpdatedAt": "2021-05-19T18:17:12Z", - "complianceState": "Compliant", - "provisioningState": "Succeeded", - "errorMessage": "" + "suspend": false + }, + "systemData": { + "createdAt": "2021-05-19T05:10:57.027Z", + "createdBy": "string", + "createdByType": "Application", + "lastModifiedAt": "2020-05-19T05:10:57.027Z", + "lastModifiedBy": "string", + "lastModifiedByType": "Application" } + }, + "headers": { + "Operation-Location": "/subscriptions/subId1/resourceGroups/rg1/providers/Microsoft.Kubernetes/connectedClusters/clusterName1/providers/Microsoft.KubernetesConfiguration/fluxConfigurations/ClusterMonitor/srs-fluxconfig/{operationId}", + "x-ms-async-operation-timeout": "PT48H" } } - } + }, + "operationId": "FluxConfigurations_CreateOrUpdate", + "title": "Create Flux Configuration with OCIRepository Source Kind" } diff --git a/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/fluxConfigurations/stable/2025-04-01/examples/CreateFluxConfigurationWithProvider.json b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/fluxConfigurations/stable/2025-04-01/examples/CreateFluxConfigurationWithProvider.json index 3a1dac164026..c34a08f834c7 100644 --- a/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/fluxConfigurations/stable/2025-04-01/examples/CreateFluxConfigurationWithProvider.json +++ b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/fluxConfigurations/stable/2025-04-01/examples/CreateFluxConfigurationWithProvider.json @@ -1,35 +1,25 @@ { "parameters": { - "subscriptionId": "subId1", - "resourceGroupName": "rg1", - "clusterRp": "Microsoft.Kubernetes", - "clusterResourceName": "connectedClusters", - "fluxConfigurationName": "srs-fluxconfig", "api-version": "2025-04-01", "clusterName": "clusterName1", + "clusterResourceName": "connectedClusters", + "clusterRp": "Microsoft.Kubernetes", "fluxConfiguration": { "properties": { - "scope": "cluster", - "namespace": "srs-namespace", - "sourceKind": "GitRepository", - "suspend": false, "gitRepository": { - "url": "https://dev.azure.com/org/proj/_git/arc-k8s-demo", - "timeoutInSeconds": 600, - "syncIntervalInSeconds": 600, + "httpsCACert": "ZXhhbXBsZWNlcnRpZmljYXRl", "provider": "Azure", "repositoryRef": { "branch": "master" }, - "httpsCACert": "ZXhhbXBsZWNlcnRpZmljYXRl" + "syncIntervalInSeconds": 600, + "timeoutInSeconds": 600, + "url": "https://dev.azure.com/org/proj/_git/arc-k8s-demo" }, "kustomizations": { "srs-kustomization1": { "path": "./test/path", "dependsOn": [], - "timeoutInSeconds": 600, - "syncIntervalInSeconds": 600, - "wait": true, "postBuild": { "substitute": { "cluster_env": "prod", @@ -37,88 +27,81 @@ }, "substituteFrom": [ { - "kind": "ConfigMap", "name": "cluster-test", + "kind": "ConfigMap", "optional": true } ] - } + }, + "syncIntervalInSeconds": 600, + "timeoutInSeconds": 600, + "wait": true }, "srs-kustomization2": { "path": "./other/test/path", "dependsOn": [ "srs-kustomization1" ], - "timeoutInSeconds": 600, - "syncIntervalInSeconds": 600, - "retryIntervalInSeconds": 600, - "prune": false, - "wait": false, "postBuild": { "substituteFrom": [ { - "kind": "ConfigMap", "name": "cluster-values", + "kind": "ConfigMap", "optional": true }, { - "kind": "Secret", "name": "secret-name", + "kind": "Secret", "optional": false } ] - } + }, + "prune": false, + "retryIntervalInSeconds": 600, + "syncIntervalInSeconds": 600, + "timeoutInSeconds": 600, + "wait": false } }, - "waitForReconciliation": true, - "reconciliationWaitDuration": "PT30M" + "namespace": "srs-namespace", + "reconciliationWaitDuration": "PT30M", + "scope": "cluster", + "sourceKind": "GitRepository", + "suspend": false, + "waitForReconciliation": true } - } + }, + "fluxConfigurationName": "srs-fluxconfig", + "resourceGroupName": "rg1", + "subscriptionId": "subId1" }, "responses": { "200": { - "headers": { - "Operation-Location": "/subscriptions/subId1/resourceGroups/rg1/providers/Microsoft.Kubernetes/connectedClusters/clusterName1/providers/Microsoft.KubernetesConfiguration/fluxConfigurations/ClusterMonitor/srs-fluxconfig/{operationId}", - "x-ms-async-operation-timeout": "PT48H" - }, "description": "Details of the Kubernetes Flux Configuration's current status.", "body": { - "id": "/subscriptions/subId1/resourceGroups/rg1/providers/Microsoft.Kubernetes/connectedClusters/clusterName1/providers/Microsoft.KubernetesConfiguration/fluxConfigurations/srs-fluxconfig", - "type": "Microsoft.KubernetesConfiguration/fluxConfigurations", "name": "srs-fluxconfig", - "systemData": { - "createdBy": "string", - "createdByType": "Application", - "createdAt": "2021-05-19T05:10:57.027Z", - "lastModifiedBy": "string", - "lastModifiedByType": "Application", - "lastModifiedAt": "2020-05-19T05:10:57.027Z" - }, + "type": "Microsoft.KubernetesConfiguration/fluxConfigurations", + "id": "/subscriptions/subId1/resourceGroups/rg1/providers/Microsoft.Kubernetes/connectedClusters/clusterName1/providers/Microsoft.KubernetesConfiguration/fluxConfigurations/srs-fluxconfig", "properties": { - "scope": "cluster", - "namespace": "srs-namespace", - "sourceKind": "GitRepository", - "suspend": false, + "complianceState": "Compliant", + "errorMessage": "", "gitRepository": { - "url": "https://github.com/Azure/arc-k8s-demo", - "timeoutInSeconds": 600, - "syncIntervalInSeconds": 600, + "httpsCACert": "ZXhhbXBsZWNlcnRpZmljYXRl", "repositoryRef": { "branch": "master", - "tag": null, + "commit": null, "semver": null, - "commit": null + "tag": null }, - "httpsCACert": "ZXhhbXBsZWNlcnRpZmljYXRl" + "syncIntervalInSeconds": 600, + "timeoutInSeconds": 600, + "url": "https://github.com/Azure/arc-k8s-demo" }, "kustomizations": { "srs-kustomization1": { "name": "srs-kustomization1", "path": "./test/path", "dependsOn": [], - "timeoutInSeconds": 600, - "syncIntervalInSeconds": 600, - "wait": true, "postBuild": { "substitute": { "cluster_env": "prod", @@ -126,12 +109,15 @@ }, "substituteFrom": [ { - "kind": "ConfigMap", "name": "cluster-test", + "kind": "ConfigMap", "optional": true } ] - } + }, + "syncIntervalInSeconds": 600, + "timeoutInSeconds": 600, + "wait": true }, "srs-kustomization2": { "name": "srs-kustomization2", @@ -139,149 +125,145 @@ "dependsOn": [ "srs-kustomization1" ], - "timeoutInSeconds": 600, - "syncIntervalInSeconds": 600, - "retryIntervalInSeconds": 600, - "prune": false, - "wait": false, "postBuild": { "substituteFrom": [ { - "kind": "ConfigMap", "name": "cluster-values", + "kind": "ConfigMap", "optional": true }, { - "kind": "Secret", "name": "secret-name", + "kind": "Secret", "optional": false } ] - } + }, + "prune": false, + "retryIntervalInSeconds": 600, + "syncIntervalInSeconds": 600, + "timeoutInSeconds": 600, + "wait": false } }, + "namespace": "srs-namespace", + "provisioningState": "Succeeded", + "repositoryPublicKey": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDiNkrANrhtRy+02Xc7b5bwvgOKvQMbqUQaXeB6FCDkbLaavw/zO/vIhIBEQu+vbBt6IlI/Pui0rMFr5JjA8Vwwd85oabzU07TPzbFvKSU9eCXqWRKWf0DHNQj/kxPJNtyPYFv3lGoiZZ6QzejOxlW/lPPokUePN0oI10daWwqznm2q0Cmh1EgPUYveq3J5KCWncZXCdwY36zWYulCWFaqazoaGy4kxcqlVy+mPjE/UJthaoLm3mq+23uhlmmfCc1j7W6+H6fcOwTyOtcbimxz2Ug8HlTzSTXBPtEe7qyllMyk62EPNUUq4bVoVsex9sKBK6/hW0Cn2P5i5jslUPCQF", + "scope": "cluster", + "sourceKind": "GitRepository", + "sourceSyncedCommitId": "master/0ba6f0d30760d567de0bac86c8c4eec13ce1a590", + "sourceUpdatedAt": "2021-05-19T18:17:12Z", + "statusUpdatedAt": "2021-05-19T18:17:12Z", "statuses": [ { "name": "srs-fluxconfig", - "kind": "GitRepository", - "complianceState": "Compliant", "appliedBy": null, + "complianceState": "Compliant", "helmReleaseProperties": null, + "kind": "GitRepository", "statusConditions": [ { + "type": "Ready", "lastTransitionTime": "2021-05-19T18:12:40Z", "message": "'Fetched revision: master/0ba6f0d30760d567de0bac86c8c4eec13ce1a590'", "reason": "GitOperationSucceed", - "status": "True", - "type": "Ready" + "status": "True" } ] }, { "name": "srs-fluxconfig-srs-kustomization1", - "kind": "Kustomization", - "complianceState": "Compliant", "appliedBy": null, + "complianceState": "Compliant", "helmReleaseProperties": { - "lastRevisionApplied": 1, + "failureCount": null, "helmChartRef": { "name": "myname", "namespace": "mynamespace" }, - "failureCount": null, - "upgradeFailureCount": null, - "installFailureCount": null + "installFailureCount": null, + "lastRevisionApplied": 1, + "upgradeFailureCount": null }, + "kind": "Kustomization", "statusConditions": [ { + "type": "Ready", "lastTransitionTime": "2021-05-19T18:12:40Z", "message": "'Applied revision: master/0ba6f0d30760d567de0bac86c8c4eec13ce1a590'", "reason": "ReconciliationSucceeded", - "status": "True", - "type": "Ready" + "status": "True" } ] }, { "name": "srs-fluxconfig-srs-kustomization2", - "kind": "Kustomization", - "complianceState": "Compliant", "appliedBy": null, + "complianceState": "Compliant", "helmReleaseProperties": { - "lastRevisionApplied": 1, + "failureCount": null, "helmChartRef": { "name": "myname", "namespace": "mynamespace" }, - "failureCount": null, - "upgradeFailureCount": null, - "installFailureCount": null + "installFailureCount": null, + "lastRevisionApplied": 1, + "upgradeFailureCount": null }, + "kind": "Kustomization", "statusConditions": [ { + "type": "Ready", "lastTransitionTime": "2021-05-19T18:12:40Z", "message": "'Applied revision: master/0ba6f0d30760d567de0bac86c8c4eec13ce1a590'", "reason": "ReconciliationSucceeded", - "status": "True", - "type": "Ready" + "status": "True" } ] } ], - "repositoryPublicKey": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDiNkrANrhtRy+02Xc7b5bwvgOKvQMbqUQaXeB6FCDkbLaavw/zO/vIhIBEQu+vbBt6IlI/Pui0rMFr5JjA8Vwwd85oabzU07TPzbFvKSU9eCXqWRKWf0DHNQj/kxPJNtyPYFv3lGoiZZ6QzejOxlW/lPPokUePN0oI10daWwqznm2q0Cmh1EgPUYveq3J5KCWncZXCdwY36zWYulCWFaqazoaGy4kxcqlVy+mPjE/UJthaoLm3mq+23uhlmmfCc1j7W6+H6fcOwTyOtcbimxz2Ug8HlTzSTXBPtEe7qyllMyk62EPNUUq4bVoVsex9sKBK6/hW0Cn2P5i5jslUPCQF", - "sourceSyncedCommitId": "master/0ba6f0d30760d567de0bac86c8c4eec13ce1a590", - "sourceUpdatedAt": "2021-05-19T18:17:12Z", - "statusUpdatedAt": "2021-05-19T18:17:12Z", - "complianceState": "Compliant", - "provisioningState": "Succeeded", - "errorMessage": "" + "suspend": false + }, + "systemData": { + "createdAt": "2021-05-19T05:10:57.027Z", + "createdBy": "string", + "createdByType": "Application", + "lastModifiedAt": "2020-05-19T05:10:57.027Z", + "lastModifiedBy": "string", + "lastModifiedByType": "Application" } + }, + "headers": { + "Operation-Location": "/subscriptions/subId1/resourceGroups/rg1/providers/Microsoft.Kubernetes/connectedClusters/clusterName1/providers/Microsoft.KubernetesConfiguration/fluxConfigurations/ClusterMonitor/srs-fluxconfig/{operationId}", + "x-ms-async-operation-timeout": "PT48H" } }, "201": { - "headers": { - "Operation-Location": "/subscriptions/subId1/resourceGroups/rg1/providers/Microsoft.Kubernetes/connectedClusters/clusterName1/providers/Microsoft.KubernetesConfiguration/fluxConfigurations/ClusterMonitor/srs-fluxconfig/{operationId}", - "x-ms-async-operation-timeout": "PT48H", - "Azure-AsyncOperation": "http://management.azure.com/subscriptions/subId/resourceGroups/rg1/providers/Microsoft.Kubernetes/ConnectedClusters/clusterName1/providers/Microsoft.KubernetesConfiguration/fluxConfigurations/srs-fluxconfig/operations/operationId?api-version=2025-04-01" - }, "description": "Details of the Kubernetes Flux Configuration's current status.", "body": { - "id": "/subscriptions/subId1/resourceGroups/rg1/providers/Microsoft.Kubernetes/connectedClusters/clusterName1/providers/Microsoft.KubernetesConfiguration/fluxConfigurations/srs-fluxconfig", - "type": "Microsoft.KubernetesConfiguration/fluxConfigurations", "name": "srs-fluxconfig", - "systemData": { - "createdBy": "string", - "createdByType": "Application", - "createdAt": "2021-05-19T05:10:57.027Z", - "lastModifiedBy": "string", - "lastModifiedByType": "Application", - "lastModifiedAt": "2020-05-19T05:10:57.027Z" - }, + "type": "Microsoft.KubernetesConfiguration/fluxConfigurations", + "id": "/subscriptions/subId1/resourceGroups/rg1/providers/Microsoft.Kubernetes/connectedClusters/clusterName1/providers/Microsoft.KubernetesConfiguration/fluxConfigurations/srs-fluxconfig", "properties": { - "scope": "cluster", - "namespace": "srs-namespace", - "sourceKind": "GitRepository", - "suspend": false, + "complianceState": "Compliant", + "errorMessage": "", "gitRepository": { - "url": "https://github.com/Azure/arc-k8s-demo", - "timeoutInSeconds": 600, - "syncIntervalInSeconds": 600, + "httpsCACert": "ZXhhbXBsZWNlcnRpZmljYXRl", "repositoryRef": { "branch": "master", - "tag": null, + "commit": null, "semver": null, - "commit": null + "tag": null }, - "httpsCACert": "ZXhhbXBsZWNlcnRpZmljYXRl" + "syncIntervalInSeconds": 600, + "timeoutInSeconds": 600, + "url": "https://github.com/Azure/arc-k8s-demo" }, "kustomizations": { "srs-kustomization1": { "name": "srs-", "path": "./test/path", "dependsOn": [], - "timeoutInSeconds": 600, - "syncIntervalInSeconds": 600, - "wait": true, "postBuild": { "substitute": { "cluster_env": "prod", @@ -289,12 +271,15 @@ }, "substituteFrom": [ { - "kind": "ConfigMap", "name": "cluster-test", + "kind": "ConfigMap", "optional": true } ] - } + }, + "syncIntervalInSeconds": 600, + "timeoutInSeconds": 600, + "wait": true }, "srs-kustomization2": { "name": "srs-kustomization2", @@ -302,103 +287,120 @@ "dependsOn": [ "srs-kustomization1" ], - "timeoutInSeconds": 600, - "syncIntervalInSeconds": 600, - "retryIntervalInSeconds": 600, - "prune": false, - "wait": false, "postBuild": { "substituteFrom": [ { - "kind": "ConfigMap", "name": "cluster-values", + "kind": "ConfigMap", "optional": true }, { - "kind": "Secret", "name": "secret-name", + "kind": "Secret", "optional": false } ] - } + }, + "prune": false, + "retryIntervalInSeconds": 600, + "syncIntervalInSeconds": 600, + "timeoutInSeconds": 600, + "wait": false } }, + "namespace": "srs-namespace", + "provisioningState": "Succeeded", + "repositoryPublicKey": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDiNkrANrhtRy+02Xc7b5bwvgOKvQMbqUQaXeB6FCDkbLaavw/zO/vIhIBEQu+vbBt6IlI/Pui0rMFr5JjA8Vwwd85oabzU07TPzbFvKSU9eCXqWRKWf0DHNQj/kxPJNtyPYFv3lGoiZZ6QzejOxlW/lPPokUePN0oI10daWwqznm2q0Cmh1EgPUYveq3J5KCWncZXCdwY36zWYulCWFaqazoaGy4kxcqlVy+mPjE/UJthaoLm3mq+23uhlmmfCc1j7W6+H6fcOwTyOtcbimxz2Ug8HlTzSTXBPtEe7qyllMyk62EPNUUq4bVoVsex9sKBK6/hW0Cn2P5i5jslUPCQF", + "scope": "cluster", + "sourceKind": "GitRepository", + "sourceSyncedCommitId": "master/0ba6f0d30760d567de0bac86c8c4eec13ce1a590", + "sourceUpdatedAt": "2021-05-19T18:17:12Z", + "statusUpdatedAt": "2021-05-19T18:17:12Z", "statuses": [ { "name": "srs-fluxconfig", - "kind": "GitRepository", - "complianceState": "Compliant", "appliedBy": null, + "complianceState": "Compliant", + "kind": "GitRepository", "statusConditions": [ { + "type": "Ready", "lastTransitionTime": "2021-05-19T18:12:40Z", "message": "'Fetched revision: master/0ba6f0d30760d567de0bac86c8c4eec13ce1a590'", "reason": "GitOperationSucceed", - "status": "True", - "type": "Ready" + "status": "True" } ] }, { "name": "srs-fluxconfig-srs-kustomization1", - "kind": "Kustomization", - "complianceState": "Compliant", "appliedBy": null, + "complianceState": "Compliant", "helmReleaseProperties": { - "lastRevisionApplied": 1, + "failureCount": null, "helmChartRef": { "name": "myname", "namespace": "mynamespace" }, - "failureCount": null, - "upgradeFailureCount": null, - "installFailureCount": null + "installFailureCount": null, + "lastRevisionApplied": 1, + "upgradeFailureCount": null }, + "kind": "Kustomization", "statusConditions": [ { + "type": "Ready", "lastTransitionTime": "2021-05-19T18:12:40Z", "message": "'Applied revision: master/0ba6f0d30760d567de0bac86c8c4eec13ce1a590'", "reason": "ReconciliationSucceeded", - "status": "True", - "type": "Ready" + "status": "True" } ] }, { "name": "srs-fluxconfig-srs-kustomization2", - "kind": "Kustomization", - "complianceState": "Compliant", "appliedBy": null, + "complianceState": "Compliant", "helmReleaseProperties": { - "lastRevisionApplied": 1, + "failureCount": null, "helmChartRef": { "name": "myname", "namespace": "mynamespace" }, - "failureCount": null, - "upgradeFailureCount": null, - "installFailureCount": null + "installFailureCount": null, + "lastRevisionApplied": 1, + "upgradeFailureCount": null }, + "kind": "Kustomization", "statusConditions": [ { + "type": "Ready", "lastTransitionTime": "2021-05-19T18:12:40Z", "message": "'Applied revision: master/0ba6f0d30760d567de0bac86c8c4eec13ce1a590'", "reason": "ReconciliationSucceeded", - "status": "True", - "type": "Ready" + "status": "True" } ] } ], - "repositoryPublicKey": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDiNkrANrhtRy+02Xc7b5bwvgOKvQMbqUQaXeB6FCDkbLaavw/zO/vIhIBEQu+vbBt6IlI/Pui0rMFr5JjA8Vwwd85oabzU07TPzbFvKSU9eCXqWRKWf0DHNQj/kxPJNtyPYFv3lGoiZZ6QzejOxlW/lPPokUePN0oI10daWwqznm2q0Cmh1EgPUYveq3J5KCWncZXCdwY36zWYulCWFaqazoaGy4kxcqlVy+mPjE/UJthaoLm3mq+23uhlmmfCc1j7W6+H6fcOwTyOtcbimxz2Ug8HlTzSTXBPtEe7qyllMyk62EPNUUq4bVoVsex9sKBK6/hW0Cn2P5i5jslUPCQF", - "sourceSyncedCommitId": "master/0ba6f0d30760d567de0bac86c8c4eec13ce1a590", - "sourceUpdatedAt": "2021-05-19T18:17:12Z", - "statusUpdatedAt": "2021-05-19T18:17:12Z", - "complianceState": "Compliant", - "provisioningState": "Succeeded", - "errorMessage": "" + "suspend": false + }, + "systemData": { + "createdAt": "2021-05-19T05:10:57.027Z", + "createdBy": "string", + "createdByType": "Application", + "lastModifiedAt": "2020-05-19T05:10:57.027Z", + "lastModifiedBy": "string", + "lastModifiedByType": "Application" } + }, + "headers": { + "Azure-AsyncOperation": "http://management.azure.com/subscriptions/subId/resourceGroups/rg1/providers/Microsoft.Kubernetes/ConnectedClusters/clusterName1/providers/Microsoft.KubernetesConfiguration/fluxConfigurations/srs-fluxconfig/operations/operationId?api-version=2025-04-01", + "Operation-Location": "/subscriptions/subId1/resourceGroups/rg1/providers/Microsoft.Kubernetes/connectedClusters/clusterName1/providers/Microsoft.KubernetesConfiguration/fluxConfigurations/ClusterMonitor/srs-fluxconfig/{operationId}", + "x-ms-async-operation-timeout": "PT48H" } } - } + }, + "operationId": "FluxConfigurations_CreateOrUpdate", + "title": "Create Flux Configuration with Git Repository Provider" } diff --git a/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/fluxConfigurations/stable/2025-04-01/examples/DeleteFluxConfiguration.json b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/fluxConfigurations/stable/2025-04-01/examples/DeleteFluxConfiguration.json index a450bba9511a..d20f81907ebb 100644 --- a/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/fluxConfigurations/stable/2025-04-01/examples/DeleteFluxConfiguration.json +++ b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/fluxConfigurations/stable/2025-04-01/examples/DeleteFluxConfiguration.json @@ -1,23 +1,25 @@ { "parameters": { - "subscriptionId": "subId1", - "resourceGroupName": "rg1", - "clusterRp": "Microsoft.Kubernetes", + "api-version": "2025-04-01", + "clusterName": "clusterName1", "clusterResourceName": "connectedClusters", + "clusterRp": "Microsoft.Kubernetes", "fluxConfigurationName": "srs-fluxconfig", - "api-version": "2025-04-01", - "clusterName": "clusterName1" + "resourceGroupName": "rg1", + "subscriptionId": "subId1" }, "responses": { + "200": {}, "202": { + "description": "Details of the Kubernetes Flux Configuration's current status.", "headers": { - "Operation-Location": "/subscriptions/subId1/resourceGroups/rg1/providers/Microsoft.Kubernetes/connectedClusters/clusterName1/providers/Microsoft.KubernetesConfiguration/fluxConfigurations/srs-fluxconfig/operations/{operationId}", "Azure-AsyncOperation": "http://management.azure.com/subscriptions/subId/resourceGroups/rg1/providers/Microsoft.Kubernetes/ConnectedClusters/clusterName1/providers/Microsoft.KubernetesConfiguration/extensions/ClusterMonitor/operations/operationId?api-version=2025-04-01", + "Operation-Location": "/subscriptions/subId1/resourceGroups/rg1/providers/Microsoft.Kubernetes/connectedClusters/clusterName1/providers/Microsoft.KubernetesConfiguration/fluxConfigurations/srs-fluxconfig/operations/{operationId}", "x-ms-async-operation-timeout": "PT1H" - }, - "description": "Details of the Kubernetes Flux Configuration's current status." + } }, - "200": {}, "204": {} - } + }, + "operationId": "FluxConfigurations_Delete", + "title": "Delete Flux Configuration" } diff --git a/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/fluxConfigurations/stable/2025-04-01/examples/GetFluxConfiguration.json b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/fluxConfigurations/stable/2025-04-01/examples/GetFluxConfiguration.json index 6562db61a025..702e88f811e8 100644 --- a/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/fluxConfigurations/stable/2025-04-01/examples/GetFluxConfiguration.json +++ b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/fluxConfigurations/stable/2025-04-01/examples/GetFluxConfiguration.json @@ -1,53 +1,39 @@ { "parameters": { - "subscriptionId": "subId1", - "resourceGroupName": "rg1", - "clusterRp": "Microsoft.Kubernetes", + "api-version": "2025-04-01", + "clusterName": "clusterName1", "clusterResourceName": "connectedClusters", + "clusterRp": "Microsoft.Kubernetes", "fluxConfigurationName": "srs-fluxconfig", - "api-version": "2025-04-01", - "clusterName": "clusterName1" + "resourceGroupName": "rg1", + "subscriptionId": "subId1" }, "responses": { "200": { - "headers": {}, "description": "Details of the Kubernetes Flux Configuration's current status.", "body": { - "id": "/subscriptions/subId1/resourceGroups/rg1/providers/Microsoft.Kubernetes/connectedClusters/clusterName1/providers/Microsoft.KubernetesConfiguration/fluxConfigurations/srs-fluxconfig", - "type": "Microsoft.KubernetesConfiguration/fluxConfigurations", "name": "srs-fluxconfig", - "systemData": { - "createdBy": "string", - "createdByType": "Application", - "createdAt": "2021-05-19T05:10:57.027Z", - "lastModifiedBy": "string", - "lastModifiedByType": "Application", - "lastModifiedAt": "2020-05-19T05:10:57.027Z" - }, + "type": "Microsoft.KubernetesConfiguration/fluxConfigurations", + "id": "/subscriptions/subId1/resourceGroups/rg1/providers/Microsoft.Kubernetes/connectedClusters/clusterName1/providers/Microsoft.KubernetesConfiguration/fluxConfigurations/srs-fluxconfig", "properties": { - "scope": "cluster", - "namespace": "srs-namespace", - "sourceKind": "GitRepository", - "suspend": false, + "complianceState": "Compliant", + "errorMessage": "", "gitRepository": { - "url": "https://github.com/Azure/arc-k8s-demo", - "timeoutInSeconds": 600, - "syncIntervalInSeconds": 600, "repositoryRef": { "branch": "master", - "tag": null, + "commit": null, "semver": null, - "commit": null - } + "tag": null + }, + "syncIntervalInSeconds": 600, + "timeoutInSeconds": 600, + "url": "https://github.com/Azure/arc-k8s-demo" }, "kustomizations": { "srs-kustomization1": { "name": "srs-kustomization1", "path": "./test/path", "dependsOn": [], - "timeoutInSeconds": 600, - "syncIntervalInSeconds": 600, - "wait": true, "postBuild": { "substitute": { "cluster_env": "prod", @@ -55,12 +41,15 @@ }, "substituteFrom": [ { - "kind": "ConfigMap", "name": "cluster-test", + "kind": "ConfigMap", "optional": true } ] - } + }, + "syncIntervalInSeconds": 600, + "timeoutInSeconds": 600, + "wait": true }, "srs-kustomization2": { "name": "srs-kustomization2", @@ -68,107 +57,120 @@ "dependsOn": [ "srs-kustomization1" ], - "timeoutInSeconds": 600, - "syncIntervalInSeconds": 600, - "retryIntervalInSeconds": 600, - "prune": false, - "wait": false, "postBuild": { "substituteFrom": [ { - "kind": "ConfigMap", "name": "cluster-values", + "kind": "ConfigMap", "optional": true }, { - "kind": "Secret", "name": "secret-name", + "kind": "Secret", "optional": false } ] - } + }, + "prune": false, + "retryIntervalInSeconds": 600, + "syncIntervalInSeconds": 600, + "timeoutInSeconds": 600, + "wait": false } }, + "namespace": "srs-namespace", + "provisioningState": "Succeeded", + "repositoryPublicKey": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDiNkrANrhtRy+02Xc7b5bwvgOKvQMbqUQaXeB6FCDkbLaavw/zO/vIhIBEQu+vbBt6IlI/Pui0rMFr5JjA8Vwwd85oabzU07TPzbFvKSU9eCXqWRKWf0DHNQj/kxPJNtyPYFv3lGoiZZ6QzejOxlW/lPPokUePN0oI10daWwqznm2q0Cmh1EgPUYveq3J5KCWncZXCdwY36zWYulCWFaqazoaGy4kxcqlVy+mPjE/UJthaoLm3mq+23uhlmmfCc1j7W6+H6fcOwTyOtcbimxz2Ug8HlTzSTXBPtEe7qyllMyk62EPNUUq4bVoVsex9sKBK6/hW0Cn2P5i5jslUPCQF", + "scope": "cluster", + "sourceKind": "GitRepository", + "sourceSyncedCommitId": "master/0ba6f0d30760d567de0bac86c8c4eec13ce1a590", + "sourceUpdatedAt": "2021-05-19T18:17:12Z", + "statusUpdatedAt": "2021-05-19T18:17:12Z", "statuses": [ { "name": "srs-fluxconfig", - "kind": "GitRepository", - "complianceState": "Compliant", "appliedBy": null, + "complianceState": "Compliant", "helmReleaseProperties": null, + "kind": "GitRepository", "statusConditions": [ { + "type": "Ready", "lastTransitionTime": "2021-05-19T18:12:40Z", "message": "'Fetched revision: master/0ba6f0d30760d567de0bac86c8c4eec13ce1a590'", "reason": "GitOperationSucceed", - "status": "True", - "type": "Ready" + "status": "True" } ] }, { "name": "srs-fluxconfig-srs-kustomization1", - "kind": "Kustomization", - "complianceState": "Compliant", "appliedBy": { "name": "my-name", "namespace": "my-namespace" }, + "complianceState": "Compliant", "helmReleaseProperties": { - "lastRevisionApplied": 1, + "failureCount": null, "helmChartRef": { "name": "myname", "namespace": "mynamespace" }, - "failureCount": null, - "upgradeFailureCount": null, - "installFailureCount": null + "installFailureCount": null, + "lastRevisionApplied": 1, + "upgradeFailureCount": null }, + "kind": "Kustomization", "statusConditions": [ { + "type": "Ready", "lastTransitionTime": "2021-05-19T18:12:40Z", "message": "'Applied revision: master/0ba6f0d30760d567de0bac86c8c4eec13ce1a590'", "reason": "ReconciliationSucceeded", - "status": "True", - "type": "Ready" + "status": "True" } ] }, { "name": "srs-fluxconfig-srs-kustomization2", - "kind": "Kustomization", - "complianceState": "Compliant", "appliedBy": null, + "complianceState": "Compliant", "helmReleaseProperties": { - "lastRevisionApplied": 1, + "failureCount": null, "helmChartRef": { "name": "myname", "namespace": "mynamespace" }, - "failureCount": null, - "upgradeFailureCount": null, - "installFailureCount": null + "installFailureCount": null, + "lastRevisionApplied": 1, + "upgradeFailureCount": null }, + "kind": "Kustomization", "statusConditions": [ { + "type": "Ready", "lastTransitionTime": "2021-05-19T18:12:40Z", "message": "'Applied revision: master/0ba6f0d30760d567de0bac86c8c4eec13ce1a590'", "reason": "ReconciliationSucceeded", - "status": "True", - "type": "Ready" + "status": "True" } ] } ], - "repositoryPublicKey": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDiNkrANrhtRy+02Xc7b5bwvgOKvQMbqUQaXeB6FCDkbLaavw/zO/vIhIBEQu+vbBt6IlI/Pui0rMFr5JjA8Vwwd85oabzU07TPzbFvKSU9eCXqWRKWf0DHNQj/kxPJNtyPYFv3lGoiZZ6QzejOxlW/lPPokUePN0oI10daWwqznm2q0Cmh1EgPUYveq3J5KCWncZXCdwY36zWYulCWFaqazoaGy4kxcqlVy+mPjE/UJthaoLm3mq+23uhlmmfCc1j7W6+H6fcOwTyOtcbimxz2Ug8HlTzSTXBPtEe7qyllMyk62EPNUUq4bVoVsex9sKBK6/hW0Cn2P5i5jslUPCQF", - "sourceSyncedCommitId": "master/0ba6f0d30760d567de0bac86c8c4eec13ce1a590", - "sourceUpdatedAt": "2021-05-19T18:17:12Z", - "statusUpdatedAt": "2021-05-19T18:17:12Z", - "complianceState": "Compliant", - "provisioningState": "Succeeded", - "errorMessage": "" + "suspend": false + }, + "systemData": { + "createdAt": "2021-05-19T05:10:57.027Z", + "createdBy": "string", + "createdByType": "Application", + "lastModifiedAt": "2020-05-19T05:10:57.027Z", + "lastModifiedBy": "string", + "lastModifiedByType": "Application" } - } + }, + "headers": {} } - } + }, + "operationId": "FluxConfigurations_Get", + "title": "Get Flux Configuration" } diff --git a/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/fluxConfigurations/stable/2025-04-01/examples/GetFluxConfigurationAsyncOperationStatus.json b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/fluxConfigurations/stable/2025-04-01/examples/GetFluxConfigurationAsyncOperationStatus.json index 3b8fe802c59d..7a4cd514c841 100644 --- a/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/fluxConfigurations/stable/2025-04-01/examples/GetFluxConfigurationAsyncOperationStatus.json +++ b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/fluxConfigurations/stable/2025-04-01/examples/GetFluxConfigurationAsyncOperationStatus.json @@ -1,24 +1,26 @@ { "parameters": { - "subscriptionId": "subId1", - "resourceGroupName": "rg1", - "clusterRp": "Microsoft.Kubernetes", - "clusterResourceName": "connectedClusters", - "fluxConfigurationName": "srs-fluxconfig", + "operationId": "99999999-9999-9999-9999-999999999999", "api-version": "2025-04-01", "clusterName": "clusterName1", - "operationId": "99999999-9999-9999-9999-999999999999" + "clusterResourceName": "connectedClusters", + "clusterRp": "Microsoft.Kubernetes", + "fluxConfigurationName": "srs-fluxconfig", + "resourceGroupName": "rg1", + "subscriptionId": "subId1" }, "responses": { "200": { - "headers": {}, "body": { - "id": "/subscriptions/subId1/resourceGroups/rg1/providers/Microsoft.Kubernetes/connectedClusters/clusterName1/providers/Microsoft.KubernetesConfiguration/fluxConfigurations/srs-fluxconfig/operations/99999999-9999-9999-9999-999999999999", "name": "99999999-9999-9999-9999-999999999999", - "status": "Succeeded", + "error": null, + "id": "/subscriptions/subId1/resourceGroups/rg1/providers/Microsoft.Kubernetes/connectedClusters/clusterName1/providers/Microsoft.KubernetesConfiguration/fluxConfigurations/srs-fluxconfig/operations/99999999-9999-9999-9999-999999999999", "properties": {}, - "error": null - } + "status": "Succeeded" + }, + "headers": {} } - } + }, + "operationId": "FluxConfigOperationStatus_Get", + "title": "FluxConfigurationAsyncOperationStatus Get" } diff --git a/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/fluxConfigurations/stable/2025-04-01/examples/ListFluxConfigurations.json b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/fluxConfigurations/stable/2025-04-01/examples/ListFluxConfigurations.json index 5cc84f40749d..db673f34a6cc 100644 --- a/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/fluxConfigurations/stable/2025-04-01/examples/ListFluxConfigurations.json +++ b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/fluxConfigurations/stable/2025-04-01/examples/ListFluxConfigurations.json @@ -1,52 +1,40 @@ { "parameters": { - "subscriptionId": "subId1", - "resourceGroupName": "rg1", - "clusterRp": "Microsoft.Kubernetes", - "clusterResourceName": "connectedClusters", "api-version": "2025-04-01", - "clusterName": "clusterName1" + "clusterName": "clusterName1", + "clusterResourceName": "connectedClusters", + "clusterRp": "Microsoft.Kubernetes", + "resourceGroupName": "rg1", + "subscriptionId": "subId1" }, "responses": { "200": { "body": { + "nextLink": null, "value": [ { - "id": "/subscriptions/subId1/resourceGroups/rg1/providers/Microsoft.Kubernetes/connectedClusters/clusterName1/providers/Microsoft.KubernetesConfiguration/fluxConfigurations/srs-fluxconfig", - "type": "Microsoft.KubernetesConfiguration/fluxConfigurations", "name": "srs-fluxconfig", - "systemData": { - "createdBy": "string", - "createdByType": "Application", - "createdAt": "2021-05-19T05:10:57.027Z", - "lastModifiedBy": "string", - "lastModifiedByType": "Application", - "lastModifiedAt": "2020-05-19T05:10:57.027Z" - }, + "type": "Microsoft.KubernetesConfiguration/fluxConfigurations", + "id": "/subscriptions/subId1/resourceGroups/rg1/providers/Microsoft.Kubernetes/connectedClusters/clusterName1/providers/Microsoft.KubernetesConfiguration/fluxConfigurations/srs-fluxconfig", "properties": { - "scope": "cluster", - "namespace": "srs-namespace", - "sourceKind": "GitRepository", - "suspend": false, + "complianceState": "Compliant", + "errorMessage": "", "gitRepository": { - "url": "https://github.com/Azure/arc-k8s-demo", - "timeoutInSeconds": 600, - "syncIntervalInSeconds": 600, "repositoryRef": { "branch": "master", - "tag": null, + "commit": null, "semver": null, - "commit": null - } + "tag": null + }, + "syncIntervalInSeconds": 600, + "timeoutInSeconds": 600, + "url": "https://github.com/Azure/arc-k8s-demo" }, "kustomizations": { "srs-kustomization1": { "name": "srs-kustomization1", "path": "./test/path", "dependsOn": [], - "timeoutInSeconds": 600, - "syncIntervalInSeconds": 600, - "wait": true, "postBuild": { "substitute": { "cluster_env": "prod", @@ -54,12 +42,15 @@ }, "substituteFrom": [ { - "kind": "ConfigMap", "name": "cluster-test", + "kind": "ConfigMap", "optional": true } ] - } + }, + "syncIntervalInSeconds": 600, + "timeoutInSeconds": 600, + "wait": true }, "srs-kustomization2": { "name": "srs-kustomization2", @@ -67,97 +58,97 @@ "dependsOn": [ "srs-kustomization1" ], - "timeoutInSeconds": 600, - "syncIntervalInSeconds": 600, - "retryIntervalInSeconds": 600, - "prune": false, - "wait": false, "postBuild": { "substituteFrom": [ { - "kind": "ConfigMap", "name": "cluster-values", + "kind": "ConfigMap", "optional": true }, { - "kind": "Secret", "name": "secret-name", + "kind": "Secret", "optional": false } ] - } + }, + "prune": false, + "retryIntervalInSeconds": 600, + "syncIntervalInSeconds": 600, + "timeoutInSeconds": 600, + "wait": false } }, + "namespace": "srs-namespace", + "provisioningState": "Succeeded", + "repositoryPublicKey": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDiNkrANrhtRy+02Xc7b5bwvgOKvQMbqUQaXeB6FCDkbLaavw/zO/vIhIBEQu+vbBt6IlI/Pui0rMFr5JjA8Vwwd85oabzU07TPzbFvKSU9eCXqWRKWf0DHNQj/kxPJNtyPYFv3lGoiZZ6QzejOxlW/lPPokUePN0oI10daWwqznm2q0Cmh1EgPUYveq3J5KCWncZXCdwY36zWYulCWFaqazoaGy4kxcqlVy+mPjE/UJthaoLm3mq+23uhlmmfCc1j7W6+H6fcOwTyOtcbimxz2Ug8HlTzSTXBPtEe7qyllMyk62EPNUUq4bVoVsex9sKBK6/hW0Cn2P5i5jslUPCQF", + "scope": "cluster", + "sourceKind": "GitRepository", + "sourceSyncedCommitId": "master/0ba6f0d30760d567de0bac86c8c4eec13ce1a590", + "sourceUpdatedAt": "2021-05-19T18:17:12Z", + "statusUpdatedAt": "2021-05-19T18:17:12Z", "statuses": [ { "name": "srs-fluxconfig", - "kind": "GitRepository", - "complianceState": "Compliant", "appliedBy": null, - "statusConditions": null, - "helmReleaseProperties": null + "complianceState": "Compliant", + "helmReleaseProperties": null, + "kind": "GitRepository", + "statusConditions": null }, { "name": "srs-fluxconfig-srs-kustomization1", - "kind": "Kustomization", - "complianceState": "Compliant", "appliedBy": null, - "statusConditions": null, - "helmReleaseProperties": null + "complianceState": "Compliant", + "helmReleaseProperties": null, + "kind": "Kustomization", + "statusConditions": null }, { "name": "srs-fluxconfig-srs-kustomization2", - "kind": "Kustomization", - "complianceState": "Compliant", "appliedBy": null, - "statusConditions": null, - "helmReleaseProperties": null + "complianceState": "Compliant", + "helmReleaseProperties": null, + "kind": "Kustomization", + "statusConditions": null } ], - "repositoryPublicKey": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDiNkrANrhtRy+02Xc7b5bwvgOKvQMbqUQaXeB6FCDkbLaavw/zO/vIhIBEQu+vbBt6IlI/Pui0rMFr5JjA8Vwwd85oabzU07TPzbFvKSU9eCXqWRKWf0DHNQj/kxPJNtyPYFv3lGoiZZ6QzejOxlW/lPPokUePN0oI10daWwqznm2q0Cmh1EgPUYveq3J5KCWncZXCdwY36zWYulCWFaqazoaGy4kxcqlVy+mPjE/UJthaoLm3mq+23uhlmmfCc1j7W6+H6fcOwTyOtcbimxz2Ug8HlTzSTXBPtEe7qyllMyk62EPNUUq4bVoVsex9sKBK6/hW0Cn2P5i5jslUPCQF", - "sourceSyncedCommitId": "master/0ba6f0d30760d567de0bac86c8c4eec13ce1a590", - "sourceUpdatedAt": "2021-05-19T18:17:12Z", - "statusUpdatedAt": "2021-05-19T18:17:12Z", - "complianceState": "Compliant", - "provisioningState": "Succeeded", - "errorMessage": "" - } - }, - { - "id": "/subscriptions/subId1/resourceGroups/rg1/providers/Microsoft.Kubernetes/connectedClusters/clusterName1/providers/Microsoft.KubernetesConfiguration/fluxConfigurations/srs-fluxconfig", - "type": "Microsoft.KubernetesConfiguration/fluxConfigurations", - "name": "srs-fluxconfig", + "suspend": false + }, "systemData": { + "createdAt": "2021-05-19T05:10:57.027Z", "createdBy": "string", "createdByType": "Application", - "createdAt": "2021-05-19T05:10:57.027Z", + "lastModifiedAt": "2020-05-19T05:10:57.027Z", "lastModifiedBy": "string", - "lastModifiedByType": "Application", - "lastModifiedAt": "2020-05-19T05:10:57.027Z" - }, + "lastModifiedByType": "Application" + } + }, + { + "name": "srs-fluxconfig", + "type": "Microsoft.KubernetesConfiguration/fluxConfigurations", + "id": "/subscriptions/subId1/resourceGroups/rg1/providers/Microsoft.Kubernetes/connectedClusters/clusterName1/providers/Microsoft.KubernetesConfiguration/fluxConfigurations/srs-fluxconfig", "properties": { - "scope": "cluster", - "namespace": "srs-namespace", - "sourceKind": "GitRepository", - "suspend": false, + "complianceState": "Compliant", + "errorMessage": "", "gitRepository": { - "url": "https://github.com/Azure/arc-k8s-demo", - "timeoutInSeconds": 600, - "syncIntervalInSeconds": 600, "repositoryRef": { "branch": "master", - "tag": null, + "commit": null, "semver": null, - "commit": null - } + "tag": null + }, + "syncIntervalInSeconds": 600, + "timeoutInSeconds": 600, + "url": "https://github.com/Azure/arc-k8s-demo" }, "kustomizations": { "srs-kustomization1": { "name": "srs-kustomization1", "path": "./test/path", "dependsOn": [], - "timeoutInSeconds": 600, - "syncIntervalInSeconds": 600 + "syncIntervalInSeconds": 600, + "timeoutInSeconds": 600 }, "srs-kustomization2": { "name": "srs-kustomization2", @@ -165,50 +156,61 @@ "dependsOn": [ "srs-kustomization1" ], - "timeoutInSeconds": 600, - "syncIntervalInSeconds": 600, + "prune": false, "retryIntervalInSeconds": 600, - "prune": false + "syncIntervalInSeconds": 600, + "timeoutInSeconds": 600 } }, + "namespace": "srs-namespace", + "provisioningState": "Succeeded", + "repositoryPublicKey": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDiNkrANrhtRy+02Xc7b5bwvgOKvQMbqUQaXeB6FCDkbLaavw/zO/vIhIBEQu+vbBt6IlI/Pui0rMFr5JjA8Vwwd85oabzU07TPzbFvKSU9eCXqWRKWf0DHNQj/kxPJNtyPYFv3lGoiZZ6QzejOxlW/lPPokUePN0oI10daWwqznm2q0Cmh1EgPUYveq3J5KCWncZXCdwY36zWYulCWFaqazoaGy4kxcqlVy+mPjE/UJthaoLm3mq+23uhlmmfCc1j7W6+H6fcOwTyOtcbimxz2Ug8HlTzSTXBPtEe7qyllMyk62EPNUUq4bVoVsex9sKBK6/hW0Cn2P5i5jslUPCQF", + "scope": "cluster", + "sourceKind": "GitRepository", + "sourceSyncedCommitId": "master/0ba6f0d30760d567de0bac86c8c4eec13ce1a590", + "sourceUpdatedAt": "2021-05-19T18:17:12Z", + "statusUpdatedAt": "2021-05-19T18:17:12Z", "statuses": [ { "name": "srs-fluxconfig", - "kind": "GitRepository", - "complianceState": "Compliant", "appliedBy": null, - "statusConditions": null, - "helmReleaseProperties": null + "complianceState": "Compliant", + "helmReleaseProperties": null, + "kind": "GitRepository", + "statusConditions": null }, { "name": "srs-fluxconfig-srs-kustomization1", - "kind": "Kustomization", - "complianceState": "Compliant", "appliedBy": null, - "statusConditions": null, - "helmReleaseProperties": null + "complianceState": "Compliant", + "helmReleaseProperties": null, + "kind": "Kustomization", + "statusConditions": null }, { "name": "srs-fluxconfig-srs-kustomization2", - "kind": "Kustomization", - "complianceState": "Compliant", "appliedBy": null, - "statusConditions": null, - "helmReleaseProperties": null + "complianceState": "Compliant", + "helmReleaseProperties": null, + "kind": "Kustomization", + "statusConditions": null } ], - "repositoryPublicKey": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDiNkrANrhtRy+02Xc7b5bwvgOKvQMbqUQaXeB6FCDkbLaavw/zO/vIhIBEQu+vbBt6IlI/Pui0rMFr5JjA8Vwwd85oabzU07TPzbFvKSU9eCXqWRKWf0DHNQj/kxPJNtyPYFv3lGoiZZ6QzejOxlW/lPPokUePN0oI10daWwqznm2q0Cmh1EgPUYveq3J5KCWncZXCdwY36zWYulCWFaqazoaGy4kxcqlVy+mPjE/UJthaoLm3mq+23uhlmmfCc1j7W6+H6fcOwTyOtcbimxz2Ug8HlTzSTXBPtEe7qyllMyk62EPNUUq4bVoVsex9sKBK6/hW0Cn2P5i5jslUPCQF", - "sourceSyncedCommitId": "master/0ba6f0d30760d567de0bac86c8c4eec13ce1a590", - "sourceUpdatedAt": "2021-05-19T18:17:12Z", - "statusUpdatedAt": "2021-05-19T18:17:12Z", - "complianceState": "Compliant", - "provisioningState": "Succeeded", - "errorMessage": "" + "suspend": false + }, + "systemData": { + "createdAt": "2021-05-19T05:10:57.027Z", + "createdBy": "string", + "createdByType": "Application", + "lastModifiedAt": "2020-05-19T05:10:57.027Z", + "lastModifiedBy": "string", + "lastModifiedByType": "Application" } } - ], - "nextLink": null + ] } } - } + }, + "operationId": "FluxConfigurations_List", + "title": "List Flux Configuration" } diff --git a/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/fluxConfigurations/stable/2025-04-01/examples/PatchFluxConfiguration.json b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/fluxConfigurations/stable/2025-04-01/examples/PatchFluxConfiguration.json index 702be7224bbd..1508db6fe9d9 100644 --- a/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/fluxConfigurations/stable/2025-04-01/examples/PatchFluxConfiguration.json +++ b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/fluxConfigurations/stable/2025-04-01/examples/PatchFluxConfiguration.json @@ -1,15 +1,12 @@ { "parameters": { - "subscriptionId": "subId1", - "resourceGroupName": "rg1", - "clusterRp": "Microsoft.Kubernetes", - "clusterResourceName": "connectedClusters", - "fluxConfigurationName": "srs-fluxconfig", "api-version": "2025-04-01", "clusterName": "clusterName1", + "clusterResourceName": "connectedClusters", + "clusterRp": "Microsoft.Kubernetes", + "fluxConfigurationName": "srs-fluxconfig", "fluxConfigurationPatch": { "properties": { - "suspend": true, "gitRepository": { "url": "https://github.com/jonathan-innis/flux2-kustomize-helm-example.git" }, @@ -17,248 +14,253 @@ "srs-kustomization1": null, "srs-kustomization2": { "path": "./test/alt-path", - "syncIntervalInSeconds": 300, - "dependsOn": null + "dependsOn": null, + "syncIntervalInSeconds": 300 }, "srs-kustomization3": { "path": "./test/another-path", "syncIntervalInSeconds": 300 } - } + }, + "suspend": true } - } + }, + "resourceGroupName": "rg1", + "subscriptionId": "subId1" }, "responses": { "200": { "description": "FluxConfiguration properties from not updating any property values.", "body": { "properties": { - "scope": "cluster", - "namespace": "srs-namespace", - "sourceKind": "GitRepository", - "suspend": false, + "complianceState": "Compliant", + "errorMessage": "", "gitRepository": { - "url": "https://github.com/jonathan-innis/flux2-kustomize-helm-example.git", - "timeoutInSeconds": 600, - "syncIntervalInSeconds": 600, "repositoryRef": { "branch": "master", - "tag": null, + "commit": null, "semver": null, - "commit": null - } + "tag": null + }, + "syncIntervalInSeconds": 600, + "timeoutInSeconds": 600, + "url": "https://github.com/jonathan-innis/flux2-kustomize-helm-example.git" }, "kustomizations": { "srs-kustomization2": { "path": "./test/alt-path", - "timeoutInSeconds": 600, - "syncIntervalInSeconds": 300, + "prune": false, "retryIntervalInSeconds": 600, - "prune": false + "syncIntervalInSeconds": 300, + "timeoutInSeconds": 600 }, "srs-kustomization3": { "path": "./test/another-path", - "timeoutInSeconds": 600, - "syncIntervalInSeconds": 300, + "prune": false, "retryIntervalInSeconds": null, - "prune": false + "syncIntervalInSeconds": 300, + "timeoutInSeconds": 600 } }, + "namespace": "srs-namespace", + "provisioningState": "Succeeded", + "repositoryPublicKey": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDiNkrANrhtRy+02Xc7b5bwvgOKvQMbqUQaXeB6FCDkbLaavw/zO/vIhIBEQu+vbBt6IlI/Pui0rMFr5JjA8Vwwd85oabzU07TPzbFvKSU9eCXqWRKWf0DHNQj/kxPJNtyPYFv3lGoiZZ6QzejOxlW/lPPokUePN0oI10daWwqznm2q0Cmh1EgPUYveq3J5KCWncZXCdwY36zWYulCWFaqazoaGy4kxcqlVy+mPjE/UJthaoLm3mq+23uhlmmfCc1j7W6+H6fcOwTyOtcbimxz2Ug8HlTzSTXBPtEe7qyllMyk62EPNUUq4bVoVsex9sKBK6/hW0Cn2P5i5jslUPCQF", + "scope": "cluster", + "sourceKind": "GitRepository", + "sourceSyncedCommitId": "master/0ba6f0d30760d567de0bac86c8c4eec13ce1a590", + "sourceUpdatedAt": "2021-05-19T18:17:12Z", + "statusUpdatedAt": "2021-05-19T18:17:12Z", "statuses": [ { "name": "srs-fluxconfig", - "kind": "GitRepository", - "complianceState": "Compliant", "appliedBy": null, + "complianceState": "Compliant", "helmReleaseProperties": null, + "kind": "GitRepository", "statusConditions": [ { + "type": "Ready", "lastTransitionTime": "2021-05-19T18:12:40Z", "message": "'Fetched revision: master/0ba6f0d30760d567de0bac86c8c4eec13ce1a590'", "reason": "GitOperationSucceed", - "status": "True", - "type": "Ready" + "status": "True" } ] }, { "name": "srs-fluxconfig-srs-kustomization1", - "kind": "Kustomization", - "complianceState": "Compliant", "appliedBy": null, + "complianceState": "Compliant", "helmReleaseProperties": { - "lastRevisionApplied": 1, + "failureCount": null, "helmChartRef": { "name": "myname", "namespace": "mynamespace" }, - "failureCount": null, - "upgradeFailureCount": null, - "installFailureCount": null + "installFailureCount": null, + "lastRevisionApplied": 1, + "upgradeFailureCount": null }, + "kind": "Kustomization", "statusConditions": [ { + "type": "Ready", "lastTransitionTime": "2021-05-19T18:12:40Z", "message": "'Applied revision: master/0ba6f0d30760d567de0bac86c8c4eec13ce1a590'", "reason": "ReconciliationSucceeded", - "status": "True", - "type": "Ready" + "status": "True" } ] }, { "name": "srs-fluxconfig-srs-kustomization2", - "kind": "Kustomization", - "complianceState": "Compliant", "appliedBy": null, + "complianceState": "Compliant", "helmReleaseProperties": { - "lastRevisionApplied": 1, + "failureCount": null, "helmChartRef": { "name": "myname", "namespace": "mynamespace" }, - "failureCount": null, - "upgradeFailureCount": null, - "installFailureCount": null + "installFailureCount": null, + "lastRevisionApplied": 1, + "upgradeFailureCount": null }, + "kind": "Kustomization", "statusConditions": [ { + "type": "Ready", "lastTransitionTime": "2021-05-19T18:12:40Z", "message": "'Applied revision: master/0ba6f0d30760d567de0bac86c8c4eec13ce1a590'", "reason": "ReconciliationSucceeded", - "status": "True", - "type": "Ready" + "status": "True" } ] } ], - "repositoryPublicKey": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDiNkrANrhtRy+02Xc7b5bwvgOKvQMbqUQaXeB6FCDkbLaavw/zO/vIhIBEQu+vbBt6IlI/Pui0rMFr5JjA8Vwwd85oabzU07TPzbFvKSU9eCXqWRKWf0DHNQj/kxPJNtyPYFv3lGoiZZ6QzejOxlW/lPPokUePN0oI10daWwqznm2q0Cmh1EgPUYveq3J5KCWncZXCdwY36zWYulCWFaqazoaGy4kxcqlVy+mPjE/UJthaoLm3mq+23uhlmmfCc1j7W6+H6fcOwTyOtcbimxz2Ug8HlTzSTXBPtEe7qyllMyk62EPNUUq4bVoVsex9sKBK6/hW0Cn2P5i5jslUPCQF", - "sourceSyncedCommitId": "master/0ba6f0d30760d567de0bac86c8c4eec13ce1a590", - "sourceUpdatedAt": "2021-05-19T18:17:12Z", - "statusUpdatedAt": "2021-05-19T18:17:12Z", - "complianceState": "Compliant", - "provisioningState": "Succeeded", - "errorMessage": "" + "suspend": false } } }, "202": { - "headers": { - "Operation-Location": "/subscriptions/subId1/resourceGroups/rg1/providers/Microsoft.Kubernetes/connectedClusters/clusterName1/providers/Microsoft.KubernetesConfiguration/fluxConfigurations/srs-fluxconfig/operations/operationId", - "x-ms-async-operation-timeout": "PT48H", - "Azure-AsyncOperation": "http://management.azure.com/subscriptions/subId/resourceGroups/rg1/providers/Microsoft.Kubernetes/ConnectedClusters/clusterName1/providers/Microsoft.KubernetesConfiguration/fluxConfigurations/srs-fluxconfig/operations/operationId?api-version=2025-04-01" - }, "description": "FluxConfiguration properties and details of the Patch operation, including AsyncOperation url.", "body": { "properties": { - "scope": "cluster", - "namespace": "srs-namespace", - "sourceKind": "GitRepository", - "suspend": false, + "complianceState": "Compliant", + "errorMessage": "", "gitRepository": { - "url": "https://github.com/jonathan-innis/flux2-kustomize-helm-example.git", - "timeoutInSeconds": 600, - "syncIntervalInSeconds": 600, "repositoryRef": { "branch": "master", - "tag": null, + "commit": null, "semver": null, - "commit": null - } + "tag": null + }, + "syncIntervalInSeconds": 600, + "timeoutInSeconds": 600, + "url": "https://github.com/jonathan-innis/flux2-kustomize-helm-example.git" }, "kustomizations": { "srs-kustomization2": { "path": "./test/alt-path", - "timeoutInSeconds": 600, - "syncIntervalInSeconds": 300, + "prune": false, "retryIntervalInSeconds": 600, - "prune": false + "syncIntervalInSeconds": 300, + "timeoutInSeconds": 600 }, "srs-kustomization3": { "path": "./test/another-path", - "timeoutInSeconds": 600, - "syncIntervalInSeconds": 300, + "prune": false, "retryIntervalInSeconds": null, - "prune": false + "syncIntervalInSeconds": 300, + "timeoutInSeconds": 600 } }, + "namespace": "srs-namespace", + "provisioningState": "Succeeded", + "repositoryPublicKey": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDiNkrANrhtRy+02Xc7b5bwvgOKvQMbqUQaXeB6FCDkbLaavw/zO/vIhIBEQu+vbBt6IlI/Pui0rMFr5JjA8Vwwd85oabzU07TPzbFvKSU9eCXqWRKWf0DHNQj/kxPJNtyPYFv3lGoiZZ6QzejOxlW/lPPokUePN0oI10daWwqznm2q0Cmh1EgPUYveq3J5KCWncZXCdwY36zWYulCWFaqazoaGy4kxcqlVy+mPjE/UJthaoLm3mq+23uhlmmfCc1j7W6+H6fcOwTyOtcbimxz2Ug8HlTzSTXBPtEe7qyllMyk62EPNUUq4bVoVsex9sKBK6/hW0Cn2P5i5jslUPCQF", + "scope": "cluster", + "sourceKind": "GitRepository", + "sourceSyncedCommitId": "master/0ba6f0d30760d567de0bac86c8c4eec13ce1a590", + "sourceUpdatedAt": "2021-05-19T18:17:12Z", + "statusUpdatedAt": "2021-05-19T18:17:12Z", "statuses": [ { "name": "srs-fluxconfig", - "kind": "GitRepository", - "complianceState": "Compliant", "appliedBy": null, + "complianceState": "Compliant", "helmReleaseProperties": null, + "kind": "GitRepository", "statusConditions": [ { + "type": "Ready", "lastTransitionTime": "2021-05-19T18:12:40Z", "message": "'Fetched revision: master/0ba6f0d30760d567de0bac86c8c4eec13ce1a590'", "reason": "GitOperationSucceed", - "status": "True", - "type": "Ready" + "status": "True" } ] }, { "name": "srs-fluxconfig-srs-kustomization1", - "kind": "Kustomization", - "complianceState": "Compliant", "appliedBy": null, + "complianceState": "Compliant", "helmReleaseProperties": { - "lastRevisionApplied": 1, + "failureCount": null, "helmChartRef": { "name": "myname", "namespace": "mynamespace" }, - "failureCount": null, - "upgradeFailureCount": null, - "installFailureCount": null + "installFailureCount": null, + "lastRevisionApplied": 1, + "upgradeFailureCount": null }, + "kind": "Kustomization", "statusConditions": [ { + "type": "Ready", "lastTransitionTime": "2021-05-19T18:12:40Z", "message": "'Applied revision: master/0ba6f0d30760d567de0bac86c8c4eec13ce1a590'", "reason": "ReconciliationSucceeded", - "status": "True", - "type": "Ready" + "status": "True" } ] }, { "name": "srs-fluxconfig-srs-kustomization2", - "kind": "Kustomization", - "complianceState": "Compliant", "appliedBy": null, + "complianceState": "Compliant", "helmReleaseProperties": { - "lastRevisionApplied": 1, + "failureCount": null, "helmChartRef": { "name": "myname", "namespace": "mynamespace" }, - "failureCount": null, - "upgradeFailureCount": null, - "installFailureCount": null + "installFailureCount": null, + "lastRevisionApplied": 1, + "upgradeFailureCount": null }, + "kind": "Kustomization", "statusConditions": [ { + "type": "Ready", "lastTransitionTime": "2021-05-19T18:12:40Z", "message": "'Applied revision: master/0ba6f0d30760d567de0bac86c8c4eec13ce1a590'", "reason": "ReconciliationSucceeded", - "status": "True", - "type": "Ready" + "status": "True" } ] } ], - "repositoryPublicKey": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDiNkrANrhtRy+02Xc7b5bwvgOKvQMbqUQaXeB6FCDkbLaavw/zO/vIhIBEQu+vbBt6IlI/Pui0rMFr5JjA8Vwwd85oabzU07TPzbFvKSU9eCXqWRKWf0DHNQj/kxPJNtyPYFv3lGoiZZ6QzejOxlW/lPPokUePN0oI10daWwqznm2q0Cmh1EgPUYveq3J5KCWncZXCdwY36zWYulCWFaqazoaGy4kxcqlVy+mPjE/UJthaoLm3mq+23uhlmmfCc1j7W6+H6fcOwTyOtcbimxz2Ug8HlTzSTXBPtEe7qyllMyk62EPNUUq4bVoVsex9sKBK6/hW0Cn2P5i5jslUPCQF", - "sourceSyncedCommitId": "master/0ba6f0d30760d567de0bac86c8c4eec13ce1a590", - "sourceUpdatedAt": "2021-05-19T18:17:12Z", - "statusUpdatedAt": "2021-05-19T18:17:12Z", - "complianceState": "Compliant", - "provisioningState": "Succeeded", - "errorMessage": "" + "suspend": false } + }, + "headers": { + "Azure-AsyncOperation": "http://management.azure.com/subscriptions/subId/resourceGroups/rg1/providers/Microsoft.Kubernetes/ConnectedClusters/clusterName1/providers/Microsoft.KubernetesConfiguration/fluxConfigurations/srs-fluxconfig/operations/operationId?api-version=2025-04-01", + "Operation-Location": "/subscriptions/subId1/resourceGroups/rg1/providers/Microsoft.Kubernetes/connectedClusters/clusterName1/providers/Microsoft.KubernetesConfiguration/fluxConfigurations/srs-fluxconfig/operations/operationId", + "x-ms-async-operation-timeout": "PT48H" } } - } + }, + "operationId": "FluxConfigurations_Update", + "title": "Patch Flux Configuration" } diff --git a/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/fluxConfigurations/stable/2025-04-01/fluxconfiguration.json b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/fluxConfigurations/stable/2025-04-01/fluxconfiguration.json index 2b8550207144..6828acf3a513 100644 --- a/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/fluxConfigurations/stable/2025-04-01/fluxconfiguration.json +++ b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/fluxConfigurations/stable/2025-04-01/fluxconfiguration.json @@ -1,18 +1,23 @@ { "swagger": "2.0", "info": { - "version": "2025-04-01", "title": "FluxConfigurationClient", - "description": "Use these APIs to create Flux Configuration resources through ARM, for Kubernetes Clusters." + "version": "2025-04-01", + "description": "Use these APIs to create Flux Configuration resources through ARM, for Kubernetes Clusters.", + "x-typespec-generated": [ + { + "emitter": "@azure-tools/typespec-autorest" + } + ] }, - "host": "management.azure.com", "schemes": [ "https" ], - "consumes": [ + "host": "management.azure.com", + "produces": [ "application/json" ], - "produces": [ + "consumes": [ "application/json" ], "security": [ @@ -25,1880 +30,2275 @@ "securityDefinitions": { "azure_auth": { "type": "oauth2", - "authorizationUrl": "https://login.microsoftonline.com/common/oauth2/authorize", + "description": "Azure Active Directory OAuth2 Flow.", "flow": "implicit", - "description": "Azure Active Directory OAuth2 Flow", + "authorizationUrl": "https://login.microsoftonline.com/common/oauth2/authorize", "scopes": { "user_impersonation": "impersonate your user account" } } }, + "tags": [ + { + "name": "FluxConfiguration" + }, + { + "name": "Flux" + }, + { + "name": "FluxConfiguration Operation Status" + } + ], "paths": { - "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{clusterRp}/{clusterResourceName}/{clusterName}/providers/Microsoft.KubernetesConfiguration/fluxConfigurations/{fluxConfigurationName}": { + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{clusterRp}/{clusterResourceName}/{clusterName}/providers/Microsoft.KubernetesConfiguration/fluxConfigurations": { "get": { + "operationId": "FluxConfigurations_List", "tags": [ "FluxConfiguration", "Flux" ], - "description": "Gets details of the Flux Configuration.", - "operationId": "FluxConfigurations_Get", + "description": "List all Flux Configurations.", + "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", + "pattern": "^[a-zA-Z]*$" + }, + { + "name": "clusterName", + "in": "path", + "description": "The name of the kubernetes cluster.", + "required": true, + "type": "string", + "pattern": "^.*" + } + ], + "responses": { + "200": { + "description": "Azure operation completed successfully.", + "schema": { + "$ref": "#/definitions/FluxConfigurationsList" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "../../../../../../common-types/resource-management/v3/types.json#/definitions/ErrorResponse" + } + } + }, "x-ms-examples": { - "Get Flux Configuration": { - "$ref": "./examples/GetFluxConfiguration.json" + "List Flux Configuration": { + "$ref": "./examples/ListFluxConfigurations.json" } }, + "x-ms-pageable": { + "nextLinkName": "nextLink" + } + } + }, + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{clusterRp}/{clusterResourceName}/{clusterName}/providers/Microsoft.KubernetesConfiguration/fluxConfigurations/{fluxConfigurationName}": { + "get": { + "operationId": "FluxConfigurations_Get", + "tags": [ + "FluxConfiguration", + "Flux" + ], + "description": "Gets details of the Flux Configuration.", "parameters": [ { - "$ref": "../../../../../../common-types/resource-management/v2/types.json#/parameters/SubscriptionIdParameter" + "$ref": "../../../../../../common-types/resource-management/v3/types.json#/parameters/ApiVersionParameter" }, { - "$ref": "../../../../../../common-types/resource-management/v2/types.json#/parameters/ResourceGroupNameParameter" + "$ref": "../../../../../../common-types/resource-management/v3/types.json#/parameters/SubscriptionIdParameter" }, { - "$ref": "../../../common/2023-05-01-preview/parameters.json#/parameters/ClusterRpParameter" + "$ref": "../../../../../../common-types/resource-management/v3/types.json#/parameters/ResourceGroupNameParameter" }, { - "$ref": "../../../common/2023-05-01-preview/parameters.json#/parameters/ClusterResourceNameParameter" + "name": "clusterRp", + "in": "path", + "description": "The Kubernetes cluster RP - i.e. Microsoft.ContainerService, Microsoft.Kubernetes, Microsoft.HybridContainerService.", + "required": true, + "type": "string" }, { - "$ref": "../../../common/2023-05-01-preview/parameters.json#/parameters/ClusterNameParameter" + "name": "clusterResourceName", + "in": "path", + "description": "The Kubernetes cluster resource name - i.e. managedClusters, connectedClusters, provisionedClusters, appliances.", + "required": true, + "type": "string", + "pattern": "^[a-zA-Z]*$" }, { - "$ref": "#/parameters/FluxConfigurationNameParameter" + "name": "clusterName", + "in": "path", + "description": "The name of the kubernetes cluster.", + "required": true, + "type": "string", + "pattern": "^.*" }, { - "$ref": "../../../../../../common-types/resource-management/v2/types.json#/parameters/ApiVersionParameter" + "name": "fluxConfigurationName", + "in": "path", + "description": "Name of the Flux Configuration.", + "required": true, + "type": "string" } ], "responses": { "200": { - "description": "OK", + "description": "Azure operation completed successfully.", "schema": { "$ref": "#/definitions/FluxConfiguration" } }, "default": { - "description": "Error response describing why the operation failed.", + "description": "An unexpected error response.", "schema": { - "$ref": "../../../../../../common-types/resource-management/v2/types.json#/definitions/ErrorResponse" + "$ref": "../../../../../../common-types/resource-management/v3/types.json#/definitions/ErrorResponse" } } + }, + "x-ms-examples": { + "Get Flux Configuration": { + "$ref": "./examples/GetFluxConfiguration.json" + } } }, "put": { + "operationId": "FluxConfigurations_CreateOrUpdate", "tags": [ "FluxConfiguration", "Flux" ], "description": "Create a new Kubernetes Flux Configuration.", - "operationId": "FluxConfigurations_CreateOrUpdate", - "x-ms-examples": { - "Create Flux Configuration": { - "$ref": "./examples/CreateFluxConfiguration.json" - }, - "Create Flux Configuration with Bucket Source Kind": { - "$ref": "./examples/CreateFluxConfigurationWithBucket.json" - }, - "Create Flux Configuration with OCIRepository Source Kind": { - "$ref": "./examples/CreateFluxConfigurationWithOCIRepository.json" - }, - "Create Flux Configuration with Git Repository Provider": { - "$ref": "./examples/CreateFluxConfigurationWithProvider.json" - } - }, "parameters": [ { - "$ref": "../../../../../../common-types/resource-management/v2/types.json#/parameters/SubscriptionIdParameter" + "$ref": "../../../../../../common-types/resource-management/v3/types.json#/parameters/ApiVersionParameter" }, { - "$ref": "../../../../../../common-types/resource-management/v2/types.json#/parameters/ResourceGroupNameParameter" + "$ref": "../../../../../../common-types/resource-management/v3/types.json#/parameters/SubscriptionIdParameter" }, { - "$ref": "../../../common/2023-05-01-preview/parameters.json#/parameters/ClusterRpParameter" + "$ref": "../../../../../../common-types/resource-management/v3/types.json#/parameters/ResourceGroupNameParameter" }, { - "$ref": "../../../common/2023-05-01-preview/parameters.json#/parameters/ClusterResourceNameParameter" + "name": "clusterRp", + "in": "path", + "description": "The Kubernetes cluster RP - i.e. Microsoft.ContainerService, Microsoft.Kubernetes, Microsoft.HybridContainerService.", + "required": true, + "type": "string" }, { - "$ref": "../../../common/2023-05-01-preview/parameters.json#/parameters/ClusterNameParameter" + "name": "clusterResourceName", + "in": "path", + "description": "The Kubernetes cluster resource name - i.e. managedClusters, connectedClusters, provisionedClusters, appliances.", + "required": true, + "type": "string", + "pattern": "^[a-zA-Z]*$" }, { - "$ref": "#/parameters/FluxConfigurationNameParameter" + "name": "clusterName", + "in": "path", + "description": "The name of the kubernetes cluster.", + "required": true, + "type": "string", + "pattern": "^.*" }, { - "$ref": "../../../../../../common-types/resource-management/v2/types.json#/parameters/ApiVersionParameter" + "name": "fluxConfigurationName", + "in": "path", + "description": "Name of the Flux Configuration.", + "required": true, + "type": "string" }, { "name": "fluxConfiguration", "in": "body", + "description": "Properties necessary to Create a FluxConfiguration.", "required": true, "schema": { "$ref": "#/definitions/FluxConfiguration" - }, - "description": "Properties necessary to Create a FluxConfiguration." + } } ], "responses": { "200": { - "description": "Request received successfully for an existing resource.", + "description": "Resource 'FluxConfiguration' update operation succeeded", "schema": { "$ref": "#/definitions/FluxConfiguration" } }, "201": { - "description": "Request received successfully.", + "description": "Resource 'FluxConfiguration' create operation succeeded", "schema": { "$ref": "#/definitions/FluxConfiguration" + }, + "headers": { + "Azure-AsyncOperation": { + "type": "string", + "description": "A link to the status monitor" + }, + "Retry-After": { + "type": "integer", + "format": "int32", + "description": "The Retry-After header can indicate how long the client should wait before polling the operation status." + } } }, "default": { - "description": "Error response describing why the operation failed.", + "description": "An unexpected error response.", "schema": { - "$ref": "../../../../../../common-types/resource-management/v2/types.json#/definitions/ErrorResponse" + "$ref": "../../../../../../common-types/resource-management/v3/types.json#/definitions/ErrorResponse" } } }, - "x-ms-long-running-operation": true, + "x-ms-examples": { + "Create Flux Configuration": { + "$ref": "./examples/CreateFluxConfiguration.json" + }, + "Create Flux Configuration with Bucket Source Kind": { + "$ref": "./examples/CreateFluxConfigurationWithBucket.json" + }, + "Create Flux Configuration with Git Repository Provider": { + "$ref": "./examples/CreateFluxConfigurationWithProvider.json" + }, + "Create Flux Configuration with OCIRepository Source Kind": { + "$ref": "./examples/CreateFluxConfigurationWithOCIRepository.json" + } + }, "x-ms-long-running-operation-options": { - "final-state-via": "azure-async-operation" - } + "final-state-via": "azure-async-operation", + "final-state-schema": "#/definitions/FluxConfiguration" + }, + "x-ms-long-running-operation": true }, "patch": { + "operationId": "FluxConfigurations_Update", "tags": [ "FluxConfiguration", "Flux" ], "description": "Update an existing Kubernetes Flux Configuration.", - "operationId": "FluxConfigurations_Update", - "x-ms-examples": { - "Patch Flux Configuration": { - "$ref": "./examples/PatchFluxConfiguration.json" - } - }, "parameters": [ { - "$ref": "../../../../../../common-types/resource-management/v2/types.json#/parameters/SubscriptionIdParameter" + "$ref": "../../../../../../common-types/resource-management/v3/types.json#/parameters/ApiVersionParameter" }, { - "$ref": "../../../../../../common-types/resource-management/v2/types.json#/parameters/ResourceGroupNameParameter" + "$ref": "../../../../../../common-types/resource-management/v3/types.json#/parameters/SubscriptionIdParameter" }, { - "$ref": "../../../common/2023-05-01-preview/parameters.json#/parameters/ClusterRpParameter" + "$ref": "../../../../../../common-types/resource-management/v3/types.json#/parameters/ResourceGroupNameParameter" }, { - "$ref": "../../../common/2023-05-01-preview/parameters.json#/parameters/ClusterResourceNameParameter" + "name": "clusterRp", + "in": "path", + "description": "The Kubernetes cluster RP - i.e. Microsoft.ContainerService, Microsoft.Kubernetes, Microsoft.HybridContainerService.", + "required": true, + "type": "string" }, { - "$ref": "../../../common/2023-05-01-preview/parameters.json#/parameters/ClusterNameParameter" + "name": "clusterResourceName", + "in": "path", + "description": "The Kubernetes cluster resource name - i.e. managedClusters, connectedClusters, provisionedClusters, appliances.", + "required": true, + "type": "string", + "pattern": "^[a-zA-Z]*$" }, { - "$ref": "#/parameters/FluxConfigurationNameParameter" + "name": "clusterName", + "in": "path", + "description": "The name of the kubernetes cluster.", + "required": true, + "type": "string", + "pattern": "^.*" }, { - "$ref": "../../../../../../common-types/resource-management/v2/types.json#/parameters/ApiVersionParameter" + "name": "fluxConfigurationName", + "in": "path", + "description": "Name of the Flux Configuration.", + "required": true, + "type": "string" }, { "name": "fluxConfigurationPatch", "in": "body", + "description": "Properties to Patch in an existing Flux Configuration.", "required": true, "schema": { "$ref": "#/definitions/FluxConfigurationPatch" - }, - "description": "Properties to Patch in an existing Flux Configuration." + } } ], "responses": { - "202": { - "description": "Request received successfully, and the resource will be updated asynchronously.", + "200": { + "description": "Azure operation completed successfully.", "schema": { "$ref": "#/definitions/FluxConfiguration" } }, - "200": { - "description": "No update is done to fluxConfiguration so return OK.", + "202": { + "description": "The request has been accepted for processing, but processing has not yet completed.", "schema": { "$ref": "#/definitions/FluxConfiguration" + }, + "headers": { + "Azure-AsyncOperation": { + "type": "string", + "description": "A link to the status monitor" + }, + "Retry-After": { + "type": "integer", + "format": "int32", + "description": "The Retry-After header can indicate how long the client should wait before polling the operation status." + } } }, "default": { - "description": "Error response describing why the operation failed.", + "description": "An unexpected error response.", "schema": { - "$ref": "../../../../../../common-types/resource-management/v2/types.json#/definitions/ErrorResponse" + "$ref": "../../../../../../common-types/resource-management/v3/types.json#/definitions/ErrorResponse" } } }, - "x-ms-long-running-operation": true, + "x-ms-examples": { + "Patch Flux Configuration": { + "$ref": "./examples/PatchFluxConfiguration.json" + } + }, "x-ms-long-running-operation-options": { - "final-state-via": "azure-async-operation" - } + "final-state-via": "azure-async-operation", + "final-state-schema": "#/definitions/FluxConfiguration" + }, + "x-ms-long-running-operation": true }, "delete": { + "operationId": "FluxConfigurations_Delete", "tags": [ "FluxConfiguration", "Flux" ], "description": "This will delete the YAML file used to set up the Flux Configuration, thus stopping future sync from the source repo.", - "operationId": "FluxConfigurations_Delete", - "x-ms-examples": { - "Delete Flux Configuration": { - "$ref": "./examples/DeleteFluxConfiguration.json" - } - }, "parameters": [ { - "$ref": "../../../../../../common-types/resource-management/v2/types.json#/parameters/SubscriptionIdParameter" + "$ref": "../../../../../../common-types/resource-management/v3/types.json#/parameters/ApiVersionParameter" }, { - "$ref": "../../../../../../common-types/resource-management/v2/types.json#/parameters/ResourceGroupNameParameter" + "$ref": "../../../../../../common-types/resource-management/v3/types.json#/parameters/SubscriptionIdParameter" }, { - "$ref": "../../../common/2023-05-01-preview/parameters.json#/parameters/ClusterRpParameter" + "$ref": "../../../../../../common-types/resource-management/v3/types.json#/parameters/ResourceGroupNameParameter" }, { - "$ref": "../../../common/2023-05-01-preview/parameters.json#/parameters/ClusterResourceNameParameter" + "name": "clusterRp", + "in": "path", + "description": "The Kubernetes cluster RP - i.e. Microsoft.ContainerService, Microsoft.Kubernetes, Microsoft.HybridContainerService.", + "required": true, + "type": "string" }, { - "$ref": "../../../common/2023-05-01-preview/parameters.json#/parameters/ClusterNameParameter" + "name": "clusterResourceName", + "in": "path", + "description": "The Kubernetes cluster resource name - i.e. managedClusters, connectedClusters, provisionedClusters, appliances.", + "required": true, + "type": "string", + "pattern": "^[a-zA-Z]*$" }, { - "$ref": "#/parameters/FluxConfigurationNameParameter" + "name": "clusterName", + "in": "path", + "description": "The name of the kubernetes cluster.", + "required": true, + "type": "string", + "pattern": "^.*" }, { - "$ref": "../../../../../../common-types/resource-management/v2/types.json#/parameters/ApiVersionParameter" + "name": "fluxConfigurationName", + "in": "path", + "description": "Name of the Flux Configuration.", + "required": true, + "type": "string" }, { "name": "forceDelete", "in": "query", "description": "Delete the extension resource in Azure - not the normal asynchronous delete.", + "required": false, "type": "boolean" } ], "responses": { "200": { - "description": "OK. The request has been completed successfully." + "description": "Resource deleted successfully." }, "202": { - "description": "Accepted. The request has been accepted for processing." + "description": "Resource deletion accepted.", + "headers": { + "Azure-AsyncOperation": { + "type": "string", + "description": "A link to the status monitor" + }, + "Retry-After": { + "type": "integer", + "format": "int32", + "description": "The Retry-After header can indicate how long the client should wait before polling the operation status." + } + } }, "204": { - "description": "No Content. The request has been accepted but the configuration was not found." + "description": "Resource does not exist." }, "default": { - "description": "Error response describing why the operation failed.", + "description": "An unexpected error response.", "schema": { - "$ref": "../../../../../../common-types/resource-management/v2/types.json#/definitions/ErrorResponse" + "$ref": "../../../../../../common-types/resource-management/v3/types.json#/definitions/ErrorResponse" } } }, - "x-ms-long-running-operation": true, - "x-ms-long-running-operation-options": { - "final-state-via": "azure-async-operation" - } - } - }, - "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{clusterRp}/{clusterResourceName}/{clusterName}/providers/Microsoft.KubernetesConfiguration/fluxConfigurations": { - "get": { - "tags": [ - "FluxConfiguration", - "Flux" - ], - "description": "List all Flux Configurations.", - "operationId": "FluxConfigurations_List", "x-ms-examples": { - "List Flux Configuration": { - "$ref": "./examples/ListFluxConfigurations.json" + "Delete Flux Configuration": { + "$ref": "./examples/DeleteFluxConfiguration.json" } }, - "parameters": [ - { - "$ref": "../../../../../../common-types/resource-management/v2/types.json#/parameters/SubscriptionIdParameter" - }, - { - "$ref": "../../../../../../common-types/resource-management/v2/types.json#/parameters/ResourceGroupNameParameter" - }, - { - "$ref": "../../../common/2023-05-01-preview/parameters.json#/parameters/ClusterRpParameter" - }, - { - "$ref": "../../../common/2023-05-01-preview/parameters.json#/parameters/ClusterResourceNameParameter" - }, - { - "$ref": "../../../common/2023-05-01-preview/parameters.json#/parameters/ClusterNameParameter" - }, - { - "$ref": "../../../../../../common-types/resource-management/v2/types.json#/parameters/ApiVersionParameter" - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/FluxConfigurationsList" - } - }, - "default": { - "description": "Error response describing why the operation failed.", - "schema": { - "$ref": "../../../../../../common-types/resource-management/v2/types.json#/definitions/ErrorResponse" - } - } + "x-ms-long-running-operation-options": { + "final-state-via": "azure-async-operation" }, - "x-ms-pageable": { - "nextLinkName": "nextLink" - } + "x-ms-long-running-operation": true } }, "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{clusterRp}/{clusterResourceName}/{clusterName}/providers/Microsoft.KubernetesConfiguration/fluxConfigurations/{fluxConfigurationName}/operations/{operationId}": { "get": { + "operationId": "FluxConfigOperationStatus_Get", "tags": [ "FluxConfiguration Operation Status" ], - "operationId": "FluxConfigOperationStatus_Get", "description": "Get Async Operation status", - "x-ms-examples": { - "FluxConfigurationAsyncOperationStatus Get": { - "$ref": "./examples/GetFluxConfigurationAsyncOperationStatus.json" - } - }, "parameters": [ { - "$ref": "../../../../../../common-types/resource-management/v2/types.json#/parameters/SubscriptionIdParameter" + "$ref": "../../../../../../common-types/resource-management/v3/types.json#/parameters/ApiVersionParameter" }, { - "$ref": "../../../../../../common-types/resource-management/v2/types.json#/parameters/ResourceGroupNameParameter" + "$ref": "../../../../../../common-types/resource-management/v3/types.json#/parameters/SubscriptionIdParameter" }, { - "$ref": "../../../common/2023-05-01-preview/parameters.json#/parameters/ClusterRpParameter" + "$ref": "../../../../../../common-types/resource-management/v3/types.json#/parameters/ResourceGroupNameParameter" }, { - "$ref": "../../../common/2023-05-01-preview/parameters.json#/parameters/ClusterResourceNameParameter" + "name": "clusterRp", + "in": "path", + "description": "The Kubernetes cluster RP - i.e. Microsoft.ContainerService, Microsoft.Kubernetes, Microsoft.HybridContainerService.", + "required": true, + "type": "string" }, { - "$ref": "../../../common/2023-05-01-preview/parameters.json#/parameters/ClusterNameParameter" + "name": "clusterResourceName", + "in": "path", + "description": "The Kubernetes cluster resource name - i.e. managedClusters, connectedClusters, provisionedClusters, appliances.", + "required": true, + "type": "string", + "pattern": "^[a-zA-Z]*$" }, { - "$ref": "#/parameters/FluxConfigurationNameParameter" + "name": "clusterName", + "in": "path", + "description": "The name of the kubernetes cluster.", + "required": true, + "type": "string", + "pattern": "^.*" }, { - "$ref": "../../../../../../common-types/resource-management/v2/types.json#/parameters/ApiVersionParameter" + "name": "fluxConfigurationName", + "in": "path", + "description": "Name of the Flux Configuration.", + "required": true, + "type": "string" }, { "name": "operationId", "in": "path", - "description": "operation Id", "required": true, "type": "string" } ], "responses": { "200": { - "description": "FluxConfiguration Operation Status", + "description": "Azure operation completed successfully.", "schema": { - "$ref": "../../../common/2022-03-01/definitions.json#/definitions/OperationStatusResult" + "$ref": "#/definitions/OperationStatusResult" } }, "default": { - "description": "Error response describing why the operation failed.", + "description": "An unexpected error response.", "schema": { - "$ref": "../../../../../../common-types/resource-management/v2/types.json#/definitions/ErrorResponse" + "$ref": "../../../../../../common-types/resource-management/v3/types.json#/definitions/ErrorResponse" } } - } - } - } + }, + "x-ms-examples": { + "FluxConfigurationAsyncOperationStatus Get": { + "$ref": "./examples/GetFluxConfigurationAsyncOperationStatus.json" + } + } + } + } }, "definitions": { - "ScopeDefinition": { - "description": "Scope at which the configuration will be installed.", - "type": "string", - "enum": [ - "cluster", - "namespace" - ], - "default": "cluster", - "x-ms-enum": { - "name": "ScopeType", - "modelAsString": true - } - }, - "SourceKindDefinition": { - "description": "Source Kind to pull the configuration data from.", - "type": "string", - "enum": [ - "GitRepository", - "Bucket", - "AzureBlob", - "OCIRepository" - ], - "x-ms-enum": { - "name": "SourceKindType", - "modelAsString": true - } - }, - "GitRepositoryDefinition": { - "description": "Parameters to reconcile to the GitRepository source kind type.", + "AzureBlobDefinition": { "type": "object", - "x-nullable": true, + "description": "Parameters to reconcile to the AzureBlob source kind type.", "properties": { "url": { - "description": "The URL to sync for the flux configuration git repository.", "type": "string", + "description": "The URL to sync for the flux configuration Azure Blob storage account.", + "x-nullable": true + }, + "containerName": { + "type": "string", + "description": "The Azure Blob container name to sync from the url endpoint for the flux configuration.", "x-nullable": true }, "timeoutInSeconds": { - "description": "The maximum time to attempt to reconcile the cluster git repository source with the remote.", "type": "integer", "format": "int64", + "description": "The maximum time to attempt to reconcile the cluster Azure Blob source with the remote.", "default": 600, "x-nullable": true }, "syncIntervalInSeconds": { - "description": "The interval at which to re-reconcile the cluster git repository source with the remote.", "type": "integer", "format": "int64", + "description": "The interval at which to re-reconcile the cluster Azure Blob source with the remote.", "default": 600, "x-nullable": true }, - "repositoryRef": { - "description": "The source reference for the GitRepository object.", - "$ref": "#/definitions/RepositoryRefDefinition" + "servicePrincipal": { + "$ref": "#/definitions/ServicePrincipalDefinition", + "description": "Parameters to authenticate using Service Principal." }, - "sshKnownHosts": { - "description": "Base64-encoded known_hosts value containing public SSH keys required to access private git repositories over SSH", + "accountKey": { "type": "string", - "x-nullable": true + "format": "password", + "description": "The account key (shared key) to access the storage account", + "x-nullable": true, + "x-ms-secret": true }, - "httpsUser": { - "description": "Plaintext HTTPS username used to access private git repositories over HTTPS", + "sasToken": { "type": "string", - "x-nullable": true + "format": "password", + "description": "The Shared Access token to access the storage container", + "x-nullable": true, + "x-ms-secret": true }, - "httpsCACert": { - "description": "Base64-encoded HTTPS certificate authority contents used to access git private git repositories over HTTPS", - "type": "string", - "x-nullable": true + "managedIdentity": { + "$ref": "#/definitions/ManagedIdentityDefinition", + "description": "Parameters to authenticate using a Managed Identity." }, "localAuthRef": { - "description": "Name of a local secret on the Kubernetes cluster to use as the authentication secret rather than the managed or user-provided configuration secrets.", "type": "string", + "description": "Name of a local secret on the Kubernetes cluster to use as the authentication secret rather than the managed or user-provided configuration secrets.", "x-nullable": true - }, - "provider": { - "description": "Name of the provider used for authentication.", - "type": "string", - "x-nullable": true, - "enum": [ - "Azure", - "GitHub", - "Generic" - ], - "x-ms-enum": { - "name": "ProviderType", - "modelAsString": true, - "values": [ - { - "name": "Azure", - "value": "Azure", - "description": "Azure provider can be used to authenticate to Azure DevOps repositories using Managed Identity." - }, - { - "name": "GitHub", - "value": "GitHub", - "description": "GitHub provider can be used to authenticate " - }, - { - "name": "Generic", - "value": "Generic", - "description": "Generic is the default provider that indicates secret-based authentication mechanism." - } - ] - } } } }, - "GitRepositoryPatchDefinition": { - "description": "Parameters to reconcile to the GitRepository source kind type.", + "AzureBlobPatchDefinition": { "type": "object", - "x-nullable": true, + "description": "Parameters to reconcile to the AzureBlob source kind type.", "properties": { "url": { - "description": "The URL to sync for the flux configuration git repository.", "type": "string", + "description": "The URL to sync for the flux configuration Azure Blob storage account.", + "x-nullable": true + }, + "containerName": { + "type": "string", + "description": "The Azure Blob container name to sync from the url endpoint for the flux configuration.", "x-nullable": true }, "timeoutInSeconds": { - "description": "The maximum time to attempt to reconcile the cluster git repository source with the remote.", "type": "integer", "format": "int64", + "description": "The maximum time to attempt to reconcile the cluster Azure Blob source with the remote.", "x-nullable": true }, "syncIntervalInSeconds": { - "description": "The interval at which to re-reconcile the cluster git repository source with the remote.", "type": "integer", "format": "int64", + "description": "The interval at which to re-reconcile the cluster Azure Blob source with the remote.", "x-nullable": true }, - "repositoryRef": { - "description": "The source reference for the GitRepository object.", - "$ref": "#/definitions/RepositoryRefDefinition" - }, - "sshKnownHosts": { - "description": "Base64-encoded known_hosts value containing public SSH keys required to access private git repositories over SSH", - "type": "string", - "x-nullable": true - }, - "httpsUser": { - "description": "Plaintext HTTPS username used to access private git repositories over HTTPS", - "type": "string", - "x-nullable": true - }, - "httpsCACert": { - "description": "Base64-encoded HTTPS certificate authority contents used to access git private git repositories over HTTPS", - "type": "string", - "x-nullable": true - }, - "localAuthRef": { - "description": "Name of a local secret on the Kubernetes cluster to use as the authentication secret rather than the managed or user-provided configuration secrets.", - "type": "string", - "x-nullable": true + "servicePrincipal": { + "$ref": "#/definitions/ServicePrincipalPatchDefinition", + "description": "Parameters to authenticate using Service Principal." }, - "provider": { - "description": "Name of the provider used for authentication.", + "accountKey": { "type": "string", + "format": "password", + "description": "The account key (shared key) to access the storage account", "x-nullable": true, - "enum": [ - "Azure", - "GitHub", - "Generic" - ], - "x-ms-enum": { - "name": "ProviderType", - "modelAsString": true, - "values": [ - { - "name": "Azure", - "value": "Azure", - "description": "Azure provider can be used to authenticate to Azure DevOps repositories using Managed Identity." - }, - { - "name": "GitHub", - "value": "GitHub", - "description": "GitHub provider can be used to authenticate " - }, - { - "name": "Generic", - "value": "Generic", - "description": "Generic is the default provider that indicates secret-based authentication mechanism." - } - ] - } - } - } - }, - "RepositoryRefDefinition": { - "description": "The source reference for the GitRepository object.", - "type": "object", - "x-nullable": true, - "properties": { - "branch": { - "description": "The git repository branch name to checkout.", - "type": "string", - "x-nullable": true + "x-ms-secret": true }, - "tag": { - "description": "The git repository tag name to checkout. This takes precedence over branch.", + "sasToken": { "type": "string", - "x-nullable": true + "format": "password", + "description": "The Shared Access token to access the storage container", + "x-nullable": true, + "x-ms-secret": true }, - "semver": { - "description": "The semver range used to match against git repository tags. This takes precedence over tag.", - "type": "string", - "x-nullable": true + "managedIdentity": { + "$ref": "#/definitions/ManagedIdentityPatchDefinition", + "description": "Parameters to authenticate using a Managed Identity." }, - "commit": { - "description": "The commit SHA to checkout. This value must be combined with the branch name to be valid. This takes precedence over semver.", + "localAuthRef": { "type": "string", + "description": "Name of a local secret on the Kubernetes cluster to use as the authentication secret rather than the managed or user-provided configuration secrets.", "x-nullable": true } } }, "BucketDefinition": { - "description": "Parameters to reconcile to the Bucket source kind type.", "type": "object", - "x-nullable": true, + "description": "Parameters to reconcile to the Bucket source kind type.", "properties": { "url": { - "description": "The URL to sync for the flux configuration S3 bucket.", - "type": "string" + "type": "string", + "description": "The URL to sync for the flux configuration S3 bucket." }, "bucketName": { - "description": "The bucket name to sync from the url endpoint for the flux configuration.", - "type": "string" + "type": "string", + "description": "The bucket name to sync from the url endpoint for the flux configuration." }, "insecure": { - "description": "Specify whether to use insecure communication when puling data from the S3 bucket.", "type": "boolean", + "description": "Specify whether to use insecure communication when puling data from the S3 bucket.", "default": true }, "timeoutInSeconds": { - "description": "The maximum time to attempt to reconcile the cluster bucket source with the remote.", "type": "integer", "format": "int64", + "description": "The maximum time to attempt to reconcile the cluster bucket source with the remote.", "default": 600, "x-nullable": true }, "syncIntervalInSeconds": { - "description": "The interval at which to re-reconcile the cluster bucket source with the remote.", "type": "integer", "format": "int64", + "description": "The interval at which to re-reconcile the cluster bucket source with the remote.", "default": 600, "x-nullable": true }, "accessKey": { - "description": "Plaintext access key used to securely access the S3 bucket", "type": "string", + "description": "Plaintext access key used to securely access the S3 bucket", "x-nullable": true }, "localAuthRef": { - "description": "Name of a local secret on the Kubernetes cluster to use as the authentication secret rather than the managed or user-provided configuration secrets.", "type": "string", + "description": "Name of a local secret on the Kubernetes cluster to use as the authentication secret rather than the managed or user-provided configuration secrets.", "x-nullable": true } } }, "BucketPatchDefinition": { - "description": "Parameters to reconcile to the Bucket source kind type.", "type": "object", - "x-nullable": true, + "description": "Parameters to reconcile to the Bucket source kind type.", "properties": { "url": { - "description": "The URL to sync for the flux configuration S3 bucket.", "type": "string", + "description": "The URL to sync for the flux configuration S3 bucket.", "x-nullable": true }, "bucketName": { - "description": "The bucket name to sync from the url endpoint for the flux configuration.", "type": "string", + "description": "The bucket name to sync from the url endpoint for the flux configuration.", "x-nullable": true }, "insecure": { - "description": "Specify whether to use insecure communication when puling data from the S3 bucket.", "type": "boolean", + "description": "Specify whether to use insecure communication when puling data from the S3 bucket.", "x-nullable": true }, "timeoutInSeconds": { - "description": "The maximum time to attempt to reconcile the cluster bucket source with the remote.", "type": "integer", "format": "int64", + "description": "The maximum time to attempt to reconcile the cluster bucket source with the remote.", "x-nullable": true }, "syncIntervalInSeconds": { - "description": "The interval at which to re-reconcile the cluster bucket source with the remote.", "type": "integer", "format": "int64", + "description": "The interval at which to re-reconcile the cluster bucket source with the remote.", "x-nullable": true }, "accessKey": { - "description": "Plaintext access key used to securely access the S3 bucket", "type": "string", + "description": "Plaintext access key used to securely access the S3 bucket", "x-nullable": true }, "localAuthRef": { - "description": "Name of a local secret on the Kubernetes cluster to use as the authentication secret rather than the managed or user-provided configuration secrets.", "type": "string", + "description": "Name of a local secret on the Kubernetes cluster to use as the authentication secret rather than the managed or user-provided configuration secrets.", "x-nullable": true } } }, - "AzureBlobDefinition": { - "description": "Parameters to reconcile to the AzureBlob source kind type.", + "CreatedByType": { + "type": "string", + "description": "The type of identity that created the resource.", + "enum": [ + "User", + "Application", + "ManagedIdentity", + "Key" + ], + "x-ms-enum": { + "name": "CreatedByType", + "modelAsString": true, + "values": [ + { + "name": "User", + "value": "User", + "description": "User" + }, + { + "name": "Application", + "value": "Application", + "description": "Application" + }, + { + "name": "ManagedIdentity", + "value": "ManagedIdentity", + "description": "ManagedIdentity" + }, + { + "name": "Key", + "value": "Key", + "description": "Key" + } + ] + } + }, + "FluxComplianceState": { + "type": "string", + "description": "Compliance state of the cluster object.", + "enum": [ + "Compliant", + "Non-Compliant", + "Pending", + "Suspended", + "Unknown" + ], + "x-ms-enum": { + "name": "FluxComplianceState", + "modelAsString": true, + "values": [ + { + "name": "Compliant", + "value": "Compliant", + "description": "Compliant" + }, + { + "name": "Non-Compliant", + "value": "Non-Compliant", + "description": "Non-Compliant" + }, + { + "name": "Pending", + "value": "Pending", + "description": "Pending" + }, + { + "name": "Suspended", + "value": "Suspended", + "description": "Suspended" + }, + { + "name": "Unknown", + "value": "Unknown", + "description": "Unknown" + } + ] + } + }, + "FluxConfiguration": { "type": "object", - "x-nullable": true, + "description": "The Flux Configuration object returned in Get & Put response.", "properties": { - "url": { - "description": "The URL to sync for the flux configuration Azure Blob storage account.", - "type": "string", - "x-nullable": true - }, - "containerName": { - "description": "The Azure Blob container name to sync from the url endpoint for the flux configuration.", - "type": "string", - "x-nullable": true - }, - "timeoutInSeconds": { - "description": "The maximum time to attempt to reconcile the cluster Azure Blob source with the remote.", - "type": "integer", - "format": "int64", - "default": 600, - "x-nullable": true + "properties": { + "$ref": "#/definitions/FluxConfigurationProperties", + "description": "Properties to create a Flux Configuration resource", + "x-ms-client-flatten": true + } + }, + "allOf": [ + { + "$ref": "../../../../../../common-types/resource-management/v3/types.json#/definitions/ProxyResource" + } + ] + }, + "FluxConfigurationPatch": { + "type": "object", + "description": "The Flux Configuration Patch Request object.", + "properties": { + "properties": { + "$ref": "#/definitions/FluxConfigurationPatchProperties", + "description": "Updatable properties of an Flux Configuration Patch Request", + "x-ms-client-flatten": true + } + } + }, + "FluxConfigurationPatchProperties": { + "type": "object", + "description": "Updatable properties of an Flux Configuration Patch Request", + "properties": { + "sourceKind": { + "$ref": "#/definitions/SourceKindType", + "description": "Source Kind to pull the configuration data from." }, - "syncIntervalInSeconds": { - "description": "The interval at which to re-reconcile the cluster Azure Blob source with the remote.", - "type": "integer", - "format": "int64", - "default": 600, - "x-nullable": true + "suspend": { + "type": "boolean", + "description": "Whether this configuration should suspend its reconciliation of its kustomizations and sources." }, - "servicePrincipal": { - "description": "Parameters to authenticate using Service Principal.", - "type": "object", - "$ref": "#/definitions/ServicePrincipalDefinition" + "gitRepository": { + "$ref": "#/definitions/GitRepositoryPatchDefinition", + "description": "Parameters to reconcile to the GitRepository source kind type." }, - "accountKey": { - "description": "The account key (shared key) to access the storage account", - "type": "string", - "x-nullable": true, - "x-ms-secret": true + "bucket": { + "$ref": "#/definitions/BucketPatchDefinition", + "description": "Parameters to reconcile to the Bucket source kind type." }, - "sasToken": { - "description": "The Shared Access token to access the storage container", - "type": "string", - "x-nullable": true, - "x-ms-secret": true + "azureBlob": { + "$ref": "#/definitions/AzureBlobPatchDefinition", + "description": "Parameters to reconcile to the AzureBlob source kind type." }, - "managedIdentity": { - "description": "Parameters to authenticate using a Managed Identity.", + "ociRepository": { + "$ref": "#/definitions/OCIRepositoryPatchDefinition", + "description": "Parameters to reconcile to the OCIRepository source kind type." + }, + "kustomizations": { "type": "object", - "$ref": "#/definitions/ManagedIdentityDefinition" + "description": "Array of kustomizations used to reconcile the artifact pulled by the source type on the cluster.", + "additionalProperties": { + "$ref": "#/definitions/KustomizationPatchDefinition" + } }, - "localAuthRef": { - "description": "Name of a local secret on the Kubernetes cluster to use as the authentication secret rather than the managed or user-provided configuration secrets.", - "type": "string", - "x-nullable": true + "configurationProtectedSettings": { + "type": "object", + "description": "Key-value pairs of protected configuration settings for the configuration", + "additionalProperties": { + "type": "string" + } } } }, - "AzureBlobPatchDefinition": { - "description": "Parameters to reconcile to the AzureBlob source kind type.", + "FluxConfigurationProperties": { "type": "object", - "x-nullable": true, + "description": "Properties to create a Flux Configuration resource", "properties": { - "url": { - "description": "The URL to sync for the flux configuration Azure Blob storage account.", + "scope": { "type": "string", - "x-nullable": true + "description": "Scope at which the operator will be installed.", + "default": "cluster", + "enum": [ + "cluster", + "namespace" + ], + "x-ms-enum": { + "name": "ScopeType", + "modelAsString": true, + "values": [ + { + "name": "cluster", + "value": "cluster", + "description": "cluster" + }, + { + "name": "namespace", + "value": "namespace", + "description": "namespace" + } + ] + }, + "x-ms-mutability": [ + "read", + "create" + ] }, - "containerName": { - "description": "The Azure Blob container name to sync from the url endpoint for the flux configuration.", + "namespace": { "type": "string", - "x-nullable": true + "description": "The namespace to which this configuration is installed to. Maximum of 253 lower case alphanumeric characters, hyphen and period only.", + "default": "default", + "x-ms-mutability": [ + "read", + "create" + ] }, - "timeoutInSeconds": { - "description": "The maximum time to attempt to reconcile the cluster Azure Blob source with the remote.", - "type": "integer", - "format": "int64", - "x-nullable": true + "sourceKind": { + "type": "string", + "description": "Source Kind to pull the configuration data from.", + "default": "GitRepository", + "enum": [ + "GitRepository", + "Bucket", + "AzureBlob", + "OCIRepository" + ], + "x-ms-enum": { + "name": "SourceKindType", + "modelAsString": true, + "values": [ + { + "name": "GitRepository", + "value": "GitRepository", + "description": "GitRepository" + }, + { + "name": "Bucket", + "value": "Bucket", + "description": "Bucket" + }, + { + "name": "AzureBlob", + "value": "AzureBlob", + "description": "AzureBlob" + }, + { + "name": "OCIRepository", + "value": "OCIRepository", + "description": "OCIRepository" + } + ] + } }, - "syncIntervalInSeconds": { - "description": "The interval at which to re-reconcile the cluster Azure Blob source with the remote.", - "type": "integer", - "format": "int64", - "x-nullable": true + "suspend": { + "type": "boolean", + "description": "Whether this configuration should suspend its reconciliation of its kustomizations and sources.", + "default": false }, - "servicePrincipal": { - "description": "Parameters to authenticate using Service Principal.", - "type": "object", - "$ref": "#/definitions/ServicePrincipalPatchDefinition" + "gitRepository": { + "$ref": "#/definitions/GitRepositoryDefinition", + "description": "Parameters to reconcile to the GitRepository source kind type." }, - "accountKey": { - "description": "The account key (shared key) to access the storage account", - "type": "string", - "x-nullable": true, - "x-ms-secret": true + "bucket": { + "$ref": "#/definitions/BucketDefinition", + "description": "Parameters to reconcile to the Bucket source kind type." }, - "sasToken": { - "description": "The Shared Access token to access the storage container", - "type": "string", + "azureBlob": { + "$ref": "#/definitions/AzureBlobDefinition", + "description": "Parameters to reconcile to the AzureBlob source kind type." + }, + "ociRepository": { + "$ref": "#/definitions/OCIRepositoryDefinition", + "description": "Parameters to reconcile to the OCIRepository source kind type." + }, + "kustomizations": { + "type": "object", + "description": "Array of kustomizations used to reconcile the artifact pulled by the source type on the cluster.", "x-nullable": true, - "x-ms-secret": true + "additionalProperties": { + "$ref": "#/definitions/KustomizationDefinition" + } }, - "managedIdentity": { - "description": "Parameters to authenticate using a Managed Identity.", + "configurationProtectedSettings": { "type": "object", - "$ref": "#/definitions/ManagedIdentityPatchDefinition" + "format": "password", + "description": "Key-value pairs of protected configuration settings for the configuration", + "x-nullable": true, + "additionalProperties": { + "type": "string" + }, + "x-ms-secret": true }, - "localAuthRef": { - "description": "Name of a local secret on the Kubernetes cluster to use as the authentication secret rather than the managed or user-provided configuration secrets.", - "type": "string", - "x-nullable": true - } - } - }, - "ServicePrincipalDefinition": { - "description": "Parameters to authenticate using Service Principal.", - "type": "object", - "x-nullable": true, - "properties": { - "clientId": { - "description": "The client Id for authenticating a Service Principal.", - "type": "string", - "x-nullable": true + "statuses": { + "type": "array", + "description": "Statuses of the Flux Kubernetes resources created by the fluxConfiguration or created by the managed objects provisioned by the fluxConfiguration.", + "x-nullable": true, + "items": { + "$ref": "#/definitions/ObjectStatusDefinition" + }, + "readOnly": true }, - "tenantId": { - "description": "The tenant Id for authenticating a Service Principal", + "repositoryPublicKey": { "type": "string", - "x-nullable": true + "description": "Public Key associated with this fluxConfiguration (either generated within the cluster or provided by the user).", + "x-nullable": true, + "readOnly": true }, - "clientSecret": { - "description": "The client secret for authenticating a Service Principal", + "sourceSyncedCommitId": { "type": "string", + "description": "Branch and/or SHA of the source commit synced with the cluster.", "x-nullable": true, - "x-ms-secret": true + "readOnly": true }, - "clientCertificate": { - "description": "Base64-encoded certificate used to authenticate a Service Principal ", + "sourceUpdatedAt": { "type": "string", + "format": "date-time", + "description": "Datetime the fluxConfiguration synced its source on the cluster.", "x-nullable": true, - "x-ms-secret": true + "readOnly": true }, - "clientCertificatePassword": { - "description": "The password for the certificate used to authenticate a Service Principal ", + "statusUpdatedAt": { "type": "string", + "format": "date-time", + "description": "Datetime the fluxConfiguration synced its status on the cluster with Azure.", "x-nullable": true, - "x-ms-secret": true + "readOnly": true }, - "clientCertificateSendChain": { - "description": "Specifies whether to include x5c header in client claims when acquiring a token to enable subject name / issuer based authentication for the Client Certificate", + "waitForReconciliation": { "type": "boolean", - "default": false - } - } - }, - "ServicePrincipalPatchDefinition": { - "description": "Parameters to authenticate using Service Principal.", - "type": "object", - "x-nullable": true, - "properties": { - "clientId": { - "description": "The client Id for authenticating a Service Principal.", - "type": "string", + "description": "Whether flux configuration deployment should wait for cluster to reconcile the kustomizations.", "x-nullable": true }, - "tenantId": { - "description": "The tenant Id for authenticating a Service Principal", + "reconciliationWaitDuration": { "type": "string", + "description": "Maximum duration to wait for flux configuration reconciliation. E.g PT1H, PT5M, P1D", "x-nullable": true }, - "clientSecret": { - "description": "The client secret for authenticating a Service Principal", + "complianceState": { "type": "string", - "x-nullable": true, - "x-ms-secret": true + "description": "Combined status of the Flux Kubernetes resources created by the fluxConfiguration or created by the managed objects.", + "default": "Unknown", + "enum": [ + "Compliant", + "Non-Compliant", + "Pending", + "Suspended", + "Unknown" + ], + "x-ms-enum": { + "name": "FluxComplianceState", + "modelAsString": true, + "values": [ + { + "name": "Compliant", + "value": "Compliant", + "description": "Compliant" + }, + { + "name": "Non-Compliant", + "value": "Non-Compliant", + "description": "Non-Compliant" + }, + { + "name": "Pending", + "value": "Pending", + "description": "Pending" + }, + { + "name": "Suspended", + "value": "Suspended", + "description": "Suspended" + }, + { + "name": "Unknown", + "value": "Unknown", + "description": "Unknown" + } + ] + }, + "readOnly": true }, - "clientCertificate": { - "description": "Base64-encoded certificate used to authenticate a Service Principal ", - "type": "string", - "x-nullable": true, - "x-ms-secret": true + "provisioningState": { + "$ref": "#/definitions/ProvisioningState", + "description": "Status of the creation of the fluxConfiguration.", + "readOnly": true }, - "clientCertificatePassword": { - "description": "The password for the certificate used to authenticate a Service Principal ", + "errorMessage": { "type": "string", + "description": "Error message returned to the user in the case of provisioning failure.", "x-nullable": true, - "x-ms-secret": true - }, - "clientCertificateSendChain": { - "description": "Specifies whether to include x5c header in client claims when acquiring a token to enable subject name / issuer based authentication for the Client Certificate", - "type": "boolean" - } - } - }, - "ManagedIdentityDefinition": { - "description": "Parameters to authenticate using a Managed Identity.", - "type": "object", - "x-nullable": true, - "properties": { - "clientId": { - "description": "The client Id for authenticating a Managed Identity.", - "type": "string", - "x-nullable": true + "readOnly": true } } }, - "ManagedIdentityPatchDefinition": { - "description": "Parameters to authenticate using a Managed Identity.", + "FluxConfigurationsList": { "type": "object", - "x-nullable": true, + "description": "Result of the request to list Flux Configurations. It contains a list of FluxConfiguration objects and a URL link to get the next set of results.", "properties": { - "clientId": { - "description": "The client Id for authenticating a Managed Identity.", + "value": { + "type": "array", + "description": "The FluxConfiguration items on this page", + "items": { + "$ref": "#/definitions/FluxConfiguration" + }, + "readOnly": true + }, + "nextLink": { "type": "string", - "x-nullable": true + "format": "uri", + "description": "The link to the next page of items" } - } + }, + "required": [ + "value" + ] }, - "OCIRepositoryDefinition": { - "description": "Parameters to reconcile to the OCIRepository source kind type.", + "GitRepositoryDefinition": { "type": "object", - "x-nullable": true, + "description": "Parameters to reconcile to the GitRepository source kind type.", "properties": { "url": { - "description": "The URL to sync for the flux configuration OCI repository.", "type": "string", - "format": "uri", + "description": "The URL to sync for the flux configuration git repository.", "x-nullable": true }, "timeoutInSeconds": { - "description": "The maximum time to attempt to reconcile the cluster OCI repository source with the remote.", "type": "integer", "format": "int64", + "description": "The maximum time to attempt to reconcile the cluster git repository source with the remote.", "default": 600, "x-nullable": true }, "syncIntervalInSeconds": { - "description": "The interval at which to re-reconcile the cluster OCI repository source with the remote.", "type": "integer", "format": "int64", + "description": "The interval at which to re-reconcile the cluster git repository source with the remote.", "default": 600, "x-nullable": true }, "repositoryRef": { - "description": "The source reference for the OCIRepository object.", - "$ref": "#/definitions/OCIRepositoryRefDefinition" - }, - "layerSelector": { - "description": "The layer to be pulled from the OCI artifact.", - "$ref": "#/definitions/LayerSelectorDefinition" + "$ref": "#/definitions/RepositoryRefDefinition", + "description": "The source reference for the GitRepository object." }, - "verify": { - "description": "Verification of the authenticity of an OCI Artifact.", - "$ref": "#/definitions/VerifyDefinition" + "sshKnownHosts": { + "type": "string", + "description": "Base64-encoded known_hosts value containing public SSH keys required to access private git repositories over SSH", + "x-nullable": true }, - "insecure": { - "description": "Specify whether to allow connecting to a non-TLS HTTP container registry.", - "type": "boolean", - "default": false - }, - "useWorkloadIdentity": { - "description": "Specifies whether to use Workload Identity to authenticate with the OCI repository.", - "type": "boolean", - "default": false - }, - "serviceAccountName": { - "description": "The service account name to authenticate with the OCI repository.", + "httpsUser": { "type": "string", + "description": "Plaintext HTTPS username used to access private git repositories over HTTPS", "x-nullable": true }, - "tlsConfig": { - "description": "Parameters to authenticate using TLS config for OCI repository.", - "type": "object", - "$ref": "#/definitions/TlsConfigDefinition" + "httpsCACert": { + "type": "string", + "description": "Base64-encoded HTTPS certificate authority contents used to access git private git repositories over HTTPS", + "x-nullable": true }, "localAuthRef": { - "description": "Name of a local secret on the Kubernetes cluster to use as the authentication secret rather than the managed or user-provided configuration secrets.", "type": "string", + "description": "Name of a local secret on the Kubernetes cluster to use as the authentication secret rather than the managed or user-provided configuration secrets.", + "x-nullable": true + }, + "provider": { + "$ref": "#/definitions/ProviderType", + "description": "Name of the provider used for authentication.", "x-nullable": true } } }, - "OCIRepositoryPatchDefinition": { - "description": "Parameters to reconcile to the OCIRepository source kind type.", + "GitRepositoryPatchDefinition": { "type": "object", - "x-nullable": true, + "description": "Parameters to reconcile to the GitRepository source kind type.", "properties": { "url": { - "description": "The URL to sync for the flux configuration OCI repository.", "type": "string", - "format": "uri", + "description": "The URL to sync for the flux configuration git repository.", "x-nullable": true }, "timeoutInSeconds": { - "description": "The maximum time to attempt to reconcile the cluster OCI repository source with the remote.", "type": "integer", "format": "int64", + "description": "The maximum time to attempt to reconcile the cluster git repository source with the remote.", "x-nullable": true }, "syncIntervalInSeconds": { - "description": "The interval at which to re-reconcile the cluster OCI repository source with the remote.", "type": "integer", "format": "int64", + "description": "The interval at which to re-reconcile the cluster git repository source with the remote.", "x-nullable": true }, "repositoryRef": { - "description": "The source reference for the OCIRepository object.", - "$ref": "#/definitions/OCIRepositoryRefPatchDefinition" - }, - "layerSelector": { - "description": "The layer to be pulled from the OCI artifact.", - "$ref": "#/definitions/LayerSelectorPatchDefinition" - }, - "verify": { - "description": "Verification of the authenticity of an OCI Artifact.", - "$ref": "#/definitions/VerifyPatchDefinition" - }, - "insecure": { - "description": "Specify whether to allow connecting to a non-TLS HTTP container registry.", - "type": "boolean", - "default": false - }, - "useWorkloadIdentity": { - "description": "Specifies whether to use Workload Identity to authenticate with the OCI repository.", - "type": "boolean", - "default": false + "$ref": "#/definitions/RepositoryRefDefinition", + "description": "The source reference for the GitRepository object." }, - "serviceAccountName": { - "description": "The service account name to authenticate with the OCI repository.", + "sshKnownHosts": { "type": "string", + "description": "Base64-encoded known_hosts value containing public SSH keys required to access private git repositories over SSH", "x-nullable": true }, - "tlsConfig": { - "description": "Parameters to authenticate using TLS config for OCI repository.", - "type": "object", - "$ref": "#/definitions/TlsConfigPatchDefinition" - }, - "localAuthRef": { - "description": "Name of a local secret on the Kubernetes cluster to use as the authentication secret rather than the managed or user-provided configuration secrets.", + "httpsUser": { "type": "string", + "description": "Plaintext HTTPS username used to access private git repositories over HTTPS", "x-nullable": true - } - } - }, - "TlsConfigDefinition": { - "description": "Parameters to authenticate using TLS config for OCI repository.", - "type": "object", - "x-nullable": true, - "properties": { - "clientCertificate": { - "description": "Base64-encoded certificate used to authenticate a client with the OCI repository.", - "type": "string", - "x-nullable": true, - "x-ms-secret": true }, - "privateKey": { - "description": "Base64-encoded private key used to authenticate a client with the OCI repository.", + "httpsCACert": { "type": "string", - "x-nullable": true, - "x-ms-secret": true + "description": "Base64-encoded HTTPS certificate authority contents used to access git private git repositories over HTTPS", + "x-nullable": true }, - "caCertificate": { - "description": "Base64-encoded CA certificate used to verify the server.", + "localAuthRef": { "type": "string", - "x-nullable": true, - "x-ms-secret": true + "description": "Name of a local secret on the Kubernetes cluster to use as the authentication secret rather than the managed or user-provided configuration secrets.", + "x-nullable": true + }, + "provider": { + "$ref": "#/definitions/ProviderType", + "description": "Name of the provider used for authentication.", + "x-nullable": true } } }, - "TlsConfigPatchDefinition": { - "description": "Parameters to authenticate using TLS config for OCI repository.", + "HelmReleasePropertiesDefinition": { "type": "object", - "x-nullable": true, + "description": "Properties for HelmRelease objects", "properties": { - "clientCertificate": { - "description": "Base64-encoded certificate used to authenticate a client with the OCI repository.", - "type": "string", - "x-nullable": true, - "x-ms-secret": true + "lastRevisionApplied": { + "type": "integer", + "format": "int64", + "description": "The revision number of the last released object change", + "x-nullable": true }, - "privateKey": { - "description": "Base64-encoded private key used to authenticate a client with the OCI repository.", - "type": "string", - "x-nullable": true, - "x-ms-secret": true + "helmChartRef": { + "$ref": "#/definitions/ObjectReferenceDefinition", + "description": "The reference to the HelmChart object used as the source to this HelmRelease" }, - "caCertificate": { - "description": "Base64-encoded CA certificate used to verify the server.", - "type": "string", - "x-nullable": true, - "x-ms-secret": true - } - } - }, - "OCIRepositoryRefDefinition": { - "description": "The source reference for the OCIRepository object.", - "type": "object", - "x-nullable": true, - "properties": { - "tag": { - "description": "The OCI repository image tag name to pull. This defaults to 'latest'.", - "type": "string", + "failureCount": { + "type": "integer", + "format": "int64", + "description": "Total number of times that the HelmRelease failed to install or upgrade", "x-nullable": true }, - "semver": { - "description": "The semver range used to match against OCI repository tags. This takes precedence over tag.", - "type": "string", + "installFailureCount": { + "type": "integer", + "format": "int64", + "description": "Number of times that the HelmRelease failed to install", "x-nullable": true }, - "digest": { - "description": "The image digest to pull from OCI repository, the value should be in the format ‘sha256:’. This takes precedence over semver.", - "type": "string", + "upgradeFailureCount": { + "type": "integer", + "format": "int64", + "description": "Number of times that the HelmRelease failed to upgrade", "x-nullable": true } } }, - "OCIRepositoryRefPatchDefinition": { - "description": "The source reference for the OCIRepository object.", + "KustomizationDefinition": { "type": "object", - "x-nullable": true, + "description": "The Kustomization defining how to reconcile the artifact pulled by the source type on the cluster.", "properties": { - "tag": { - "description": "The OCI repository image tag name to pull. This defaults to 'latest'.", + "name": { "type": "string", - "x-nullable": true + "description": "Name of the Kustomization, matching the key in the Kustomizations object map.", + "readOnly": true }, - "semver": { - "description": "The semver range used to match against OCI repository tags. This takes precedence over tag.", + "path": { "type": "string", + "description": "The path in the source reference to reconcile on the cluster.", + "default": "" + }, + "dependsOn": { + "type": "array", + "description": "Specifies other Kustomizations that this Kustomization depends on. This Kustomization will not reconcile until all dependencies have completed their reconciliation.", + "x-nullable": true, + "items": { + "type": "string" + } + }, + "timeoutInSeconds": { + "type": "integer", + "format": "int64", + "description": "The maximum time to attempt to reconcile the Kustomization on the cluster.", + "default": 600, "x-nullable": true }, - "digest": { - "description": "The image digest to pull from OCI repository, the value should be in the format ‘sha256:’. This takes precedence over semver.", - "type": "string", + "syncIntervalInSeconds": { + "type": "integer", + "format": "int64", + "description": "The interval at which to re-reconcile the Kustomization on the cluster.", + "default": 600, "x-nullable": true - } - } - }, - "LayerSelectorDefinition": { - "description": "Parameters to specify which layer to pull from the OCI artifact. By default, the first layer in the artifact is pulled.", - "type": "object", - "x-nullable": true, - "properties": { - "mediaType": { - "description": "The first layer matching the specified media type will be used.", - "type": "string", + }, + "retryIntervalInSeconds": { + "type": "integer", + "format": "int64", + "description": "The interval at which to re-reconcile the Kustomization on the cluster in the event of failure on reconciliation.", "x-nullable": true }, - "operation": { - "description": "The operation to be performed on the selected layer. The default value is 'extract', but it can be set to 'copy'.", - "$ref": "#/definitions/OperationDefinition", + "prune": { + "type": "boolean", + "description": "Enable/disable garbage collections of Kubernetes objects created by this Kustomization.", + "default": false + }, + "force": { + "type": "boolean", + "description": "Enable/disable re-creating Kubernetes resources on the cluster when patching fails due to an immutable field change.", + "default": false + }, + "wait": { + "type": "boolean", + "description": "Enable/disable health check for all Kubernetes objects created by this Kustomization.", + "default": true + }, + "postBuild": { + "$ref": "#/definitions/PostBuildDefinition", + "description": "Used for variable substitution for this Kustomization after kustomize build.", "x-nullable": true } } }, - "LayerSelectorPatchDefinition": { - "description": "Parameters to specify which layer to pull from the OCI artifact. By default, the first layer in the artifact is pulled.", + "KustomizationPatchDefinition": { "type": "object", - "x-nullable": true, + "description": "The Kustomization defining how to reconcile the artifact pulled by the source type on the cluster.", "properties": { - "mediaType": { - "description": "The first layer matching the specified media type will be used.", + "path": { "type": "string", + "description": "The path in the source reference to reconcile on the cluster.", "x-nullable": true }, - "operation": { - "description": "The operation to be performed on the selected layer. The default value is 'extract', but it can be set to 'copy'.", - "$ref": "#/definitions/OperationDefinition", - "x-nullable": true - } - } - }, - "OperationDefinition": { - "description": "The operation to be performed on the selected layer. The default value is 'extract', but it can be set to 'copy'.", - "type": "string", - "enum": [ - "extract", - "copy" - ], - "x-ms-enum": { - "name": "OperationType", - "modelAsString": true - } - }, - "VerifyDefinition": { - "description": "Parameters to verify the authenticity of an OCI Artifact.", - "type": "object", - "x-nullable": true, - "properties": { - "provider": { - "description": "Verification provider name.", - "type": "string" - }, - "verificationConfig": { - "description": "An object containing trusted public keys of trusted authors.", - "type": "object", + "dependsOn": { + "type": "array", + "description": "Specifies other Kustomizations that this Kustomization depends on. This Kustomization will not reconcile until all dependencies have completed their reconciliation.", "x-nullable": true, - "additionalProperties": { + "items": { "type": "string" } }, - "matchOidcIdentity": { - "description": "Array defining the criteria for matching the identity while verifying an OCI artifact.", - "type": "array", - "items": { - "type": "object", - "$ref": "#/definitions/MatchOidcIdentityDefinition" - }, - "x-ms-identifiers": [], + "timeoutInSeconds": { + "type": "integer", + "format": "int64", + "description": "The maximum time to attempt to reconcile the Kustomization on the cluster.", "x-nullable": true - } - } - }, - "VerifyPatchDefinition": { - "description": "Parameters to verify the authenticity of an OCI Artifact.", - "type": "object", - "x-nullable": true, - "properties": { - "provider": { - "description": "Verification provider name.", - "type": "string" }, - "verificationConfig": { - "description": "An object containing trusted public keys of trusted authors.", - "type": "object", - "x-nullable": true, - "additionalProperties": { - "type": "string" - } + "syncIntervalInSeconds": { + "type": "integer", + "format": "int64", + "description": "The interval at which to re-reconcile the Kustomization on the cluster.", + "x-nullable": true }, - "matchOidcIdentity": { - "description": "Array defining the criteria for matching the OIDC identity while verifying an OCI artifact.", - "type": "array", - "items": { - "type": "object", - "$ref": "#/definitions/MatchOidcIdentityPatchDefinition" - }, - "x-ms-identifiers": [], + "retryIntervalInSeconds": { + "type": "integer", + "format": "int64", + "description": "The interval at which to re-reconcile the Kustomization on the cluster in the event of failure on reconciliation.", + "x-nullable": true + }, + "prune": { + "type": "boolean", + "description": "Enable/disable garbage collections of Kubernetes objects created by this Kustomization.", + "x-nullable": true + }, + "force": { + "type": "boolean", + "description": "Enable/disable re-creating Kubernetes resources on the cluster when patching fails due to an immutable field change.", + "x-nullable": true + }, + "wait": { + "type": "boolean", + "description": "Enable/disable health check for all Kubernetes objects created by this Kustomization.", + "x-nullable": true + }, + "postBuild": { + "$ref": "#/definitions/PostBuildPatchDefinition", + "description": "Used for variable substitution for this Kustomization after kustomize build.", "x-nullable": true } } }, - "MatchOidcIdentityDefinition": { - "description": "MatchOIDCIdentity defines the criteria for matching the identity while verifying an OCI artifact.", + "KustomizationValidationType": { + "type": "string", + "description": "Specify whether to validate the Kubernetes objects referenced in the Kustomization before applying them to the cluster.", + "enum": [ + "none", + "client", + "server" + ], + "x-ms-enum": { + "name": "KustomizationValidationType", + "modelAsString": true, + "values": [ + { + "name": "none", + "value": "none", + "description": "none" + }, + { + "name": "client", + "value": "client", + "description": "client" + }, + { + "name": "server", + "value": "server", + "description": "server" + } + ] + } + }, + "LayerSelectorDefinition": { "type": "object", - "x-nullable": true, + "description": "Parameters to specify which layer to pull from the OCI artifact. By default, the first layer in the artifact is pulled.", "properties": { - "issuer": { - "description": "The regex pattern to match against to verify the OIDC issuer.", - "type": "string" + "mediaType": { + "type": "string", + "description": "The first layer matching the specified media type will be used.", + "x-nullable": true }, - "subject": { - "description": "The regex pattern to match against to verify the identity subject.", - "type": "string" + "operation": { + "$ref": "#/definitions/OperationType", + "description": "The operation to be performed on the selected layer. The default value is 'extract', but it can be set to 'copy'.", + "x-nullable": true } } }, - "MatchOidcIdentityPatchDefinition": { - "description": "MatchOIDCIdentity defines the criteria for matching the identity while verifying an OCI artifact.", + "LayerSelectorPatchDefinition": { "type": "object", - "x-nullable": true, + "description": "Parameters to specify which layer to pull from the OCI artifact. By default, the first layer in the artifact is pulled.", "properties": { - "issuer": { - "description": "The regex pattern to match against to verify the OIDC issuer.", - "type": "string" + "mediaType": { + "type": "string", + "description": "The first layer matching the specified media type will be used.", + "x-nullable": true }, - "subject": { - "description": "The regex pattern to match against to verify the identity subject.", - "type": "string" + "operation": { + "$ref": "#/definitions/OperationType", + "description": "The operation to be performed on the selected layer. The default value is 'extract', but it can be set to 'copy'.", + "x-nullable": true } } }, - "PostBuildDefinition": { - "description": "The postBuild definitions defining variable substitutions for this Kustomization after kustomize build.", + "ManagedIdentityDefinition": { "type": "object", - "x-nullable": true, + "description": "Parameters to authenticate using a Managed Identity.", "properties": { - "substitute": { - "description": "Key/value pairs holding the variables to be substituted in this Kustomization.", - "type": "object", - "x-nullable": true, - "additionalProperties": { - "type": "string" - } - }, - "substituteFrom": { - "description": "Array of ConfigMaps/Secrets from which the variables are substituted for this Kustomization.", - "type": "array", - "items": { - "type": "object", - "$ref": "#/definitions/SubstituteFromDefinition" - }, - "x-ms-identifiers": [], + "clientId": { + "type": "string", + "description": "The client Id for authenticating a Managed Identity.", "x-nullable": true } } }, - "PostBuildPatchDefinition": { - "description": "The postBuild definitions defining variable substitutions for this Kustomization after kustomize build.", + "ManagedIdentityPatchDefinition": { "type": "object", - "x-nullable": true, + "description": "Parameters to authenticate using a Managed Identity.", "properties": { - "substitute": { - "description": "Key/value pairs holding the variables to be substituted in this Kustomization.", - "type": "object", - "x-nullable": true, - "additionalProperties": { - "type": "string" - } - }, - "substituteFrom": { - "description": "Array of ConfigMaps/Secrets from which the variables are substituted for this Kustomization.", - "type": "array", - "items": { - "type": "object", - "$ref": "#/definitions/SubstituteFromPatchDefinition" - }, - "x-ms-identifiers": [], + "clientId": { + "type": "string", + "description": "The client Id for authenticating a Managed Identity.", "x-nullable": true } } }, - "SubstituteFromDefinition": { - "description": "Array of ConfigMaps/Secrets from which the variables are substituted for this Kustomization.", + "MatchOidcIdentityDefinition": { "type": "object", - "x-nullable": true, + "description": "MatchOIDCIdentity defines the criteria for matching the identity while verifying an OCI artifact.", "properties": { - "kind": { - "description": "Define whether it is ConfigMap or Secret that holds the variables to be used in substitution.", - "type": "string" - }, - "name": { - "description": "Name of the ConfigMap/Secret that holds the variables to be used in substitution.", - "type": "string" + "issuer": { + "type": "string", + "description": "The regex pattern to match against to verify the OIDC issuer." }, - "optional": { - "description": "Set to True to proceed without ConfigMap/Secret, if it is not present.", - "type": "boolean", - "default": false + "subject": { + "type": "string", + "description": "The regex pattern to match against to verify the identity subject." } } }, - "SubstituteFromPatchDefinition": { - "description": "Array of ConfigMaps/Secrets from which the variables are substituted for this Kustomization.", + "MatchOidcIdentityPatchDefinition": { "type": "object", - "x-nullable": true, + "description": "MatchOIDCIdentity defines the criteria for matching the identity while verifying an OCI artifact.", "properties": { - "kind": { - "description": "Define whether it is ConfigMap or Secret that holds the variables to be used in substitution.", - "type": "string" - }, - "name": { - "description": "Name of the ConfigMap/Secret that holds the variables to be used in substitution.", - "type": "string" + "issuer": { + "type": "string", + "description": "The regex pattern to match against to verify the OIDC issuer." }, - "optional": { - "description": "Set to True to proceed without ConfigMap/Secret, if it is not present.", - "type": "boolean", - "default": false + "subject": { + "type": "string", + "description": "The regex pattern to match against to verify the identity subject." } } }, - "KustomizationDefinition": { - "description": "The Kustomization defining how to reconcile the artifact pulled by the source type on the cluster.", + "OCIRepositoryDefinition": { "type": "object", - "x-nullable": true, + "description": "Parameters to reconcile to the OCIRepository source kind type.", "properties": { - "name": { - "description": "Name of the Kustomization, matching the key in the Kustomizations object map.", - "type": "string", - "readOnly": true - }, - "path": { - "description": "The path in the source reference to reconcile on the cluster.", + "url": { "type": "string", - "default": "" - }, - "dependsOn": { - "description": "Specifies other Kustomizations that this Kustomization depends on. This Kustomization will not reconcile until all dependencies have completed their reconciliation.", - "type": "array", - "items": { - "description": "Kustomization name of dependency.", - "type": "string" - }, + "format": "uri", + "description": "The URL to sync for the flux configuration OCI repository.", "x-nullable": true }, "timeoutInSeconds": { - "description": "The maximum time to attempt to reconcile the Kustomization on the cluster.", "type": "integer", "format": "int64", + "description": "The maximum time to attempt to reconcile the cluster OCI repository source with the remote.", "default": 600, "x-nullable": true }, "syncIntervalInSeconds": { - "description": "The interval at which to re-reconcile the Kustomization on the cluster.", "type": "integer", "format": "int64", + "description": "The interval at which to re-reconcile the cluster OCI repository source with the remote.", "default": 600, "x-nullable": true }, - "retryIntervalInSeconds": { - "description": "The interval at which to re-reconcile the Kustomization on the cluster in the event of failure on reconciliation.", - "type": "integer", - "format": "int64", - "x-nullable": true + "repositoryRef": { + "$ref": "#/definitions/OCIRepositoryRefDefinition", + "description": "The source reference for the OCIRepository object." }, - "prune": { - "description": "Enable/disable garbage collections of Kubernetes objects created by this Kustomization.", + "layerSelector": { + "$ref": "#/definitions/LayerSelectorDefinition", + "description": "The layer to be pulled from the OCI artifact." + }, + "verify": { + "$ref": "#/definitions/VerifyDefinition", + "description": "Verification of the authenticity of an OCI Artifact." + }, + "insecure": { "type": "boolean", + "description": "Specify whether to allow connecting to a non-TLS HTTP container registry.", "default": false }, - "force": { - "description": "Enable/disable re-creating Kubernetes resources on the cluster when patching fails due to an immutable field change.", + "useWorkloadIdentity": { "type": "boolean", + "description": "Specifies whether to use Workload Identity to authenticate with the OCI repository.", "default": false }, - "wait": { - "description": "Enable/disable health check for all Kubernetes objects created by this Kustomization.", - "type": "boolean", - "default": true + "serviceAccountName": { + "type": "string", + "description": "The service account name to authenticate with the OCI repository.", + "x-nullable": true }, - "postBuild": { - "description": "Used for variable substitution for this Kustomization after kustomize build.", - "type": "object", - "$ref": "#/definitions/PostBuildDefinition", + "tlsConfig": { + "$ref": "#/definitions/TlsConfigDefinition", + "description": "Parameters to authenticate using TLS config for OCI repository." + }, + "localAuthRef": { + "type": "string", + "description": "Name of a local secret on the Kubernetes cluster to use as the authentication secret rather than the managed or user-provided configuration secrets.", "x-nullable": true } } }, - "KustomizationPatchDefinition": { - "description": "The Kustomization defining how to reconcile the artifact pulled by the source type on the cluster.", + "OCIRepositoryPatchDefinition": { "type": "object", - "x-nullable": true, + "description": "Parameters to reconcile to the OCIRepository source kind type.", "properties": { - "path": { - "description": "The path in the source reference to reconcile on the cluster.", + "url": { "type": "string", - "x-nullable": true - }, - "dependsOn": { - "description": "Specifies other Kustomizations that this Kustomization depends on. This Kustomization will not reconcile until all dependencies have completed their reconciliation.", - "type": "array", - "items": { - "description": "Kustomization name of dependency.", - "type": "string" - }, + "format": "uri", + "description": "The URL to sync for the flux configuration OCI repository.", "x-nullable": true }, "timeoutInSeconds": { - "description": "The maximum time to attempt to reconcile the Kustomization on the cluster.", "type": "integer", "format": "int64", + "description": "The maximum time to attempt to reconcile the cluster OCI repository source with the remote.", "x-nullable": true }, "syncIntervalInSeconds": { - "description": "The interval at which to re-reconcile the Kustomization on the cluster.", "type": "integer", "format": "int64", + "description": "The interval at which to re-reconcile the cluster OCI repository source with the remote.", "x-nullable": true }, - "retryIntervalInSeconds": { - "description": "The interval at which to re-reconcile the Kustomization on the cluster in the event of failure on reconciliation.", - "type": "integer", - "format": "int64", - "x-nullable": true + "repositoryRef": { + "$ref": "#/definitions/OCIRepositoryRefPatchDefinition", + "description": "The source reference for the OCIRepository object." }, - "prune": { - "description": "Enable/disable garbage collections of Kubernetes objects created by this Kustomization.", - "type": "boolean", - "x-nullable": true + "layerSelector": { + "$ref": "#/definitions/LayerSelectorPatchDefinition", + "description": "The layer to be pulled from the OCI artifact." }, - "force": { - "description": "Enable/disable re-creating Kubernetes resources on the cluster when patching fails due to an immutable field change.", + "verify": { + "$ref": "#/definitions/VerifyPatchDefinition", + "description": "Verification of the authenticity of an OCI Artifact." + }, + "insecure": { "type": "boolean", - "x-nullable": true + "description": "Specify whether to allow connecting to a non-TLS HTTP container registry.", + "default": false }, - "wait": { - "description": "Enable/disable health check for all Kubernetes objects created by this Kustomization.", + "useWorkloadIdentity": { "type": "boolean", + "description": "Specifies whether to use Workload Identity to authenticate with the OCI repository.", + "default": false + }, + "serviceAccountName": { + "type": "string", + "description": "The service account name to authenticate with the OCI repository.", "x-nullable": true }, - "postBuild": { - "description": "Used for variable substitution for this Kustomization after kustomize build.", - "type": "object", - "$ref": "#/definitions/PostBuildPatchDefinition", + "tlsConfig": { + "$ref": "#/definitions/TlsConfigPatchDefinition", + "description": "Parameters to authenticate using TLS config for OCI repository." + }, + "localAuthRef": { + "type": "string", + "description": "Name of a local secret on the Kubernetes cluster to use as the authentication secret rather than the managed or user-provided configuration secrets.", "x-nullable": true } } }, - "KustomizationValidationDefinition": { - "description": "Specify whether to validate the Kubernetes objects referenced in the Kustomization before applying them to the cluster.", - "type": "string", - "enum": [ - "none", - "client", - "server" - ], - "default": "none", - "x-ms-enum": { - "name": "KustomizationValidationType", - "modelAsString": true - } - }, - "ObjectStatusDefinition": { - "description": "Statuses of objects deployed by the user-specified kustomizations from the git repository.", + "OCIRepositoryRefDefinition": { "type": "object", - "x-nullable": true, + "description": "The source reference for the OCIRepository object.", "properties": { - "name": { - "description": "Name of the applied object", - "type": "string" - }, - "namespace": { - "description": "Namespace of the applied object", - "type": "string" - }, - "kind": { - "description": "Kind of the applied object", - "type": "string" + "tag": { + "type": "string", + "description": "The OCI repository image tag name to pull. This defaults to 'latest'.", + "x-nullable": true }, - "complianceState": { - "description": "Compliance state of the applied object showing whether the applied object has come into a ready state on the cluster.", + "semver": { "type": "string", - "$ref": "#/definitions/FluxComplianceStateDefinition" + "description": "The semver range used to match against OCI repository tags. This takes precedence over tag.", + "x-nullable": true }, - "appliedBy": { - "description": "Object reference to the Kustomization that applied this object", - "type": "object", - "$ref": "#/definitions/ObjectReferenceDefinition", + "digest": { + "type": "string", + "description": "The image digest to pull from OCI repository, the value should be in the format ‘sha256:’. This takes precedence over semver.", + "x-nullable": true + } + } + }, + "OCIRepositoryRefPatchDefinition": { + "type": "object", + "description": "The source reference for the OCIRepository object.", + "properties": { + "tag": { + "type": "string", + "description": "The OCI repository image tag name to pull. This defaults to 'latest'.", "x-nullable": true }, - "statusConditions": { - "description": "List of Kubernetes object status conditions present on the cluster", - "type": "array", - "items": { - "type": "object", - "$ref": "#/definitions/ObjectStatusConditionDefinition" - }, - "x-nullable": true, - "x-ms-identifiers": [ - "type" - ] + "semver": { + "type": "string", + "description": "The semver range used to match against OCI repository tags. This takes precedence over tag.", + "x-nullable": true }, - "helmReleaseProperties": { - "description": "Additional properties that are provided from objects of the HelmRelease kind", - "type": "object", - "$ref": "#/definitions/HelmReleasePropertiesDefinition", + "digest": { + "type": "string", + "description": "The image digest to pull from OCI repository, the value should be in the format ‘sha256:’. This takes precedence over semver.", "x-nullable": true } } }, "ObjectReferenceDefinition": { - "description": "Object reference to a Kubernetes object on a cluster", "type": "object", - "x-nullable": true, + "description": "Object reference to a Kubernetes object on a cluster", "properties": { "name": { - "description": "Name of the object", - "type": "string" + "type": "string", + "description": "Name of the object" }, "namespace": { - "description": "Namespace of the object", - "type": "string" + "type": "string", + "description": "Namespace of the object" } } }, "ObjectStatusConditionDefinition": { - "description": "Status condition of Kubernetes object", "type": "object", + "description": "Status condition of Kubernetes object", "properties": { "lastTransitionTime": { - "description": "Last time this status condition has changed", "type": "string", - "format": "date-time" + "format": "date-time", + "description": "Last time this status condition has changed" }, "message": { - "description": "A more verbose description of the object status condition", - "type": "string" + "type": "string", + "description": "A more verbose description of the object status condition" }, "reason": { - "description": "Reason for the specified status condition type status", - "type": "string" + "type": "string", + "description": "Reason for the specified status condition type status" }, "status": { - "description": "Status of the Kubernetes object condition type", - "type": "string" + "type": "string", + "description": "Status of the Kubernetes object condition type" }, "type": { - "description": "Object status condition type for this object", - "type": "string" + "type": "string", + "description": "Object status condition type for this object" } } }, - "HelmReleasePropertiesDefinition": { - "description": "Properties for HelmRelease objects", + "ObjectStatusDefinition": { "type": "object", - "x-nullable": true, + "description": "Statuses of objects deployed by the user-specified kustomizations from the git repository.", "properties": { - "lastRevisionApplied": { - "description": "The revision number of the last released object change", - "type": "integer", - "format": "int64", - "x-nullable": true + "name": { + "type": "string", + "description": "Name of the applied object" }, - "helmChartRef": { - "description": "The reference to the HelmChart object used as the source to this HelmRelease", - "type": "object", - "$ref": "#/definitions/ObjectReferenceDefinition" + "namespace": { + "type": "string", + "description": "Namespace of the applied object" }, - "failureCount": { - "description": "Total number of times that the HelmRelease failed to install or upgrade", - "type": "integer", - "format": "int64", - "x-nullable": true + "kind": { + "type": "string", + "description": "Kind of the applied object" }, - "installFailureCount": { - "description": "Number of times that the HelmRelease failed to install", - "type": "integer", - "format": "int64", - "x-nullable": true + "complianceState": { + "type": "string", + "description": "Compliance state of the applied object showing whether the applied object has come into a ready state on the cluster.", + "default": "Unknown", + "enum": [ + "Compliant", + "Non-Compliant", + "Pending", + "Suspended", + "Unknown" + ], + "x-ms-enum": { + "name": "FluxComplianceState", + "modelAsString": true, + "values": [ + { + "name": "Compliant", + "value": "Compliant", + "description": "Compliant" + }, + { + "name": "Non-Compliant", + "value": "Non-Compliant", + "description": "Non-Compliant" + }, + { + "name": "Pending", + "value": "Pending", + "description": "Pending" + }, + { + "name": "Suspended", + "value": "Suspended", + "description": "Suspended" + }, + { + "name": "Unknown", + "value": "Unknown", + "description": "Unknown" + } + ] + } }, - "upgradeFailureCount": { - "description": "Number of times that the HelmRelease failed to upgrade", - "type": "integer", - "format": "int64", + "appliedBy": { + "$ref": "#/definitions/ObjectReferenceDefinition", + "description": "Object reference to the Kustomization that applied this object", "x-nullable": true + }, + "statusConditions": { + "type": "array", + "description": "List of Kubernetes object status conditions present on the cluster", + "x-nullable": true, + "items": { + "$ref": "#/definitions/ObjectStatusConditionDefinition" + } + }, + "helmReleaseProperties": { + "$ref": "#/definitions/HelmReleasePropertiesDefinition", + "description": "Additional properties that are provided from objects of the HelmRelease kind" } } }, - "FluxComplianceStateDefinition": { - "description": "Compliance state of the cluster object.", - "type": "string", - "enum": [ - "Compliant", - "Non-Compliant", - "Pending", - "Suspended", - "Unknown" - ], - "default": "Unknown", - "x-ms-enum": { - "name": "FluxComplianceState", - "modelAsString": true - } - }, - "FluxConfiguration": { + "OperationStatusResult": { "type": "object", - "description": "The Flux Configuration object returned in Get & Put response.", + "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", - "x-ms-client-flatten": true, - "description": "Properties to create a Flux Configuration resource", - "properties": { - "scope": { - "description": "Scope at which the operator will be installed.", - "$ref": "#/definitions/ScopeDefinition", - "x-ms-mutability": [ - "create", - "read" - ] - }, - "namespace": { - "description": "The namespace to which this configuration is installed to. Maximum of 253 lower case alphanumeric characters, hyphen and period only.", - "type": "string", - "default": "default", - "x-ms-mutability": [ - "create", - "read" - ] - }, - "sourceKind": { - "description": "Source Kind to pull the configuration data from.", - "$ref": "#/definitions/SourceKindDefinition", - "default": "GitRepository" - }, - "suspend": { - "description": "Whether this configuration should suspend its reconciliation of its kustomizations and sources.", - "type": "boolean", - "default": false - }, - "gitRepository": { - "description": "Parameters to reconcile to the GitRepository source kind type.", - "type": "object", - "$ref": "#/definitions/GitRepositoryDefinition" - }, - "bucket": { - "description": "Parameters to reconcile to the Bucket source kind type.", - "type": "object", - "$ref": "#/definitions/BucketDefinition" - }, - "azureBlob": { - "description": "Parameters to reconcile to the AzureBlob source kind type.", - "type": "object", - "$ref": "#/definitions/AzureBlobDefinition" - }, - "ociRepository": { - "description": "Parameters to reconcile to the OCIRepository source kind type.", - "type": "object", - "$ref": "#/definitions/OCIRepositoryDefinition" - }, - "kustomizations": { - "description": "Array of kustomizations used to reconcile the artifact pulled by the source type on the cluster.", - "type": "object", - "x-nullable": true, - "additionalProperties": { - "type": "object", - "$ref": "#/definitions/KustomizationDefinition" - } - }, - "configurationProtectedSettings": { - "description": "Key-value pairs of protected configuration settings for the configuration", - "type": "object", - "x-nullable": true, - "x-ms-secret": true, - "additionalProperties": { - "type": "string" - } - }, - "statuses": { - "description": "Statuses of the Flux Kubernetes resources created by the fluxConfiguration or created by the managed objects provisioned by the fluxConfiguration.", - "type": "array", - "readOnly": true, - "x-nullable": true, - "items": { - "type": "object", - "$ref": "#/definitions/ObjectStatusDefinition" - }, - "x-ms-identifiers": [ - "name", - "namespace", - "kind" - ] - }, - "repositoryPublicKey": { - "description": "Public Key associated with this fluxConfiguration (either generated within the cluster or provided by the user).", - "type": "string", - "x-nullable": true, - "readOnly": true - }, - "sourceSyncedCommitId": { - "description": "Branch and/or SHA of the source commit synced with the cluster.", - "type": "string", - "x-nullable": true, - "readOnly": true - }, - "sourceUpdatedAt": { - "description": "Datetime the fluxConfiguration synced its source on the cluster.", - "type": "string", - "format": "date-time", - "x-nullable": true, - "readOnly": true - }, - "statusUpdatedAt": { - "description": "Datetime the fluxConfiguration synced its status on the cluster with Azure.", - "type": "string", - "format": "date-time", - "x-nullable": true, - "readOnly": true - }, - "waitForReconciliation": { - "description": "Whether flux configuration deployment should wait for cluster to reconcile the kustomizations.", - "type": "boolean", - "x-nullable": true - }, - "reconciliationWaitDuration": { - "description": "Maximum duration to wait for flux configuration reconciliation. E.g PT1H, PT5M, P1D", - "type": "string", - "x-nullable": true - }, - "complianceState": { - "description": "Combined status of the Flux Kubernetes resources created by the fluxConfiguration or created by the managed objects.", - "type": "string", - "readOnly": true, - "$ref": "#/definitions/FluxComplianceStateDefinition" - }, - "provisioningState": { - "description": "Status of the creation of the fluxConfiguration.", - "type": "string", - "readOnly": true, - "$ref": "../../../common/2023-05-01-preview/definitions.json#/definitions/ProvisioningStateDefinition" - }, - "errorMessage": { - "description": "Error message returned to the user in the case of provisioning failure.", - "type": "string", - "x-nullable": true, - "readOnly": true - } + "description": "Additional information, if available.", + "additionalProperties": { + "type": "string" } }, - "systemData": { - "description": "Top level metadata https://github.com/Azure/azure-resource-manager-rpc/blob/master/v1.0/common-api-contracts.md#system-metadata-for-all-azure-resources", - "$ref": "../../../../../../common-types/resource-management/v2/types.json#/definitions/systemData" + "error": { + "$ref": "../../../../../../common-types/resource-management/v3/types.json#/definitions/ErrorDetail", + "description": "If present, details of the operation error.", + "readOnly": true } }, - "allOf": [ - { - "$ref": "../../../../../../common-types/resource-management/v2/types.json#/definitions/ProxyResource" - } + "required": [ + "status" ] }, - "FluxConfigurationPatch": { - "description": "The Flux Configuration Patch Request object.", + "OperationType": { + "type": "string", + "description": "The operation to be performed on the selected layer. The default value is 'extract', but it can be set to 'copy'.", + "enum": [ + "extract", + "copy" + ], + "x-ms-enum": { + "name": "OperationType", + "modelAsString": true, + "values": [ + { + "name": "extract", + "value": "extract", + "description": "extract" + }, + { + "name": "copy", + "value": "copy", + "description": "copy" + } + ] + } + }, + "PostBuildDefinition": { "type": "object", + "description": "The postBuild definitions defining variable substitutions for this Kustomization after kustomize build.", "properties": { - "properties": { + "substitute": { "type": "object", - "x-ms-client-flatten": true, - "description": "Updatable properties of an Flux Configuration Patch Request", - "properties": { - "sourceKind": { - "description": "Source Kind to pull the configuration data from.", - "$ref": "#/definitions/SourceKindDefinition", - "x-nullable": true - }, - "suspend": { - "description": "Whether this configuration should suspend its reconciliation of its kustomizations and sources.", - "type": "boolean", - "x-nullable": true - }, - "gitRepository": { - "description": "Parameters to reconcile to the GitRepository source kind type.", - "type": "object", - "$ref": "#/definitions/GitRepositoryPatchDefinition" - }, - "bucket": { - "description": "Parameters to reconcile to the Bucket source kind type.", - "type": "object", - "$ref": "#/definitions/BucketPatchDefinition" - }, - "azureBlob": { - "description": "Parameters to reconcile to the AzureBlob source kind type.", - "type": "object", - "$ref": "#/definitions/AzureBlobPatchDefinition" - }, - "ociRepository": { - "description": "Parameters to reconcile to the OCIRepository source kind type.", - "type": "object", - "$ref": "#/definitions/OCIRepositoryPatchDefinition" - }, - "kustomizations": { - "description": "Array of kustomizations used to reconcile the artifact pulled by the source type on the cluster.", - "type": "object", - "x-nullable": true, - "additionalProperties": { - "type": "object", - "$ref": "#/definitions/KustomizationPatchDefinition" - } - }, - "configurationProtectedSettings": { - "description": "Key-value pairs of protected configuration settings for the configuration", - "type": "object", - "x-nullable": true, - "x-ms-secret": true, - "additionalProperties": { - "type": "string" - } - } + "description": "Key/value pairs holding the variables to be substituted in this Kustomization.", + "x-nullable": true, + "additionalProperties": { + "type": "string" } + }, + "substituteFrom": { + "type": "array", + "description": "Array of ConfigMaps/Secrets from which the variables are substituted for this Kustomization.", + "items": { + "$ref": "#/definitions/SubstituteFromDefinition" + }, + "x-ms-identifiers": [] } } }, - "FluxConfigurationsList": { - "description": "Result of the request to list Flux Configurations. It contains a list of FluxConfiguration objects and a URL link to get the next set of results.", + "PostBuildPatchDefinition": { "type": "object", + "description": "The postBuild definitions defining variable substitutions for this Kustomization after kustomize build.", "properties": { - "value": { + "substitute": { + "type": "object", + "description": "Key/value pairs holding the variables to be substituted in this Kustomization.", + "x-nullable": true, + "additionalProperties": { + "type": "string" + } + }, + "substituteFrom": { "type": "array", - "readOnly": true, + "description": "Array of ConfigMaps/Secrets from which the variables are substituted for this Kustomization.", + "x-nullable": true, "items": { - "$ref": "#/definitions/FluxConfiguration" + "$ref": "#/definitions/SubstituteFromPatchDefinition" + } + } + } + }, + "ProviderType": { + "type": "string", + "description": "Name of the provider used for authentication.", + "enum": [ + "Azure", + "GitHub", + "Generic" + ], + "x-ms-enum": { + "name": "ProviderType", + "modelAsString": true, + "values": [ + { + "name": "Azure", + "value": "Azure", + "description": "Azure provider can be used to authenticate to Azure DevOps repositories using Managed Identity." + }, + { + "name": "GitHub", + "value": "GitHub", + "description": "GitHub provider can be used to authenticate" }, - "description": "List of Flux Configurations within a Kubernetes cluster." + { + "name": "Generic", + "value": "Generic", + "description": "Generic is the default provider that indicates secret-based authentication mechanism." + } + ] + } + }, + "ProvisioningState": { + "type": "string", + "description": "The provisioning state of the resource.", + "enum": [ + "Succeeded", + "Failed", + "Canceled", + "Creating", + "Updating", + "Deleting" + ], + "x-ms-enum": { + "name": "ProvisioningState", + "modelAsString": true, + "values": [ + { + "name": "Succeeded", + "value": "Succeeded", + "description": "Succeeded" + }, + { + "name": "Failed", + "value": "Failed", + "description": "Failed" + }, + { + "name": "Canceled", + "value": "Canceled", + "description": "Canceled" + }, + { + "name": "Creating", + "value": "Creating", + "description": "Creating" + }, + { + "name": "Updating", + "value": "Updating", + "description": "Updating" + }, + { + "name": "Deleting", + "value": "Deleting", + "description": "Deleting" + } + ] + } + }, + "RepositoryRefDefinition": { + "type": "object", + "description": "The source reference for the GitRepository object.", + "properties": { + "branch": { + "type": "string", + "description": "The git repository branch name to checkout.", + "x-nullable": true }, - "nextLink": { + "tag": { + "type": "string", + "description": "The git repository tag name to checkout. This takes precedence over branch.", + "x-nullable": true + }, + "semver": { "type": "string", - "readOnly": true, - "description": "URL to get the next set of configuration objects, if any." + "description": "The semver range used to match against git repository tags. This takes precedence over tag.", + "x-nullable": true + }, + "commit": { + "type": "string", + "description": "The commit SHA to checkout. This value must be combined with the branch name to be valid. This takes precedence over semver.", + "x-nullable": true } } - } - }, - "parameters": { - "FluxConfigurationNameParameter": { - "name": "fluxConfigurationName", - "in": "path", - "description": "Name of the Flux Configuration.", - "required": true, + }, + "ScopeType": { "type": "string", - "x-ms-parameter-location": "method" + "description": "Scope at which the configuration will be installed.", + "enum": [ + "cluster", + "namespace" + ], + "x-ms-enum": { + "name": "ScopeType", + "modelAsString": true, + "values": [ + { + "name": "cluster", + "value": "cluster", + "description": "cluster" + }, + { + "name": "namespace", + "value": "namespace", + "description": "namespace" + } + ] + } + }, + "ServicePrincipalDefinition": { + "type": "object", + "description": "Parameters to authenticate using Service Principal.", + "properties": { + "clientId": { + "type": "string", + "description": "The client Id for authenticating a Service Principal.", + "x-nullable": true + }, + "tenantId": { + "type": "string", + "description": "The tenant Id for authenticating a Service Principal", + "x-nullable": true + }, + "clientSecret": { + "type": "string", + "format": "password", + "description": "The client secret for authenticating a Service Principal", + "x-nullable": true, + "x-ms-secret": true + }, + "clientCertificate": { + "type": "string", + "format": "password", + "description": "Base64-encoded certificate used to authenticate a Service Principal", + "x-nullable": true, + "x-ms-secret": true + }, + "clientCertificatePassword": { + "type": "string", + "format": "password", + "description": "The password for the certificate used to authenticate a Service Principal", + "x-nullable": true, + "x-ms-secret": true + }, + "clientCertificateSendChain": { + "type": "boolean", + "description": "Specifies whether to include x5c header in client claims when acquiring a token to enable subject name / issuer based authentication for the Client Certificate", + "default": false + } + } + }, + "ServicePrincipalPatchDefinition": { + "type": "object", + "description": "Parameters to authenticate using Service Principal.", + "properties": { + "clientId": { + "type": "string", + "description": "The client Id for authenticating a Service Principal.", + "x-nullable": true + }, + "tenantId": { + "type": "string", + "description": "The tenant Id for authenticating a Service Principal", + "x-nullable": true + }, + "clientSecret": { + "type": "string", + "format": "password", + "description": "The client secret for authenticating a Service Principal", + "x-nullable": true, + "x-ms-secret": true + }, + "clientCertificate": { + "type": "string", + "format": "password", + "description": "Base64-encoded certificate used to authenticate a Service Principal", + "x-ms-secret": true + }, + "clientCertificatePassword": { + "type": "string", + "format": "password", + "description": "The password for the certificate used to authenticate a Service Principal", + "x-nullable": true, + "x-ms-secret": true + }, + "clientCertificateSendChain": { + "type": "boolean", + "description": "Specifies whether to include x5c header in client claims when acquiring a token to enable subject name / issuer based authentication for the Client Certificate" + } + } + }, + "SourceKindType": { + "type": "string", + "description": "Source Kind to pull the configuration data from.", + "enum": [ + "GitRepository", + "Bucket", + "AzureBlob", + "OCIRepository" + ], + "x-ms-enum": { + "name": "SourceKindType", + "modelAsString": true, + "values": [ + { + "name": "GitRepository", + "value": "GitRepository", + "description": "GitRepository" + }, + { + "name": "Bucket", + "value": "Bucket", + "description": "Bucket" + }, + { + "name": "AzureBlob", + "value": "AzureBlob", + "description": "AzureBlob" + }, + { + "name": "OCIRepository", + "value": "OCIRepository", + "description": "OCIRepository" + } + ] + } + }, + "SubstituteFromDefinition": { + "type": "object", + "description": "Array of ConfigMaps/Secrets from which the variables are substituted for this Kustomization.", + "properties": { + "kind": { + "type": "string", + "description": "Define whether it is ConfigMap or Secret that holds the variables to be used in substitution." + }, + "name": { + "type": "string", + "description": "Name of the ConfigMap/Secret that holds the variables to be used in substitution." + }, + "optional": { + "type": "boolean", + "description": "Set to True to proceed without ConfigMap/Secret, if it is not present.", + "default": false + } + } + }, + "SubstituteFromPatchDefinition": { + "type": "object", + "description": "Array of ConfigMaps/Secrets from which the variables are substituted for this Kustomization.", + "properties": { + "kind": { + "type": "string", + "description": "Define whether it is ConfigMap or Secret that holds the variables to be used in substitution." + }, + "name": { + "type": "string", + "description": "Name of the ConfigMap/Secret that holds the variables to be used in substitution." + }, + "optional": { + "type": "boolean", + "description": "Set to True to proceed without ConfigMap/Secret, if it is not present.", + "default": false + } + } + }, + "TlsConfigDefinition": { + "type": "object", + "description": "Parameters to authenticate using TLS config for OCI repository.", + "properties": { + "clientCertificate": { + "type": "string", + "format": "password", + "description": "Base64-encoded certificate used to authenticate a client with the OCI repository.", + "x-nullable": true, + "x-ms-secret": true + }, + "privateKey": { + "type": "string", + "format": "password", + "description": "Base64-encoded private key used to authenticate a client with the OCI repository.", + "x-nullable": true, + "x-ms-secret": true + }, + "caCertificate": { + "type": "string", + "format": "password", + "description": "Base64-encoded CA certificate used to verify the server.", + "x-nullable": true, + "x-ms-secret": true + } + } + }, + "TlsConfigPatchDefinition": { + "type": "object", + "description": "Parameters to authenticate using TLS config for OCI repository.", + "properties": { + "clientCertificate": { + "type": "string", + "format": "password", + "description": "Base64-encoded certificate used to authenticate a client with the OCI repository.", + "x-nullable": true, + "x-ms-secret": true + }, + "privateKey": { + "type": "string", + "format": "password", + "description": "Base64-encoded private key used to authenticate a client with the OCI repository.", + "x-nullable": true, + "x-ms-secret": true + }, + "caCertificate": { + "type": "string", + "format": "password", + "description": "Base64-encoded CA certificate used to verify the server.", + "x-nullable": true, + "x-ms-secret": true + } + } + }, + "VerifyDefinition": { + "type": "object", + "description": "Parameters to verify the authenticity of an OCI Artifact.", + "properties": { + "provider": { + "type": "string", + "description": "Verification provider name." + }, + "verificationConfig": { + "type": "object", + "description": "An object containing trusted public keys of trusted authors.", + "x-nullable": true, + "additionalProperties": { + "type": "string" + } + }, + "matchOidcIdentity": { + "type": "array", + "description": "Array defining the criteria for matching the identity while verifying an OCI artifact.", + "x-nullable": true, + "items": { + "$ref": "#/definitions/MatchOidcIdentityDefinition" + } + } + } + }, + "VerifyPatchDefinition": { + "type": "object", + "description": "Parameters to verify the authenticity of an OCI Artifact.", + "properties": { + "provider": { + "type": "string", + "description": "Verification provider name." + }, + "verificationConfig": { + "type": "object", + "description": "An object containing trusted public keys of trusted authors.", + "x-nullable": true, + "additionalProperties": { + "type": "string" + } + }, + "matchOidcIdentity": { + "type": "array", + "description": "Array defining the criteria for matching the OIDC identity while verifying an OCI artifact.", + "x-nullable": true, + "items": { + "$ref": "#/definitions/MatchOidcIdentityPatchDefinition" + } + } + } } - } + }, + "parameters": {} } diff --git a/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/fluxConfigurations/tspconfig.yaml b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/fluxConfigurations/tspconfig.yaml new file mode 100644 index 000000000000..f1f870d4d4f2 --- /dev/null +++ b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/fluxConfigurations/tspconfig.yaml @@ -0,0 +1,47 @@ +parameters: + "service-dir": + default: "sdk/fluxconfigurations" +emit: + - "@azure-tools/typespec-autorest" +options: + "@azure-tools/typespec-autorest": + omit-unreachable-types: false + emitter-output-dir: "{project-root}" + azure-resource-provider-folder: "resource-manager" + output-file: "{version-status}/{version}/fluxconfiguration.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-fluxconfigurations" + namespace: "azure.mgmt.kubernetesconfiguration.fluxconfigurations" + 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-fluxconfigurations" + namespace: "com.azure.resourcemanager.kubernetesconfiguration.fluxconfigurations" + service-name: "FluxConfig" # human-readable service name, whitespace allowed + flavor: azure + "@azure-tools/typespec-ts": + service-dir: sdk/kubernetesconfiguration + emitter-output-dir: "{output-dir}/{service-dir}/arm-kubernetesconfiguration-fluxconfigurations" + flavor: "azure" + experimental-extensible-enums: true + package-details: + name: "@azure/arm-kubernetesconfiguration-fluxconfigurations" + "@azure-tools/typespec-go": + service-dir: "sdk/resourcemanager/kubernetesconfiguration" + emitter-output-dir: "{output-dir}/{service-dir}/armfluxconfigurations" + module: "github.com/Azure/azure-sdk-for-go/{service-dir}/armfluxconfigurations" + fix-const-stuttering: true + flavor: "azure" + generate-samples: true + generate-fakes: true + head-as-boolean: true + inject-spans: true +linter: + extends: + - "@azure-tools/typespec-azure-rulesets/resource-manager" diff --git a/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/operations/back-compatible.tsp b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/operations/back-compatible.tsp new file mode 100644 index 000000000000..7f3b0edb18fd --- /dev/null +++ b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/operations/back-compatible.tsp @@ -0,0 +1,6 @@ +import "@azure-tools/typespec-client-generator-core"; + +using Azure.ClientGenerator.Core; +using Microsoft.KubernetesConfiguration; + +@@clientLocation(OperationStatusOperationGroup.list, "OperationStatus"); diff --git a/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/operations/examples/2025-04-01/ListAsyncOperationStatus.json b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/operations/examples/2025-04-01/ListAsyncOperationStatus.json new file mode 100644 index 000000000000..2aed71b9b35e --- /dev/null +++ b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/operations/examples/2025-04-01/ListAsyncOperationStatus.json @@ -0,0 +1,35 @@ +{ + "parameters": { + "api-version": "2025-04-01", + "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/2025-04-01/OperationsList.json b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/operations/examples/2025-04-01/OperationsList.json new file mode 100644 index 000000000000..45de394596d5 --- /dev/null +++ b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/operations/examples/2025-04-01/OperationsList.json @@ -0,0 +1,158 @@ +{ + "parameters": { + "api-version": "2025-04-01" + }, + "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 new file mode 100644 index 000000000000..5d9b20ff2490 --- /dev/null +++ b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/operations/main.tsp @@ -0,0 +1,51 @@ +/** + * PLEASE DO NOT REMOVE - USED FOR CONVERTER METRICS + * Generated by package: @autorest/openapi-to-typespec + * Parameters used: + * isFullCompatible: true + * guessResourceKey: false + * Version: 0.11.12 + * Date: 2026-01-08T07:23:46.567Z + */ +import "@typespec/rest"; +import "@typespec/versioning"; +import "@azure-tools/typespec-azure-core"; +import "@azure-tools/typespec-azure-resource-manager"; +import "./models.tsp"; +import "./back-compatible.tsp"; +import "./routes.tsp"; + +using TypeSpec.Rest; +using TypeSpec.Http; +using Azure.ResourceManager.Foundations; +using Azure.Core; +using Azure.ResourceManager; +using TypeSpec.Versioning; +/** + * Use these APIs to create extension resources through ARM, for Kubernetes Clusters. + */ +@armProviderNamespace +@service(#{ title: "OperationsClient" }) +@versioned(Versions) +// FIXME: Common type version v2 is not supported for now. Set to v3. +@armCommonTypesVersion(Azure.ResourceManager.CommonTypes.Versions.v3) +namespace Microsoft.KubernetesConfiguration; + +/** + * The available API versions. + */ +enum Versions { + /** + * The 2025-04-01 API version. + */ + v2025_04_01: "2025-04-01", +} + +interface Operations + extends Azure.ResourceManager.Legacy.Operations< + ArmResponse, + ErrorResponse + > {} +@@doc(Operations.list, + "List all the available operations the KubernetesConfiguration resource provider supports." +); diff --git a/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/operations/models.tsp b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/operations/models.tsp new file mode 100644 index 000000000000..a320fe4bcaef --- /dev/null +++ b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/operations/models.tsp @@ -0,0 +1,121 @@ +import "@typespec/rest"; +import "@typespec/http"; +import "@azure-tools/typespec-azure-core"; +import "@azure-tools/typespec-azure-resource-manager"; + +using TypeSpec.Rest; +using TypeSpec.Http; +using Azure.ResourceManager; +using Azure.ResourceManager.Foundations; + +namespace Microsoft.KubernetesConfiguration; + +/** + * Result of the request to list operations. + */ +model ResourceProviderOperationList { + /** + * List of operations supported by this resource provider. + */ + @visibility(Lifecycle.Read) + @identifiers(#["name"]) + @pageItems + value: ResourceProviderOperation[]; + + /** + * URL to the next set of results, if any. + */ + @nextLink + @visibility(Lifecycle.Read) + nextLink?: string; +} + +/** + * The async operations in progress, in the cluster. + */ +model OperationStatusList is Azure.Core.Page; + +/** + * The current status of an async operation. + */ +model OperationStatusResult { + /** + * Fully qualified ID for the async operation. + */ + id?: string; + + /** + * Name of the async operation. + */ + name?: string; + + /** + * Operation status. + */ + status: string; + + /** + * Additional information, if available. + */ + #suppress "@azure-tools/typespec-azure-resource-manager/arm-no-record" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + #suppress "@azure-tools/typespec-azure-core/no-nullable" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + properties?: Record | null; + + /** + * If present, details of the operation error. + */ + @visibility(Lifecycle.Read) + error?: Azure.ResourceManager.CommonTypes.ErrorDetail; +} + +/** + * Supported operation of this resource provider. + */ +model ResourceProviderOperation { + /** + * Operation name, in format of {provider}/{resource}/{operation} + */ + name?: string; + + /** + * Display metadata associated with the operation. + */ + display?: ResourceProviderOperationDisplay; + + /** + * The flag that indicates whether the operation applies to data plane. + */ + @visibility(Lifecycle.Read) + isDataAction?: boolean; + + /** + * Origin of the operation + */ + @visibility(Lifecycle.Read) + origin?: string; +} + +/** + * Display metadata associated with the operation. + */ +model ResourceProviderOperationDisplay { + /** + * Resource provider: Microsoft KubernetesConfiguration. + */ + provider?: string; + + /** + * Resource on which the operation is performed. + */ + resource?: string; + + /** + * Type of operation: get, read, delete, etc. + */ + operation?: string; + + /** + * Description of this operation. + */ + description?: string; +} diff --git a/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/operations/routes.tsp b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/operations/routes.tsp new file mode 100644 index 000000000000..ef71b20a27cc --- /dev/null +++ b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/operations/routes.tsp @@ -0,0 +1,67 @@ +// FIXME: Operations in this file are not detected as a resource operation, please confirm the conversion result manually + +import "@azure-tools/typespec-azure-core"; +import "@typespec/rest"; +import "./models.tsp"; +import "@azure-tools/typespec-azure-resource-manager"; +import "@typespec/openapi"; + +using TypeSpec.Rest; +using TypeSpec.Http; +using Azure.ResourceManager; +using TypeSpec.OpenAPI; + +namespace Microsoft.KubernetesConfiguration; + +alias OperationStatusOperationGroupOps = Azure.ResourceManager.Legacy.ExtensionOperations< + { + ...ApiVersionParameter; + ...SubscriptionIdParameter; + ...ResourceGroupParameter; + + /** + * The Kubernetes cluster RP - i.e. Microsoft.ContainerService, Microsoft.Kubernetes, Microsoft.HybridContainerService. + */ + @path + @segment("providers") + @key + clusterRp: string; + + /** + * The Kubernetes cluster resource name - i.e. managedClusters, connectedClusters, provisionedClusters, appliances. + */ + @key + @path + clusterResourceName: string; + + /** + * The name of the kubernetes cluster. + */ + @key + @path + clusterName: string; + }, + { + #suppress "@azure-tools/typespec-azure-core/documentation-required" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + @path + @key + @segment("providers") + providers: "Microsoft.KubernetesConfiguration"; + }, + {} +>; + +#suppress "@azure-tools/typespec-azure-resource-manager/arm-resource-interface-requires-decorator" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" +interface OperationStatusOperationGroup { + /** + * List Async Operations, currently in progress, in a cluster + */ + @tag("Operations in a Cluster") + @autoRoute + @get + @action("operations") + list is OperationStatusOperationGroupOps.List< + {}, + Response = OperationStatusList + >; +} diff --git a/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/operations/stable/2025-04-01/examples/ListAsyncOperationStatus.json b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/operations/stable/2025-04-01/examples/ListAsyncOperationStatus.json index 38f7d8e213b1..2aed71b9b35e 100644 --- a/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/operations/stable/2025-04-01/examples/ListAsyncOperationStatus.json +++ b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/operations/stable/2025-04-01/examples/ListAsyncOperationStatus.json @@ -1,33 +1,35 @@ { "parameters": { - "subscriptionId": "subId1", - "resourceGroupName": "rg1", - "clusterRp": "Microsoft.Kubernetes", - "clusterResourceName": "connectedClusters", "api-version": "2025-04-01", - "clusterName": "clusterName1" + "clusterName": "clusterName1", + "clusterResourceName": "connectedClusters", + "clusterRp": "Microsoft.Kubernetes", + "resourceGroupName": "rg1", + "subscriptionId": "subId1" }, "responses": { "200": { "body": { + "nextLink": null, "value": [ { - "id": "/subscriptions/subId1/resourceGroups/rg1/providers/Microsoft.Kubernetes/connectedClusters/clusterName1/providers/Microsoft.KubernetesConfiguration/extensions/ClusterMonitor/operations/99999999-9999-9999-9999-999999999999", "name": "99999999-9999-9999-9999-999999999999", - "status": "Deleting", + "error": null, + "id": "/subscriptions/subId1/resourceGroups/rg1/providers/Microsoft.Kubernetes/connectedClusters/clusterName1/providers/Microsoft.KubernetesConfiguration/extensions/ClusterMonitor/operations/99999999-9999-9999-9999-999999999999", "properties": {}, - "error": null + "status": "Deleting" }, { - "id": "/subscriptions/subId1/resourceGroups/rg1/providers/Microsoft.Kubernetes/connectedClusters/clusterName1/providers/Microsoft.KubernetesConfiguration/extensions/cassandraExtension1/operations/88888888-8888-8888-8888-888888888888", "name": "88888888-8888-8888-8888-888888888888", - "status": "Creating", + "error": null, + "id": "/subscriptions/subId1/resourceGroups/rg1/providers/Microsoft.Kubernetes/connectedClusters/clusterName1/providers/Microsoft.KubernetesConfiguration/extensions/cassandraExtension1/operations/88888888-8888-8888-8888-888888888888", "properties": {}, - "error": null + "status": "Creating" } - ], - "nextLink": null + ] } } - } + }, + "operationId": "OperationStatus_List", + "title": "AsyncOperationStatus List" } diff --git a/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/operations/stable/2025-04-01/examples/OperationsList.json b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/operations/stable/2025-04-01/examples/OperationsList.json index d3b70ad2ba65..45de394596d5 100644 --- a/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/operations/stable/2025-04-01/examples/OperationsList.json +++ b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/operations/stable/2025-04-01/examples/OperationsList.json @@ -9,10 +9,10 @@ { "name": "Microsoft.KubernetesConfiguration/sourceControlConfigurations/write", "display": { - "operation": "Microsoft.KubernetesConfiguration/sourceControlConfigurations/write", - "resource": "Microsoft.KubernetesConfiguration/sourceControlConfigurations", "description": "Creates or updates source control configuration.", - "provider": "Microsoft Kubernetes Configuration" + "operation": "Microsoft.KubernetesConfiguration/sourceControlConfigurations/write", + "provider": "Microsoft Kubernetes Configuration", + "resource": "Microsoft.KubernetesConfiguration/sourceControlConfigurations" }, "isDataAction": false, "origin": "user,system" @@ -20,10 +20,10 @@ { "name": "Microsoft.KubernetesConfiguration/sourceControlConfigurations/read", "display": { - "operation": "Microsoft.KubernetesConfiguration/sourceControlConfigurations/read", - "resource": "Microsoft.KubernetesConfiguration/sourceControlConfigurations", "description": "Gets source control configuration.", - "provider": "Microsoft Kubernetes Configuration" + "operation": "Microsoft.KubernetesConfiguration/sourceControlConfigurations/read", + "provider": "Microsoft Kubernetes Configuration", + "resource": "Microsoft.KubernetesConfiguration/sourceControlConfigurations" }, "isDataAction": false, "origin": "user,system" @@ -31,10 +31,10 @@ { "name": "Microsoft.KubernetesConfiguration/sourceControlConfigurations/delete", "display": { - "operation": "Microsoft.KubernetesConfiguration/sourceControlConfigurations/delete", - "resource": "Microsoft.KubernetesConfiguration/sourceControlConfigurations", "description": "Deletes source control configuration.", - "provider": "Microsoft Kubernetes Configuration" + "operation": "Microsoft.KubernetesConfiguration/sourceControlConfigurations/delete", + "provider": "Microsoft Kubernetes Configuration", + "resource": "Microsoft.KubernetesConfiguration/sourceControlConfigurations" }, "isDataAction": false, "origin": "user,system" @@ -42,10 +42,10 @@ { "name": "Microsoft.KubernetesConfiguration/extensions/read", "display": { - "provider": "Microsoft KubernetesConfiguration", - "resource": "extensions", + "description": "Get the specified Extension.", "operation": "Get extension", - "description": "Get the specified Extension." + "provider": "Microsoft KubernetesConfiguration", + "resource": "extensions" }, "isDataAction": false, "origin": "user,system" @@ -53,10 +53,10 @@ { "name": "Microsoft.KubernetesConfiguration/extensions/write", "display": { - "provider": "Microsoft KubernetesConfiguration", - "resource": "extensions", + "description": "Create the Extension specified.", "operation": "Create a Extension", - "description": "Create the Extension specified." + "provider": "Microsoft KubernetesConfiguration", + "resource": "extensions" }, "isDataAction": false, "origin": "user,system" @@ -64,10 +64,10 @@ { "name": "Microsoft.KubernetesConfiguration/extensions/delete", "display": { - "provider": "Microsoft KubernetesConfiguration", - "resource": "extensions", + "description": "Delete the specified Extension.", "operation": "Delete Extension", - "description": "Delete the specified Extension." + "provider": "Microsoft KubernetesConfiguration", + "resource": "extensions" }, "isDataAction": false, "origin": "user,system" @@ -75,10 +75,10 @@ { "name": "Microsoft.KubernetesConfiguration/extensions/operations/read", "display": { - "provider": "Microsoft KubernetesConfiguration", - "resource": "extensions", + "description": "Get the Status of the Extension Async Operation.", "operation": "Get Extension Async Operation Status", - "description": "Get the Status of the Extension Async Operation." + "provider": "Microsoft KubernetesConfiguration", + "resource": "extensions" }, "isDataAction": false, "origin": "user,system" @@ -86,10 +86,10 @@ { "name": "Microsoft.KubernetesConfiguration/fluxConfigurations/read", "display": { - "provider": "Microsoft KubernetesConfiguration", - "resource": "fluxConfigurations", + "description": "Get the specified Flux Configuration.", "operation": "Get fluxConfiguration", - "description": "Get the specified Flux Configuration." + "provider": "Microsoft KubernetesConfiguration", + "resource": "fluxConfigurations" }, "isDataAction": false, "origin": "user,system" @@ -97,10 +97,10 @@ { "name": "Microsoft.KubernetesConfiguration/fluxConfigurations/write", "display": { - "provider": "Microsoft KubernetesConfiguration", - "resource": "fluxConfigurations", + "description": "Create the Flux Configuration specified.", "operation": "Create a fluxConfiguration", - "description": "Create the Flux Configuration specified." + "provider": "Microsoft KubernetesConfiguration", + "resource": "fluxConfigurations" }, "isDataAction": false, "origin": "user,system" @@ -108,10 +108,10 @@ { "name": "Microsoft.KubernetesConfiguration/fluxConfigurations/delete", "display": { - "provider": "Microsoft KubernetesConfiguration", - "resource": "fluxConfigurations", + "description": "Delete the specified Flux Configuration.", "operation": "Delete Flux Configuration", - "description": "Delete the specified Flux Configuration." + "provider": "Microsoft KubernetesConfiguration", + "resource": "fluxConfigurations" }, "isDataAction": false, "origin": "user,system" @@ -119,10 +119,10 @@ { "name": "Microsoft.KubernetesConfiguration/fluxConfigurations/operations/read", "display": { - "provider": "Microsoft KubernetesConfiguration", - "resource": "fluxConfigurations", + "description": "Get the Status of the Flux Configuration Async Operation.", "operation": "Get Flux Configuration Async Operation Status", - "description": "Get the Status of the Flux Configuration Async Operation." + "provider": "Microsoft KubernetesConfiguration", + "resource": "fluxConfigurations" }, "isDataAction": false, "origin": "user,system" @@ -130,10 +130,10 @@ { "name": "Microsoft.KubernetesConfiguration/register/action", "display": { - "operation": "Microsoft.KubernetesConfiguration/register/action", - "resource": "Register", "description": "Registers subscription to Microsoft.KubernetesConfiguration resource provider.", - "provider": "Microsoft Kubernetes Configuration" + "operation": "Microsoft.KubernetesConfiguration/register/action", + "provider": "Microsoft Kubernetes Configuration", + "resource": "Register" }, "isDataAction": false, "origin": "user,system" @@ -141,10 +141,10 @@ { "name": "Microsoft.KubernetesConfiguration/extensionTypes/read", "display": { - "operation": "Microsoft.KubernetesConfiguration/extensionTypes/read", - "resource": "extensionTypes", "description": "Get Kubernetes Configuration Available Extensions", - "provider": "Microsoft KubernetesConfiguration" + "operation": "Microsoft.KubernetesConfiguration/extensionTypes/read", + "provider": "Microsoft KubernetesConfiguration", + "resource": "extensionTypes" }, "isDataAction": false, "origin": "user,system" @@ -152,5 +152,7 @@ ] } } - } + }, + "operationId": "Operations_List", + "title": "BatchAccountDelete" } diff --git a/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/operations/stable/2025-04-01/operations.json b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/operations/stable/2025-04-01/operations.json index 9ab5f8b81ce6..ec57aaa5b9a9 100644 --- a/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/operations/stable/2025-04-01/operations.json +++ b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/operations/stable/2025-04-01/operations.json @@ -1,18 +1,23 @@ { "swagger": "2.0", "info": { - "version": "2025-04-01", "title": "OperationsClient", - "description": "Use these APIs to create extension resources through ARM, for Kubernetes Clusters." + "version": "2025-04-01", + "description": "Use these APIs to create extension resources through ARM, for Kubernetes Clusters.", + "x-typespec-generated": [ + { + "emitter": "@azure-tools/typespec-autorest" + } + ] }, - "host": "management.azure.com", "schemes": [ "https" ], - "consumes": [ + "host": "management.azure.com", + "produces": [ "application/json" ], - "produces": [ + "consumes": [ "application/json" ], "security": [ @@ -25,103 +30,250 @@ "securityDefinitions": { "azure_auth": { "type": "oauth2", - "authorizationUrl": "https://login.microsoftonline.com/common/oauth2/authorize", + "description": "Azure Active Directory OAuth2 Flow.", "flow": "implicit", - "description": "Azure Active Directory OAuth2 Flow", + "authorizationUrl": "https://login.microsoftonline.com/common/oauth2/authorize", "scopes": { "user_impersonation": "impersonate your user account" } } }, + "tags": [ + { + "name": "Operations" + }, + { + "name": "Operations in a Cluster" + } + ], "paths": { - "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{clusterRp}/{clusterResourceName}/{clusterName}/providers/Microsoft.KubernetesConfiguration/operations": { + "/providers/Microsoft.KubernetesConfiguration/operations": { "get": { + "operationId": "Operations_List", "tags": [ - "Operations in a Cluster" + "Operations" ], - "operationId": "OperationStatus_List", - "description": "List Async Operations, currently in progress, in a cluster", - "x-ms-examples": { - "AsyncOperationStatus List": { - "$ref": "./examples/ListAsyncOperationStatus.json" - } - }, + "description": "List all the available operations the KubernetesConfiguration resource provider supports.", "parameters": [ { - "$ref": "../../../../../../common-types/resource-management/v2/types.json#/parameters/SubscriptionIdParameter" - }, - { - "$ref": "../../../../../../common-types/resource-management/v2/types.json#/parameters/ResourceGroupNameParameter" - }, - { - "$ref": "../../../common/2022-03-01/parameters.json#/parameters/ClusterRpParameter" - }, - { - "$ref": "../../../common/2022-03-01/parameters.json#/parameters/ClusterResourceNameParameter" - }, - { - "$ref": "../../../common/2022-03-01/parameters.json#/parameters/ClusterNameParameter" - }, - { - "$ref": "../../../../../../common-types/resource-management/v2/types.json#/parameters/ApiVersionParameter" + "$ref": "../../../../../../common-types/resource-management/v3/types.json#/parameters/ApiVersionParameter" } ], "responses": { "200": { - "description": "Operations in a cluster", + "description": "Azure operation completed successfully.", "schema": { - "$ref": "../../../common/2022-03-01/definitions.json#/definitions/OperationStatusList" + "$ref": "#/definitions/ResourceProviderOperationList" } }, "default": { - "description": "Error response describing why the operation failed.", + "description": "An unexpected error response.", "schema": { - "$ref": "../../../../../../common-types/resource-management/v2/types.json#/definitions/ErrorResponse" + "$ref": "../../../../../../common-types/resource-management/v3/types.json#/definitions/ErrorResponse" } } }, + "x-ms-examples": { + "BatchAccountDelete": { + "$ref": "./examples/OperationsList.json" + } + }, "x-ms-pageable": { "nextLinkName": "nextLink" } } }, - "/providers/Microsoft.KubernetesConfiguration/operations": { + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{clusterRp}/{clusterResourceName}/{clusterName}/providers/Microsoft.KubernetesConfiguration/operations": { "get": { + "operationId": "OperationStatus_List", "tags": [ - "Operations" + "Operations in a Cluster" ], - "operationId": "Operations_List", - "x-ms-examples": { - "BatchAccountDelete": { - "$ref": "./examples/OperationsList.json" - } - }, - "description": "List all the available operations the KubernetesConfiguration resource provider supports.", + "description": "List Async Operations, currently in progress, in a cluster", "parameters": [ { - "$ref": "../../../../../../common-types/resource-management/v2/types.json#/parameters/ApiVersionParameter" + "$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": "OK response definition.", + "description": "The request has succeeded.", "schema": { - "$ref": "../../../common/2023-05-01-preview/definitions.json#/definitions/ResourceProviderOperationList" + "$ref": "#/definitions/OperationStatusList" } }, "default": { - "description": "Error response describing why the operation failed.", + "description": "An unexpected error response.", "schema": { - "$ref": "../../../../../../common-types/resource-management/v2/types.json#/definitions/ErrorResponse" + "$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": {}, + "definitions": { + "OperationStatusList": { + "type": "object", + "description": "The async operations in progress, in the cluster.", + "properties": { + "value": { + "type": "array", + "description": "The OperationStatusResult items on this page", + "items": { + "$ref": "#/definitions/OperationStatusResult" + } + }, + "nextLink": { + "type": "string", + "format": "uri", + "description": "The link to the next page of items" + } + }, + "required": [ + "value" + ] + }, + "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.", + "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 + } + }, + "required": [ + "value" + ] + } + }, "parameters": {} } diff --git a/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/operations/tspconfig.yaml b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/operations/tspconfig.yaml new file mode 100644 index 000000000000..d86afdd776f0 --- /dev/null +++ b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/operations/tspconfig.yaml @@ -0,0 +1,14 @@ +emit: + - "@azure-tools/typespec-autorest" +options: + "@azure-tools/typespec-autorest": + omit-unreachable-types: true + emitter-output-dir: "{project-root}" + azure-resource-provider-folder: "resource-manager" + output-file: "{version-status}/{version}/operations.json" + arm-types-dir: "{project-root}/../../../../common-types/resource-management" + emit-lro-options: "all" + examples-dir: "{project-root}/examples" +linter: + extends: + - "@azure-tools/typespec-azure-rulesets/resource-manager" diff --git a/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/privateLinkScopes/KubernetesConfigurationPrivateLinkScope.tsp b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/privateLinkScopes/KubernetesConfigurationPrivateLinkScope.tsp new file mode 100644 index 000000000000..8285d1c50521 --- /dev/null +++ b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/privateLinkScopes/KubernetesConfigurationPrivateLinkScope.tsp @@ -0,0 +1,74 @@ +import "@azure-tools/typespec-azure-core"; +import "@azure-tools/typespec-azure-resource-manager"; +import "@typespec/openapi"; +import "@typespec/rest"; +import "./models.tsp"; + +using TypeSpec.Rest; +using Azure.ResourceManager; +using TypeSpec.Http; +using TypeSpec.OpenAPI; + +namespace Microsoft.KubernetesConfiguration; +/** + * An Azure Arc PrivateLinkScope definition. + */ +model KubernetesConfigurationPrivateLinkScope + is Azure.ResourceManager.TrackedResource { + ...ResourceNameParameter< + Resource = KubernetesConfigurationPrivateLinkScope, + KeyName = "scopeName", + SegmentName = "privateLinkScopes", + NamePattern = "" + >; +} + +@armResourceOperations(#{ omitTags: true }) +interface KubernetesConfigurationPrivateLinkScopes { + /** + * Returns a Azure Arc PrivateLinkScope. + */ + get is ArmResourceRead; + + /** + * Creates (or updates) a Azure Arc PrivateLinkScope. Note: You cannot specify a different value for InstrumentationKey nor AppId in the Put operation. + */ + createOrUpdate is ArmResourceCreateOrReplaceSync; + + /** + * Updates an existing PrivateLinkScope's tags. To update other fields use the CreateOrUpdate method. + */ + @patch(#{ implicitOptionality: false }) + updateTags is ArmCustomPatchSync< + KubernetesConfigurationPrivateLinkScope, + PatchModel = TagsResource + >; + + /** + * Deletes a Azure Arc PrivateLinkScope. + */ + delete is ArmResourceDeleteSync; + + /** + * Gets a list of Azure Arc PrivateLinkScopes within a resource group. + */ + listByResourceGroup is ArmResourceListByParent; + + /** + * Gets a list of all Azure Arc PrivateLinkScopes within a subscription. + */ + list is ArmListBySubscription; +} + +@@doc(KubernetesConfigurationPrivateLinkScope.name, + "The name of the Azure Arc PrivateLinkScope resource." +); +@@doc(KubernetesConfigurationPrivateLinkScope.properties, + "Properties that define a Azure Arc PrivateLinkScope resource." +); +@@doc(KubernetesConfigurationPrivateLinkScopes.createOrUpdate::parameters.resource, + "Properties that need to be specified to create or update a Azure Arc for Servers and Clusters PrivateLinkScope." +); +@@doc(KubernetesConfigurationPrivateLinkScopes.updateTags::parameters.properties, + "Updated tag information to set into the PrivateLinkScope instance." +); diff --git a/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/privateLinkScopes/PrivateEndpointConnection.tsp b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/privateLinkScopes/PrivateEndpointConnection.tsp new file mode 100644 index 000000000000..23f65a07c4ac --- /dev/null +++ b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/privateLinkScopes/PrivateEndpointConnection.tsp @@ -0,0 +1,62 @@ +import "@azure-tools/typespec-azure-core"; +import "@azure-tools/typespec-azure-resource-manager"; +import "@typespec/openapi"; +import "@typespec/rest"; +import "./models.tsp"; +import "./KubernetesConfigurationPrivateLinkScope.tsp"; + +using TypeSpec.Rest; +using Azure.ResourceManager; +using TypeSpec.Http; +using TypeSpec.OpenAPI; + +namespace Microsoft.KubernetesConfiguration; +/** + * The Private Endpoint Connection resource. + */ +@parentResource(KubernetesConfigurationPrivateLinkScope) +model PrivateEndpointConnection is PrivateEndpointConnectionResource; +alias PrivateEndpointOperations = PrivateEndpoints; + +@armResourceOperations +interface PrivateEndpointConnections { + /** + * Gets a private endpoint connection. + */ + get is PrivateEndpointOperations.Read< + KubernetesConfigurationPrivateLinkScope, + PrivateEndpointConnection + >; + + /** + * Approve or reject a private endpoint connection with a given name. + */ + #suppress "@azure-tools/typespec-azure-resource-manager/arm-put-operation-response-codes" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + createOrUpdate is PrivateEndpointOperations.CreateOrReplaceAsync< + KubernetesConfigurationPrivateLinkScope, + PrivateEndpointConnection, + Response = ArmResourceUpdatedResponse | ArmAcceptedLroResponse & + Azure.Core.Foundations.RetryAfterHeader>, + LroHeaders = ArmLroLocationHeader & + Azure.Core.Foundations.RetryAfterHeader + >; + + /** + * Deletes a private endpoint connection with a given name. + */ + delete is PrivateEndpointOperations.DeleteSync< + KubernetesConfigurationPrivateLinkScope, + PrivateEndpointConnection + >; + + /** + * Gets all private endpoint connections on a private link scope. + */ + @action("privateEndpointConnections") + listByPrivateLinkScope is Azure.ResourceManager.Legacy.ArmListSinglePageByParent; +} + +@@doc(PrivateEndpointConnection.properties, "Resource properties."); +@@doc(PrivateEndpointConnections.createOrUpdate::parameters.resource, + "The private endpoint connection properties." +); diff --git a/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/privateLinkScopes/PrivateLinkResource.tsp b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/privateLinkScopes/PrivateLinkResource.tsp new file mode 100644 index 000000000000..14f6fce75912 --- /dev/null +++ b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/privateLinkScopes/PrivateLinkResource.tsp @@ -0,0 +1,42 @@ +import "@azure-tools/typespec-azure-core"; +import "@azure-tools/typespec-azure-resource-manager"; +import "@typespec/openapi"; +import "@typespec/rest"; +import "./models.tsp"; +import "./KubernetesConfigurationPrivateLinkScope.tsp"; + +using TypeSpec.Rest; +using Azure.ResourceManager; +using TypeSpec.Http; +using TypeSpec.OpenAPI; + +namespace Microsoft.KubernetesConfiguration; +/** + * A private link resource + */ +@parentResource(KubernetesConfigurationPrivateLinkScope) +model PrivateLinkResource + is Azure.ResourceManager.ProxyResource { + ...ResourceNameParameter< + Resource = PrivateLinkResource, + KeyName = "groupName", + SegmentName = "privateLinkResources", + NamePattern = "" + >; +} + +@armResourceOperations +interface PrivateLinkResources { + /** + * Gets the private link resources that need to be created for a Azure Monitor PrivateLinkScope. + */ + get is ArmResourceRead; + + /** + * Gets the private link resources that need to be created for a Azure Monitor PrivateLinkScope. + */ + listByPrivateLinkScope is Azure.ResourceManager.Legacy.ArmListSinglePageByParent; +} + +@@doc(PrivateLinkResource.name, "The name of the private link resource."); +@@doc(PrivateLinkResource.properties, "Resource properties."); diff --git a/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/privateLinkScopes/back-compatible.tsp b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/privateLinkScopes/back-compatible.tsp new file mode 100644 index 000000000000..d084a0973c78 --- /dev/null +++ b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/privateLinkScopes/back-compatible.tsp @@ -0,0 +1,45 @@ +import "@azure-tools/typespec-client-generator-core"; + +using Azure.ClientGenerator.Core; +using Microsoft.KubernetesConfiguration; + +@@clientLocation(KubernetesConfigurationPrivateLinkScopes.get, + "PrivateLinkScopes", + "!java" +); +@@clientLocation(KubernetesConfigurationPrivateLinkScopes.createOrUpdate, + "PrivateLinkScopes", + "!java" +); +@@clientName(KubernetesConfigurationPrivateLinkScopes.createOrUpdate::parameters.resource, + "parameters" +); +@@clientLocation(KubernetesConfigurationPrivateLinkScopes.updateTags, + "PrivateLinkScopes", + "!java" +); +@@clientName(KubernetesConfigurationPrivateLinkScopes.updateTags::parameters.properties, + "PrivateLinkScopeTags", + "!java" +); +@@clientLocation(KubernetesConfigurationPrivateLinkScopes.delete, + "PrivateLinkScopes", + "!java" +); +@@clientLocation(KubernetesConfigurationPrivateLinkScopes.listByResourceGroup, + "PrivateLinkScopes", + "!java" +); +@@clientLocation(KubernetesConfigurationPrivateLinkScopes.list, + "PrivateLinkScopes", + "!java" +); + +@@clientName(PrivateEndpointConnections.createOrUpdate::parameters.resource, + "properties" +); +#suppress "@azure-tools/typespec-azure-core/no-legacy-usage" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" +@@Legacy.flattenProperty(PrivateEndpointConnection.properties); + +#suppress "@azure-tools/typespec-azure-core/no-legacy-usage" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" +@@Legacy.flattenProperty(PrivateLinkResource.properties); diff --git a/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/privateLinkScopes/client.tsp b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/privateLinkScopes/client.tsp new file mode 100644 index 000000000000..0ea772bf5377 --- /dev/null +++ b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/privateLinkScopes/client.tsp @@ -0,0 +1,62 @@ +import "./main.tsp"; +import "@azure-tools/typespec-client-generator-core"; + +using Azure.ClientGenerator.Core; + +@@clientName(Microsoft.KubernetesConfiguration, + "KubernetesConfigurationPrivateLinkScopesMgmtClient", + "python" +); +@@clientName(Microsoft.KubernetesConfiguration, + "PrivateLinkScopesClient", + "javascript" +); +@@clientName(Azure.ResourceManager.CommonTypes.PrivateEndpointConnection, + "ArmPrivateEndpointConnection", + "python" +); +@@clientName(Microsoft.KubernetesConfiguration, "ScopeClient", "java"); +@@clientName(Azure.ResourceManager.CommonTypes.PrivateEndpointConnectionListResult, + "ConnectionListResult", + "java" +); +@@clientName(Azure.ResourceManager.CommonTypes.PrivateLinkResourceListResult, + "ResourceListResult", + "java" +); +@@clientName(Azure.ResourceManager.CommonTypes.PrivateEndpointConnectionProperties, + "ConnectionProperties", + "java" +); +@@clientName(Azure.ResourceManager.CommonTypes.PrivateEndpointServiceConnectionStatus, + "ServiceConnectionStatus", + "java" +); +@@clientName(Azure.ResourceManager.CommonTypes.PrivateEndpointConnectionProvisioningState, + "ConnectionProvisioningState", + "java" +); +@@clientName(Microsoft.KubernetesConfiguration.KubernetesConfigurationPrivateLinkScope, + "PrivateLinkScope", + "java" +); +@@clientName(Microsoft.KubernetesConfiguration.KubernetesConfigurationPrivateLinkScopes, + "Scopes", + "java" +); +@@clientName(Microsoft.KubernetesConfiguration.KubernetesConfigurationPrivateLinkScopeProperties, + "PrivateLinkScopeProperties", + "java" +); +@@clientName(Microsoft.KubernetesConfiguration.PrivateEndpointConnections, + "Connections", + "java" +); +@@clientName(Microsoft.KubernetesConfiguration.PrivateEndpointConnection, + "Connection", + "java" +); +@@clientName(Microsoft.KubernetesConfiguration.PrivateLinkResources, + "Resources", + "java" +); diff --git a/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/privateLinkScopes/examples/2024-11-01-preview/PrivateEndpointConnectionDelete.json b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/privateLinkScopes/examples/2024-11-01-preview/PrivateEndpointConnectionDelete.json new file mode 100644 index 000000000000..d258d5cd6951 --- /dev/null +++ b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/privateLinkScopes/examples/2024-11-01-preview/PrivateEndpointConnectionDelete.json @@ -0,0 +1,15 @@ +{ + "parameters": { + "api-version": "2024-11-01-preview", + "privateEndpointConnectionName": "private-endpoint-connection-name", + "resourceGroupName": "myResourceGroup", + "scopeName": "myPrivateLinkScope", + "subscriptionId": "00000000-1111-2222-3333-444444444444" + }, + "responses": { + "200": {}, + "204": {} + }, + "operationId": "PrivateEndpointConnections_Delete", + "title": "Deletes a private endpoint connection with a given name." +} diff --git a/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/privateLinkScopes/examples/2024-11-01-preview/PrivateEndpointConnectionGet.json b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/privateLinkScopes/examples/2024-11-01-preview/PrivateEndpointConnectionGet.json new file mode 100644 index 000000000000..2bc03902aab2 --- /dev/null +++ b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/privateLinkScopes/examples/2024-11-01-preview/PrivateEndpointConnectionGet.json @@ -0,0 +1,31 @@ +{ + "parameters": { + "api-version": "2024-11-01-preview", + "privateEndpointConnectionName": "private-endpoint-connection-name", + "resourceGroupName": "myResourceGroup", + "scopeName": "myPrivateLinkScope", + "subscriptionId": "00000000-1111-2222-3333-444444444444" + }, + "responses": { + "200": { + "body": { + "name": "private-endpoint-connection-name", + "type": "Microsoft.KubernetesConfiguration/privateLinkScopes/privateEndpointConnections", + "id": "/subscriptions/00000000-1111-2222-3333-444444444444/resourceGroups/myResourceGroup/providers//privateLinkScopes/myPrivateLinkScope/privateEndpointConnections/private-endpoint-connection-name", + "properties": { + "privateEndpoint": { + "id": "/subscriptions/55555555-6666-7777-8888-999999999999/resourceGroups/Default-Network/providers/Microsoft.Network/privateEndpoints/private-endpoint-name" + }, + "privateLinkServiceConnectionState": { + "description": "Auto-approved", + "actionsRequired": "None", + "status": "Approved" + }, + "provisioningState": "Succeeded" + } + } + } + }, + "operationId": "PrivateEndpointConnections_Get", + "title": "Gets private endpoint connection." +} diff --git a/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/privateLinkScopes/examples/2024-11-01-preview/PrivateEndpointConnectionList.json b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/privateLinkScopes/examples/2024-11-01-preview/PrivateEndpointConnectionList.json new file mode 100644 index 000000000000..956a923606a8 --- /dev/null +++ b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/privateLinkScopes/examples/2024-11-01-preview/PrivateEndpointConnectionList.json @@ -0,0 +1,50 @@ +{ + "parameters": { + "api-version": "2024-11-01-preview", + "resourceGroupName": "myResourceGroup", + "scopeName": "myPrivateLinkScope", + "subscriptionId": "00000000-1111-2222-3333-444444444444" + }, + "responses": { + "200": { + "body": { + "value": [ + { + "name": "private-endpoint-connection-name", + "type": "Microsoft.KubernetesConfiguration/privateLinkScopes/privateEndpointConnections", + "id": "/subscriptions/00000000-1111-2222-3333-444444444444/resourceGroups/myResourceGroup/providers/Microsoft.KubernetesConfiguration/privateLinkScopes/myPrivateLinkScope/privateEndpointConnections/private-endpoint-connection-name-2", + "properties": { + "privateEndpoint": { + "id": "/subscriptions/55555555-6666-7777-8888-999999999999/resourceGroups/Default-Network/providers/Microsoft.Network/privateEndpoints/private-endpoint-name" + }, + "privateLinkServiceConnectionState": { + "description": "Auto-approved", + "actionsRequired": "None", + "status": "Approved" + }, + "provisioningState": "Succeeded" + } + }, + { + "name": "private-endpoint-connection-name-2", + "type": "Microsoft.KubernetesConfiguration/privateLinkScopes/privateEndpointConnections", + "id": "/subscriptions/00000000-1111-2222-3333-444444444444/resourceGroups/myResourceGroup/providers/Microsoft.KubernetesConfiguration/privateLinkScopes/myPrivateLinkScope/privateEndpointConnections/private-endpoint-connection-name-2", + "properties": { + "privateEndpoint": { + "id": "/subscriptions/55555555-6666-7777-8888-999999999999/resourceGroups/Default-Network/providers/Microsoft.Network/privateEndpoints/private-endpoint-name-2" + }, + "privateLinkServiceConnectionState": { + "description": "Please approve my connection.", + "actionsRequired": "None", + "status": "Pending" + }, + "provisioningState": "Succeeded" + } + } + ] + } + } + }, + "operationId": "PrivateEndpointConnections_ListByPrivateLinkScope", + "title": "Gets list of private endpoint connections on a private link scope." +} diff --git a/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/privateLinkScopes/examples/2024-11-01-preview/PrivateEndpointConnectionUpdate.json b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/privateLinkScopes/examples/2024-11-01-preview/PrivateEndpointConnectionUpdate.json new file mode 100644 index 000000000000..869b33a24868 --- /dev/null +++ b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/privateLinkScopes/examples/2024-11-01-preview/PrivateEndpointConnectionUpdate.json @@ -0,0 +1,40 @@ +{ + "parameters": { + "api-version": "2024-11-01-preview", + "privateEndpointConnectionName": "private-endpoint-connection-name", + "properties": { + "properties": { + "privateLinkServiceConnectionState": { + "description": "Approved by johndoe@contoso.com", + "status": "Approved" + } + } + }, + "resourceGroupName": "myResourceGroup", + "scopeName": "myPrivateLinkScope", + "subscriptionId": "00000000-1111-2222-3333-444444444444" + }, + "responses": { + "200": { + "body": { + "name": "private-endpoint-connection-name", + "type": "Microsoft.KubernetesConfiguration/privateLinkScopes/privateEndpointConnections", + "id": "/subscriptions/00000000-1111-2222-3333-444444444444/resourceGroups/myResourceGroup/providers/Microsoft.KubernetesConfiguration/privateLinkScopes/myPrivateLinkScope/privateEndpointConnections/private-endpoint-connection-name", + "properties": { + "privateEndpoint": { + "id": "/subscriptions/55555555-6666-7777-8888-999999999999/resourceGroups/Default-Network/providers/Microsoft.Network/privateEndpoints/private-endpoint-name" + }, + "privateLinkServiceConnectionState": { + "description": "Approved by johndoe@contoso.com", + "actionsRequired": "None", + "status": "Approved" + }, + "provisioningState": "Succeeded" + } + } + }, + "202": {} + }, + "operationId": "PrivateEndpointConnections_CreateOrUpdate", + "title": "Approve or reject a private endpoint connection with a given name." +} diff --git a/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/privateLinkScopes/examples/2024-11-01-preview/PrivateLinkScopePrivateLinkResourceGet.json b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/privateLinkScopes/examples/2024-11-01-preview/PrivateLinkScopePrivateLinkResourceGet.json new file mode 100644 index 000000000000..0993663bca6c --- /dev/null +++ b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/privateLinkScopes/examples/2024-11-01-preview/PrivateLinkScopePrivateLinkResourceGet.json @@ -0,0 +1,33 @@ +{ + "parameters": { + "api-version": "2024-11-01-preview", + "groupName": "KubernetesConfiguration", + "resourceGroupName": "myResourceGroup", + "scopeName": "myPrivateLinkScope", + "subscriptionId": "00000000-1111-2222-3333-444444444444" + }, + "responses": { + "200": { + "body": { + "name": "KubernetesConfiguration", + "type": "Microsoft.KubernetesConfiguration/privateLinkScopes/privateLinkResources", + "id": "/subscriptions/00000000-1111-2222-3333-444444444444/resourceGroups/myResourceGroup/providers/Microsoft.KubernetesConfiguration/privateLinkScopes/myPrivateLinkScope/privateLinkResources/KubernetesConfiguration", + "properties": { + "groupId": "KubernetesConfiguration", + "requiredMembers": [ + "KubernetesConfiguration.Server", + "KubernetesConfiguration.K8sConfiguration", + "GuestConfig.DP" + ], + "requiredZoneNames": [ + "privatelink.his.arc.azure.com", + "privatelink.kubernetesconfiguration.azure.com", + "privatelink.Guestconfiguration.azure.com" + ] + } + } + } + }, + "operationId": "PrivateLinkResources_Get", + "title": "Gets private endpoint connection." +} diff --git a/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/privateLinkScopes/examples/2024-11-01-preview/PrivateLinkScopePrivateLinkResourceListGet.json b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/privateLinkScopes/examples/2024-11-01-preview/PrivateLinkScopePrivateLinkResourceListGet.json new file mode 100644 index 000000000000..52ed887a585e --- /dev/null +++ b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/privateLinkScopes/examples/2024-11-01-preview/PrivateLinkScopePrivateLinkResourceListGet.json @@ -0,0 +1,36 @@ +{ + "parameters": { + "api-version": "2024-11-01-preview", + "resourceGroupName": "myResourceGroup", + "scopeName": "myPrivateLinkScope", + "subscriptionId": "00000000-1111-2222-3333-444444444444" + }, + "responses": { + "200": { + "body": { + "value": [ + { + "name": "KubernetesConfiguration", + "type": "Microsoft.KubernetesConfiguration/privateLinkScopes/privateLinkResources", + "id": "/subscriptions/00000000-1111-2222-3333-444444444444/resourceGroups/myResourceGroup/providers/Microsoft.KubernetesConfiguration/privateLinkScopes/myPrivateLinkScope/privateLinkResources/KubernetesConfiguration", + "properties": { + "groupId": "KubernetesConfiguration", + "requiredMembers": [ + "KubernetesConfiguration.ServerDP", + "KubernetesConfiguration.K8sConfigurationDP", + "KubernetesConfiguration.GuestConfigDP" + ], + "requiredZoneNames": [ + "privatelink.his.arc.azure.com", + "privatelink.kubernetesconfiguration.azure.com", + "privatelink.Guestconfiguration.azure.com" + ] + } + } + ] + } + } + }, + "operationId": "PrivateLinkResources_ListByPrivateLinkScope", + "title": "Gets private endpoint connection." +} diff --git a/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/privateLinkScopes/examples/2024-11-01-preview/PrivateLinkScopesCreate.json b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/privateLinkScopes/examples/2024-11-01-preview/PrivateLinkScopesCreate.json new file mode 100644 index 000000000000..cf5772c6f9f7 --- /dev/null +++ b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/privateLinkScopes/examples/2024-11-01-preview/PrivateLinkScopesCreate.json @@ -0,0 +1,81 @@ +{ + "parameters": { + "api-version": "2024-11-01-preview", + "parameters": { + "location": "westus" + }, + "resourceGroupName": "my-resource-group", + "scopeName": "my-privatelinkscope", + "subscriptionId": "86dc51d3-92ed-4d7e-947a-775ea79b4919" + }, + "responses": { + "200": { + "body": { + "name": "my-privatelinkscope", + "type": "Microsoft.KubernetesConfiguration/privateLinkScopes", + "id": "/subscriptions/86dc51d3-92ed-4d7e-947a-775ea79b4919/resourceGroups/my-resource-group/providers/Microsoft.KubernetesConfiguration/privateLinkScopes/my-privatelinkscope", + "location": "westus", + "properties": { + "clusterResourceId": "/subscriptions/e9c17b5c-b7ef-4c29-aae7-9338ed5dcb43/resourceGroups/my-resource-group/providers/Microsoft.Kubernetes/ConnectedClusters/my-clusterName", + "privateEndpointConnections": [ + { + "name": "private-endpoint-connection-name", + "type": "Microsoft.KubernetesConfiguration/privateLinkScopes/privateEndpointConnections", + "id": "/subscriptions/00000000-1111-2222-3333-444444444444/resourceGroups/myResourceGroup/providers/Microsoft.KubernetesConfiguration/privateLinkScopes/myPrivateLinkScope/privateEndpointConnections/private-endpoint-connection-name", + "properties": { + "privateEndpoint": { + "id": "/subscriptions/55555555-6666-7777-8888-999999999999/resourceGroups/Default-Network/providers/Microsoft.Network/privateEndpoints/private-endpoint-name" + }, + "privateLinkServiceConnectionState": { + "description": "Auto-approved", + "actionsRequired": "None", + "status": "Approved" + }, + "provisioningState": "Succeeded" + } + } + ], + "privateLinkScopeId": "e5dc51d3-92ed-4d7e-947a-775ea79b4919", + "provisioningState": "Succeeded", + "publicNetworkAccess": "Disabled" + }, + "tags": {} + } + }, + "201": { + "body": { + "name": "my-privatelinkscope", + "type": "Microsoft.KubernetesConfiguration/privateLinkScopes", + "id": "/subscriptions/86dc51d3-92ed-4d7e-947a-775ea79b4919/resourceGroups/my-resource-group/providers/Microsoft.KubernetesConfiguration/privateLinkScopes/my-privatelinkscope", + "location": "westus", + "properties": { + "clusterResourceId": "/subscriptions/e9c17b5c-b7ef-4c29-aae7-9338ed5dcb43/resourceGroups/my-resource-group/providers/Microsoft.Kubernetes/ConnectedClusters/my-clusterName", + "privateEndpointConnections": [ + { + "name": "private-endpoint-connection-name", + "type": "Microsoft.KubernetesConfiguration/privateLinkScopes/privateEndpointConnections", + "id": "/subscriptions/00000000-1111-2222-3333-444444444444/resourceGroups/myResourceGroup/providers/Microsoft.KubernetesConfiguration/privateLinkScopes/myPrivateLinkScope/privateEndpointConnections/private-endpoint-connection-name", + "properties": { + "privateEndpoint": { + "id": "/subscriptions/55555555-6666-7777-8888-999999999999/resourceGroups/Default-Network/providers/Microsoft.Network/privateEndpoints/private-endpoint-name" + }, + "privateLinkServiceConnectionState": { + "description": "Auto-approved", + "actionsRequired": "None", + "status": "Approved" + }, + "provisioningState": "Succeeded" + } + } + ], + "privateLinkScopeId": "e5dc51d3-92ed-4d7e-947a-775ea79b4919", + "provisioningState": "Succeeded", + "publicNetworkAccess": "Disabled" + }, + "tags": {} + } + } + }, + "operationId": "PrivateLinkScopes_CreateOrUpdate", + "title": "PrivateLinkScopeCreate" +} diff --git a/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/privateLinkScopes/examples/2024-11-01-preview/PrivateLinkScopesDelete.json b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/privateLinkScopes/examples/2024-11-01-preview/PrivateLinkScopesDelete.json new file mode 100644 index 000000000000..32ae38822922 --- /dev/null +++ b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/privateLinkScopes/examples/2024-11-01-preview/PrivateLinkScopesDelete.json @@ -0,0 +1,14 @@ +{ + "parameters": { + "api-version": "2024-11-01-preview", + "resourceGroupName": "my-resource-group", + "scopeName": "my-privatelinkscope", + "subscriptionId": "86dc51d3-92ed-4d7e-947a-775ea79b4919" + }, + "responses": { + "200": {}, + "204": {} + }, + "operationId": "PrivateLinkScopes_Delete", + "title": "PrivateLinkScopesDelete" +} diff --git a/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/privateLinkScopes/examples/2024-11-01-preview/PrivateLinkScopesGet.json b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/privateLinkScopes/examples/2024-11-01-preview/PrivateLinkScopesGet.json new file mode 100644 index 000000000000..b759739aa547 --- /dev/null +++ b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/privateLinkScopes/examples/2024-11-01-preview/PrivateLinkScopesGet.json @@ -0,0 +1,45 @@ +{ + "parameters": { + "api-version": "2024-11-01-preview", + "resourceGroupName": "my-resource-group", + "scopeName": "my-privatelinkscope", + "subscriptionId": "86dc51d3-92ed-4d7e-947a-775ea79b4919" + }, + "responses": { + "200": { + "body": { + "name": "my-privatelinkscope", + "type": "Microsoft.KubernetesConfiguration/privateLinkScopes", + "id": "/subscriptions/86dc51d3-92ed-4d7e-947a-775ea79b4919/resourceGroups/my-resource-group/providers/Microsoft.KubernetesConfiguration/privateLinkScopes/my-privatelinkscope", + "location": "westus", + "properties": { + "clusterResourceId": "/subscriptions/e9c17b5c-b7ef-4c29-aae7-9338ed5dcb43/resourceGroups/my-resource-group/providers/Microsoft.Kubernetes/ConnectedClusters/my-clusterName", + "privateEndpointConnections": [ + { + "name": "private-endpoint-connection-name", + "type": "Microsoft.KubernetesConfiguration/privateLinkScopes/privateEndpointConnections", + "id": "/subscriptions/00000000-1111-2222-3333-444444444444/resourceGroups/myResourceGroup/providers/Microsoft.KubernetesConfiguration/privateLinkScopes/myPrivateLinkScope/privateEndpointConnections/private-endpoint-connection-name", + "properties": { + "privateEndpoint": { + "id": "/subscriptions/55555555-6666-7777-8888-999999999999/resourceGroups/Default-Network/providers/Microsoft.Network/privateEndpoints/private-endpoint-name" + }, + "privateLinkServiceConnectionState": { + "description": "Auto-approved", + "actionsRequired": "None", + "status": "Approved" + }, + "provisioningState": "Succeeded" + } + } + ], + "privateLinkScopeId": "f5dc51d3-92ed-4d7e-947a-775ea79b4919", + "provisioningState": "Succeeded", + "publicNetworkAccess": "Disabled" + }, + "tags": {} + } + } + }, + "operationId": "PrivateLinkScopes_Get", + "title": "PrivateLinkScopeGet" +} diff --git a/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/privateLinkScopes/examples/2024-11-01-preview/PrivateLinkScopesList.json b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/privateLinkScopes/examples/2024-11-01-preview/PrivateLinkScopesList.json new file mode 100644 index 000000000000..195d598d6d0d --- /dev/null +++ b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/privateLinkScopes/examples/2024-11-01-preview/PrivateLinkScopesList.json @@ -0,0 +1,60 @@ +{ + "parameters": { + "api-version": "2024-11-01-preview", + "subscriptionId": "86dc51d3-92ed-4d7e-947a-775ea79b4919" + }, + "responses": { + "200": { + "body": { + "value": [ + { + "name": "my-privatelinkscope", + "type": "Microsoft.KubernetesConfiguration/privateLinkScopes", + "id": "/subscriptions/86dc51d3-92ed-4d7e-947a-775ea79b4919/resourceGroups/my-resource-group/providers/Microsoft.KubernetesConfiguration/privateLinkScopes/my-privatelinkscope", + "location": "westus", + "properties": { + "clusterResourceId": "/subscriptions/e9c17b5c-b7ef-4c29-aae7-9338ed5dcb43/resourceGroups/my-resource-group/providers/Microsoft.Kubernetes/ConnectedClusters/my-clusterName", + "privateLinkScopeId": "e5dc51d3-92ed-4d7e-947a-775ea79b4919", + "provisioningState": "Succeeded", + "publicNetworkAccess": "Disabled" + }, + "tags": {} + }, + { + "name": "my-other-privatelinkscope", + "type": "Microsoft.KubernetesConfiguration/privateLinkScopes", + "id": "/subscriptions/86dc51d3-92ed-4d7e-947a-775ea79b4919/resourceGroups/my-resource-group/providers/Microsoft.KubernetesConfiguration/privateLinkScopes/my-other-privatelinkscope", + "location": "westus", + "properties": { + "clusterResourceId": "/subscriptions/e9c17b5c-b7ef-4c29-aae7-9338ed5dcb43/resourceGroups/my-resource-group/providers/Microsoft.Kubernetes/ConnectedClusters/my-clusterName", + "privateEndpointConnections": [ + { + "name": "private-endpoint-connection-name", + "type": "Microsoft.KubernetesConfiguration/privateLinkScopes/privateEndpointConnections", + "id": "/subscriptions/00000000-1111-2222-3333-444444444444/resourceGroups/myResourceGroup/providers/Microsoft.KubernetesConfiguration/privateLinkScopes/myPrivateLinkScope/privateEndpointConnections/private-endpoint-connection-name", + "properties": { + "privateEndpoint": { + "id": "/subscriptions/55555555-6666-7777-8888-999999999999/resourceGroups/Default-Network/providers/Microsoft.Network/privateEndpoints/private-endpoint-name" + }, + "privateLinkServiceConnectionState": { + "description": "Auto-approved", + "actionsRequired": "None", + "status": "Approved" + }, + "provisioningState": "Succeeded" + } + } + ], + "privateLinkScopeId": "f5dc51d3-92ed-4d7e-947a-775ea79b4919", + "provisioningState": "Succeeded", + "publicNetworkAccess": "Disabled" + }, + "tags": {} + } + ] + } + } + }, + "operationId": "PrivateLinkScopes_List", + "title": "PrivateLinkScopesList.json" +} diff --git a/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/privateLinkScopes/examples/2024-11-01-preview/PrivateLinkScopesListByResourceGroup.json b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/privateLinkScopes/examples/2024-11-01-preview/PrivateLinkScopesListByResourceGroup.json new file mode 100644 index 000000000000..7209d8e58abd --- /dev/null +++ b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/privateLinkScopes/examples/2024-11-01-preview/PrivateLinkScopesListByResourceGroup.json @@ -0,0 +1,80 @@ +{ + "parameters": { + "api-version": "2024-11-01-preview", + "resourceGroupName": "my-resource-group", + "subscriptionId": "86dc51d3-92ed-4d7e-947a-775ea79b4919" + }, + "responses": { + "200": { + "body": { + "nextLink": null, + "value": [ + { + "name": "my-privatelinkscope", + "type": "Microsoft.KubernetesConfiguration/privateLinkScopes", + "id": "/subscriptions/86dc51d3-92ed-4d7e-947a-775ea79b4919/resourceGroups/my-resource-group/providers/Microsoft.KubernetesConfiguration/privateLinkScopes/my-privatelinkscope", + "location": "westus", + "properties": { + "clusterResourceId": "/subscriptions/e9c17b5c-b7ef-4c29-aae7-9338ed5dcb43/resourceGroups/my-resource-group/providers/Microsoft.Kubernetes/ConnectedClusters/my-clusterName", + "privateEndpointConnections": [ + { + "name": "private-endpoint-connection-name", + "type": "Microsoft.KubernetesConfiguration/privateLinkScopes/privateEndpointConnections", + "id": "/subscriptions/00000000-1111-2222-3333-444444444444/resourceGroups/myResourceGroup/providers/Microsoft.KubernetesConfiguration/privateLinkScopes/myPrivateLinkScope/privateEndpointConnections/private-endpoint-connection-name", + "properties": { + "privateEndpoint": { + "id": "/subscriptions/55555555-6666-7777-8888-999999999999/resourceGroups/Default-Network/providers/Microsoft.Network/privateEndpoints/private-endpoint-name" + }, + "privateLinkServiceConnectionState": { + "description": "Auto-approved", + "actionsRequired": "None", + "status": "Approved" + }, + "provisioningState": "Succeeded" + } + } + ], + "privateLinkScopeId": "f5dc51d3-92ed-4d7e-947a-775ea79b4919", + "provisioningState": "Succeeded", + "publicNetworkAccess": "Disabled" + }, + "tags": {} + }, + { + "name": "my-other-privatelinkscope", + "type": "Microsoft.KubernetesConfiguration/privateLinkScopes", + "id": "/subscriptions/86dc51d3-92ed-4d7e-947a-775ea79b4919/resourceGroups/my-resource-group/providers/Microsoft.KubernetesConfiguration/privateLinkScopes/my-other-privatelinkscope", + "location": "westus", + "properties": { + "clusterResourceId": "/subscriptions/e9c17b5c-b7ef-4c29-aae7-9338ed5dcb43/resourceGroups/my-resource-group/providers/Microsoft.Kubernetes/ConnectedClusters/my-clusterName", + "privateEndpointConnections": [ + { + "name": "private-endpoint-connection-name", + "type": "Microsoft.KubernetesConfiguration/privateLinkScopes/privateEndpointConnections", + "id": "/subscriptions/00000000-1111-2222-3333-444444444444/resourceGroups/myResourceGroup/providers/Microsoft.KubernetesConfiguration/privateLinkScopes/myPrivateLinkScope/privateEndpointConnections/private-endpoint-connection-name", + "properties": { + "privateEndpoint": { + "id": "/subscriptions/55555555-6666-7777-8888-999999999999/resourceGroups/Default-Network/providers/Microsoft.Network/privateEndpoints/private-endpoint-name" + }, + "privateLinkServiceConnectionState": { + "description": "Auto-approved", + "actionsRequired": "None", + "status": "Approved" + }, + "provisioningState": "Succeeded" + } + } + ], + "privateLinkScopeId": "a5dc51d3-92ed-4d7e-947a-775ea79b4919", + "provisioningState": "Succeeded", + "publicNetworkAccess": "Disabled" + }, + "tags": {} + } + ] + } + } + }, + "operationId": "PrivateLinkScopes_ListByResourceGroup", + "title": "PrivateLinkScopeListByResourceGroup" +} diff --git a/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/privateLinkScopes/examples/2024-11-01-preview/PrivateLinkScopesUpdate.json b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/privateLinkScopes/examples/2024-11-01-preview/PrivateLinkScopesUpdate.json new file mode 100644 index 000000000000..e6a55f07cbe2 --- /dev/null +++ b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/privateLinkScopes/examples/2024-11-01-preview/PrivateLinkScopesUpdate.json @@ -0,0 +1,88 @@ +{ + "parameters": { + "api-version": "2024-11-01-preview", + "parameters": { + "location": "westus", + "tags": { + "Tag1": "Value1" + } + }, + "resourceGroupName": "my-resource-group", + "scopeName": "my-privatelinkscope", + "subscriptionId": "86dc51d3-92ed-4d7e-947a-775ea79b4919" + }, + "responses": { + "200": { + "body": { + "name": "my-privatelinkscope", + "type": "Microsoft.KubernetesConfiguration/privateLinkScopes", + "id": "/subscriptions/86dc51d3-92ed-4d7e-947a-775ea79b4919/resourceGroups/my-resource-group/providers/Microsoft.KubernetesConfiguration/privateLinkScopes/my-privatelinkscope", + "location": "westus", + "properties": { + "clusterResourceId": "/subscriptions/e9c17b5c-b7ef-4c29-aae7-9338ed5dcb43/resourceGroups/my-resource-group/providers/Microsoft.Kubernetes/ConnectedClusters/my-clusterName", + "privateEndpointConnections": [ + { + "name": "private-endpoint-connection-name", + "type": "Microsoft.KubernetesConfiguration/privateLinkScopes/privateEndpointConnections", + "id": "/subscriptions/00000000-1111-2222-3333-444444444444/resourceGroups/myResourceGroup/providers/Microsoft.KubernetesConfiguration/privateLinkScopes/myPrivateLinkScope/privateEndpointConnections/private-endpoint-connection-name", + "properties": { + "privateEndpoint": { + "id": "/subscriptions/55555555-6666-7777-8888-999999999999/resourceGroups/Default-Network/providers/Microsoft.Network/privateEndpoints/private-endpoint-name" + }, + "privateLinkServiceConnectionState": { + "description": "Auto-approved", + "actionsRequired": "None", + "status": "Approved" + }, + "provisioningState": "Succeeded" + } + } + ], + "privateLinkScopeId": "e5dc51d3-92ed-4d7e-947a-775ea79b4919", + "provisioningState": "Succeeded", + "publicNetworkAccess": "Disabled" + }, + "tags": { + "Tag1": "Value1" + } + } + }, + "201": { + "body": { + "name": "my-privatelinkscope", + "type": "Microsoft.KubernetesConfiguration/privateLinkScopes", + "id": "/subscriptions/86dc51d3-92ed-4d7e-947a-775ea79b4919/resourceGroups/my-resource-group/providers/Microsoft.KubernetesConfiguration/privateLinkScopes/my-privatelinkscope", + "location": "westus", + "properties": { + "clusterResourceId": "/subscriptions/e9c17b5c-b7ef-4c29-aae7-9338ed5dcb43/resourceGroups/my-resource-group/providers/Microsoft.Kubernetes/ConnectedClusters/my-clusterName", + "privateEndpointConnections": [ + { + "name": "private-endpoint-connection-name", + "type": "Microsoft.KubernetesConfiguration/privateLinkScopes/privateEndpointConnections", + "id": "/subscriptions/00000000-1111-2222-3333-444444444444/resourceGroups/myResourceGroup/providers/Microsoft.KubernetesConfiguration/privateLinkScopes/myPrivateLinkScope/privateEndpointConnections/private-endpoint-connection-name", + "properties": { + "privateEndpoint": { + "id": "/subscriptions/55555555-6666-7777-8888-999999999999/resourceGroups/Default-Network/providers/Microsoft.Network/privateEndpoints/private-endpoint-name" + }, + "privateLinkServiceConnectionState": { + "description": "Auto-approved", + "actionsRequired": "None", + "status": "Approved" + }, + "provisioningState": "Succeeded" + } + } + ], + "privateLinkScopeId": "e5dc51d3-92ed-4d7e-947a-775ea79b4919", + "provisioningState": "Succeeded", + "publicNetworkAccess": "Disabled" + }, + "tags": { + "Tag1": "Value1" + } + } + } + }, + "operationId": "PrivateLinkScopes_CreateOrUpdate", + "title": "PrivateLinkScopeUpdate" +} diff --git a/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/privateLinkScopes/examples/2024-11-01-preview/PrivateLinkScopesUpdateTagsOnly.json b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/privateLinkScopes/examples/2024-11-01-preview/PrivateLinkScopesUpdateTagsOnly.json new file mode 100644 index 000000000000..42bc48e9eccc --- /dev/null +++ b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/privateLinkScopes/examples/2024-11-01-preview/PrivateLinkScopesUpdateTagsOnly.json @@ -0,0 +1,54 @@ +{ + "parameters": { + "PrivateLinkScopeTags": { + "tags": { + "Tag1": "Value1", + "Tag2": "Value2" + } + }, + "api-version": "2024-11-01-preview", + "resourceGroupName": "my-resource-group", + "scopeName": "my-privatelinkscope", + "subscriptionId": "subid" + }, + "responses": { + "200": { + "body": { + "name": "my-privatelinkscope", + "type": "Microsoft.KubernetesConfiguration/privateLinkScopes", + "id": "/subscriptions/subid/resourceGroups/my-resource-group/providers/Microsoft.KubernetesConfiguration/privateLinkScopes/my-privatelinkscope", + "location": "westus", + "properties": { + "clusterResourceId": "/subscriptions/e9c17b5c-b7ef-4c29-aae7-9338ed5dcb43/resourceGroups/my-resource-group/providers/Microsoft.Kubernetes/ConnectedClusters/my-clusterName", + "privateEndpointConnections": [ + { + "name": "private-endpoint-connection-name", + "type": "Microsoft.KubernetesConfiguration/privateLinkScopes/privateEndpointConnections", + "id": "/subscriptions/00000000-1111-2222-3333-444444444444/resourceGroups/myResourceGroup/providers/Microsoft.KubernetesConfiguration/privateLinkScopes/myPrivateLinkScope/privateEndpointConnections/private-endpoint-connection-name", + "properties": { + "privateEndpoint": { + "id": "/subscriptions/55555555-6666-7777-8888-999999999999/resourceGroups/Default-Network/providers/Microsoft.Network/privateEndpoints/private-endpoint-name" + }, + "privateLinkServiceConnectionState": { + "description": "Auto-approved", + "actionsRequired": "None", + "status": "Approved" + }, + "provisioningState": "Succeeded" + } + } + ], + "privateLinkScopeId": "e5dc51d3-92ed-4d7e-947a-775ea79b4919", + "provisioningState": "Succeeded", + "publicNetworkAccess": "Disabled" + }, + "tags": { + "Tag1": "Value1", + "Tag2": "Value2" + } + } + } + }, + "operationId": "PrivateLinkScopes_UpdateTags", + "title": "PrivateLinkScopeUpdateTagsOnly" +} diff --git a/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/privateLinkScopes/main.tsp b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/privateLinkScopes/main.tsp new file mode 100644 index 000000000000..b57f31ff7b37 --- /dev/null +++ b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/privateLinkScopes/main.tsp @@ -0,0 +1,44 @@ +/** + * PLEASE DO NOT REMOVE - USED FOR CONVERTER METRICS + * Generated by package: @autorest/openapi-to-typespec + * Parameters used: + * isFullCompatible: true + * guessResourceKey: false + * Version: 0.11.12 + * Date: 2026-01-07T08:38:57.162Z + */ +import "@typespec/rest"; +import "@typespec/versioning"; +import "@azure-tools/typespec-azure-core"; +import "@azure-tools/typespec-azure-resource-manager"; +import "./models.tsp"; +import "./back-compatible.tsp"; +import "./KubernetesConfigurationPrivateLinkScope.tsp"; +import "./PrivateLinkResource.tsp"; +import "./PrivateEndpointConnection.tsp"; + +using TypeSpec.Rest; +using TypeSpec.Http; +using Azure.ResourceManager.Foundations; +using Azure.Core; +using Azure.ResourceManager; +using TypeSpec.Versioning; +/** + * Azure Arc K8s Clusters API reference for Private Link's Scopes management. + */ +#suppress "@azure-tools/typespec-azure-resource-manager/missing-operations-endpoint" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" +@armProviderNamespace +@service(#{ title: "MicrosoftKubernetesConfigurationClient" }) +@versioned(Versions) +@armCommonTypesVersion(Azure.ResourceManager.CommonTypes.Versions.v3) +namespace Microsoft.KubernetesConfiguration; + +/** + * The available API versions. + */ +enum Versions { + /** + * The 2024-11-01-preview API version. + */ + v2024_11_01_preview: "2024-11-01-preview", +} diff --git a/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/privateLinkScopes/models.tsp b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/privateLinkScopes/models.tsp new file mode 100644 index 000000000000..f4f81c9a1f3f --- /dev/null +++ b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/privateLinkScopes/models.tsp @@ -0,0 +1,135 @@ +import "@typespec/rest"; +import "@typespec/http"; +import "@azure-tools/typespec-azure-resource-manager"; + +using TypeSpec.Rest; +using TypeSpec.Http; +using Azure.ResourceManager; +using Azure.ResourceManager.Foundations; + +namespace Microsoft.KubernetesConfiguration; + +/** + * The network access policy to determine if Azure Arc agents can use public Azure Arc service endpoints. Defaults to disabled (access to Azure Arc services only via private link). + */ +union PublicNetworkAccessType { + string, + + /** + * Allows Azure Arc agents to communicate with Azure Arc services over both public (internet) and private endpoints. + */ + Enabled: "Enabled", + + /** + * Does not allow Azure Arc agents to communicate with Azure Arc services over public (internet) endpoints. The agents must use the private link. + */ + Disabled: "Disabled", +} + +/** + * The provisioning state of the resource. + */ +union ProvisioningState { + string, + + /** + * Succeeded + */ + Succeeded: "Succeeded", + + /** + * Failed + */ + Failed: "Failed", + + /** + * Canceled + */ + Canceled: "Canceled", + + /** + * Creating + */ + Creating: "Creating", + + /** + * Updating + */ + Updating: "Updating", + + /** + * Deleting + */ + Deleting: "Deleting", +} + +/** + * The type of identity that created the resource. + */ +union CreatedByType { + string, + + /** + * User + */ + User: "User", + + /** + * Application + */ + Application: "Application", + + /** + * ManagedIdentity + */ + ManagedIdentity: "ManagedIdentity", + + /** + * Key + */ + Key: "Key", +} + +/** + * Properties that define a Azure Arc PrivateLinkScope resource. + */ +model KubernetesConfigurationPrivateLinkScopeProperties { + /** + * Indicates whether machines associated with the private link scope can also use public Azure Arc service endpoints. + */ + publicNetworkAccess?: PublicNetworkAccessType = PublicNetworkAccessType.Disabled; + + /** + * Current state of this PrivateLinkScope: whether or not is has been provisioned within the resource group it is defined. Users cannot change this value but are able to read from it. Values will include Provisioning ,Succeeded, Canceled and Failed. + */ + @visibility(Lifecycle.Read) + provisioningState?: ProvisioningState; + + /** + * Managed Cluster ARM ID for the private link scope (Required) + */ + clusterResourceId: string; + + /** + * The Guid id of the private link scope. + */ + @visibility(Lifecycle.Read) + privateLinkScopeId?: string; + + /** + * The collection of associated Private Endpoint Connections. + */ + @visibility(Lifecycle.Read) + privateEndpointConnections?: PrivateEndpointConnection[]; +} + +/** + * A container holding only the Tags for a resource, allowing the user to update the tags on a PrivateLinkScope instance. + */ +model TagsResource { + /** + * Resource tags + */ + #suppress "@azure-tools/typespec-azure-resource-manager/arm-no-record" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details" + tags?: Record; +} diff --git a/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/privateLinkScopes/preview/2024-11-01-preview/examples/PrivateEndpointConnectionDelete.json b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/privateLinkScopes/preview/2024-11-01-preview/examples/PrivateEndpointConnectionDelete.json index e2bf3f3b78b9..d258d5cd6951 100644 --- a/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/privateLinkScopes/preview/2024-11-01-preview/examples/PrivateEndpointConnectionDelete.json +++ b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/privateLinkScopes/preview/2024-11-01-preview/examples/PrivateEndpointConnectionDelete.json @@ -1,13 +1,15 @@ { "parameters": { - "subscriptionId": "00000000-1111-2222-3333-444444444444", + "api-version": "2024-11-01-preview", + "privateEndpointConnectionName": "private-endpoint-connection-name", "resourceGroupName": "myResourceGroup", "scopeName": "myPrivateLinkScope", - "privateEndpointConnectionName": "private-endpoint-connection-name", - "api-version": "2024-11-01-preview" + "subscriptionId": "00000000-1111-2222-3333-444444444444" }, "responses": { "200": {}, "204": {} - } + }, + "operationId": "PrivateEndpointConnections_Delete", + "title": "Deletes a private endpoint connection with a given name." } diff --git a/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/privateLinkScopes/preview/2024-11-01-preview/examples/PrivateEndpointConnectionGet.json b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/privateLinkScopes/preview/2024-11-01-preview/examples/PrivateEndpointConnectionGet.json index 484bacfde9a3..2bc03902aab2 100644 --- a/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/privateLinkScopes/preview/2024-11-01-preview/examples/PrivateEndpointConnectionGet.json +++ b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/privateLinkScopes/preview/2024-11-01-preview/examples/PrivateEndpointConnectionGet.json @@ -1,29 +1,31 @@ { "parameters": { - "subscriptionId": "00000000-1111-2222-3333-444444444444", + "api-version": "2024-11-01-preview", + "privateEndpointConnectionName": "private-endpoint-connection-name", "resourceGroupName": "myResourceGroup", "scopeName": "myPrivateLinkScope", - "privateEndpointConnectionName": "private-endpoint-connection-name", - "api-version": "2024-11-01-preview" + "subscriptionId": "00000000-1111-2222-3333-444444444444" }, "responses": { "200": { "body": { - "id": "/subscriptions/00000000-1111-2222-3333-444444444444/resourceGroups/myResourceGroup/providers//privateLinkScopes/myPrivateLinkScope/privateEndpointConnections/private-endpoint-connection-name", "name": "private-endpoint-connection-name", "type": "Microsoft.KubernetesConfiguration/privateLinkScopes/privateEndpointConnections", + "id": "/subscriptions/00000000-1111-2222-3333-444444444444/resourceGroups/myResourceGroup/providers//privateLinkScopes/myPrivateLinkScope/privateEndpointConnections/private-endpoint-connection-name", "properties": { - "provisioningState": "Succeeded", "privateEndpoint": { "id": "/subscriptions/55555555-6666-7777-8888-999999999999/resourceGroups/Default-Network/providers/Microsoft.Network/privateEndpoints/private-endpoint-name" }, "privateLinkServiceConnectionState": { - "status": "Approved", "description": "Auto-approved", - "actionsRequired": "None" - } + "actionsRequired": "None", + "status": "Approved" + }, + "provisioningState": "Succeeded" } } } - } + }, + "operationId": "PrivateEndpointConnections_Get", + "title": "Gets private endpoint connection." } diff --git a/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/privateLinkScopes/preview/2024-11-01-preview/examples/PrivateEndpointConnectionList.json b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/privateLinkScopes/preview/2024-11-01-preview/examples/PrivateEndpointConnectionList.json index c82661c91821..956a923606a8 100644 --- a/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/privateLinkScopes/preview/2024-11-01-preview/examples/PrivateEndpointConnectionList.json +++ b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/privateLinkScopes/preview/2024-11-01-preview/examples/PrivateEndpointConnectionList.json @@ -1,48 +1,50 @@ { "parameters": { - "subscriptionId": "00000000-1111-2222-3333-444444444444", + "api-version": "2024-11-01-preview", "resourceGroupName": "myResourceGroup", "scopeName": "myPrivateLinkScope", - "api-version": "2024-11-01-preview" + "subscriptionId": "00000000-1111-2222-3333-444444444444" }, "responses": { "200": { "body": { "value": [ { - "id": "/subscriptions/00000000-1111-2222-3333-444444444444/resourceGroups/myResourceGroup/providers/Microsoft.KubernetesConfiguration/privateLinkScopes/myPrivateLinkScope/privateEndpointConnections/private-endpoint-connection-name-2", "name": "private-endpoint-connection-name", "type": "Microsoft.KubernetesConfiguration/privateLinkScopes/privateEndpointConnections", + "id": "/subscriptions/00000000-1111-2222-3333-444444444444/resourceGroups/myResourceGroup/providers/Microsoft.KubernetesConfiguration/privateLinkScopes/myPrivateLinkScope/privateEndpointConnections/private-endpoint-connection-name-2", "properties": { - "provisioningState": "Succeeded", "privateEndpoint": { "id": "/subscriptions/55555555-6666-7777-8888-999999999999/resourceGroups/Default-Network/providers/Microsoft.Network/privateEndpoints/private-endpoint-name" }, "privateLinkServiceConnectionState": { - "status": "Approved", "description": "Auto-approved", - "actionsRequired": "None" - } + "actionsRequired": "None", + "status": "Approved" + }, + "provisioningState": "Succeeded" } }, { - "id": "/subscriptions/00000000-1111-2222-3333-444444444444/resourceGroups/myResourceGroup/providers/Microsoft.KubernetesConfiguration/privateLinkScopes/myPrivateLinkScope/privateEndpointConnections/private-endpoint-connection-name-2", "name": "private-endpoint-connection-name-2", "type": "Microsoft.KubernetesConfiguration/privateLinkScopes/privateEndpointConnections", + "id": "/subscriptions/00000000-1111-2222-3333-444444444444/resourceGroups/myResourceGroup/providers/Microsoft.KubernetesConfiguration/privateLinkScopes/myPrivateLinkScope/privateEndpointConnections/private-endpoint-connection-name-2", "properties": { - "provisioningState": "Succeeded", "privateEndpoint": { "id": "/subscriptions/55555555-6666-7777-8888-999999999999/resourceGroups/Default-Network/providers/Microsoft.Network/privateEndpoints/private-endpoint-name-2" }, "privateLinkServiceConnectionState": { - "status": "Pending", "description": "Please approve my connection.", - "actionsRequired": "None" - } + "actionsRequired": "None", + "status": "Pending" + }, + "provisioningState": "Succeeded" } } ] } } - } + }, + "operationId": "PrivateEndpointConnections_ListByPrivateLinkScope", + "title": "Gets list of private endpoint connections on a private link scope." } diff --git a/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/privateLinkScopes/preview/2024-11-01-preview/examples/PrivateEndpointConnectionUpdate.json b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/privateLinkScopes/preview/2024-11-01-preview/examples/PrivateEndpointConnectionUpdate.json index 4a593ada75cc..869b33a24868 100644 --- a/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/privateLinkScopes/preview/2024-11-01-preview/examples/PrivateEndpointConnectionUpdate.json +++ b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/privateLinkScopes/preview/2024-11-01-preview/examples/PrivateEndpointConnectionUpdate.json @@ -1,38 +1,40 @@ { "parameters": { - "subscriptionId": "00000000-1111-2222-3333-444444444444", - "resourceGroupName": "myResourceGroup", - "scopeName": "myPrivateLinkScope", - "privateEndpointConnectionName": "private-endpoint-connection-name", "api-version": "2024-11-01-preview", + "privateEndpointConnectionName": "private-endpoint-connection-name", "properties": { "properties": { "privateLinkServiceConnectionState": { - "status": "Approved", - "description": "Approved by johndoe@contoso.com" + "description": "Approved by johndoe@contoso.com", + "status": "Approved" } } - } + }, + "resourceGroupName": "myResourceGroup", + "scopeName": "myPrivateLinkScope", + "subscriptionId": "00000000-1111-2222-3333-444444444444" }, "responses": { "200": { "body": { - "id": "/subscriptions/00000000-1111-2222-3333-444444444444/resourceGroups/myResourceGroup/providers/Microsoft.KubernetesConfiguration/privateLinkScopes/myPrivateLinkScope/privateEndpointConnections/private-endpoint-connection-name", "name": "private-endpoint-connection-name", "type": "Microsoft.KubernetesConfiguration/privateLinkScopes/privateEndpointConnections", + "id": "/subscriptions/00000000-1111-2222-3333-444444444444/resourceGroups/myResourceGroup/providers/Microsoft.KubernetesConfiguration/privateLinkScopes/myPrivateLinkScope/privateEndpointConnections/private-endpoint-connection-name", "properties": { - "provisioningState": "Succeeded", "privateEndpoint": { "id": "/subscriptions/55555555-6666-7777-8888-999999999999/resourceGroups/Default-Network/providers/Microsoft.Network/privateEndpoints/private-endpoint-name" }, "privateLinkServiceConnectionState": { - "status": "Approved", "description": "Approved by johndoe@contoso.com", - "actionsRequired": "None" - } + "actionsRequired": "None", + "status": "Approved" + }, + "provisioningState": "Succeeded" } } }, "202": {} - } + }, + "operationId": "PrivateEndpointConnections_CreateOrUpdate", + "title": "Approve or reject a private endpoint connection with a given name." } diff --git a/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/privateLinkScopes/preview/2024-11-01-preview/examples/PrivateLinkScopePrivateLinkResourceGet.json b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/privateLinkScopes/preview/2024-11-01-preview/examples/PrivateLinkScopePrivateLinkResourceGet.json index 86e291200784..0993663bca6c 100644 --- a/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/privateLinkScopes/preview/2024-11-01-preview/examples/PrivateLinkScopePrivateLinkResourceGet.json +++ b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/privateLinkScopes/preview/2024-11-01-preview/examples/PrivateLinkScopePrivateLinkResourceGet.json @@ -1,17 +1,17 @@ { "parameters": { - "subscriptionId": "00000000-1111-2222-3333-444444444444", + "api-version": "2024-11-01-preview", + "groupName": "KubernetesConfiguration", "resourceGroupName": "myResourceGroup", "scopeName": "myPrivateLinkScope", - "api-version": "2024-11-01-preview", - "groupName": "KubernetesConfiguration" + "subscriptionId": "00000000-1111-2222-3333-444444444444" }, "responses": { "200": { "body": { - "id": "/subscriptions/00000000-1111-2222-3333-444444444444/resourceGroups/myResourceGroup/providers/Microsoft.KubernetesConfiguration/privateLinkScopes/myPrivateLinkScope/privateLinkResources/KubernetesConfiguration", "name": "KubernetesConfiguration", "type": "Microsoft.KubernetesConfiguration/privateLinkScopes/privateLinkResources", + "id": "/subscriptions/00000000-1111-2222-3333-444444444444/resourceGroups/myResourceGroup/providers/Microsoft.KubernetesConfiguration/privateLinkScopes/myPrivateLinkScope/privateLinkResources/KubernetesConfiguration", "properties": { "groupId": "KubernetesConfiguration", "requiredMembers": [ @@ -27,5 +27,7 @@ } } } - } + }, + "operationId": "PrivateLinkResources_Get", + "title": "Gets private endpoint connection." } diff --git a/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/privateLinkScopes/preview/2024-11-01-preview/examples/PrivateLinkScopePrivateLinkResourceListGet.json b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/privateLinkScopes/preview/2024-11-01-preview/examples/PrivateLinkScopePrivateLinkResourceListGet.json index b49117446bff..52ed887a585e 100644 --- a/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/privateLinkScopes/preview/2024-11-01-preview/examples/PrivateLinkScopePrivateLinkResourceListGet.json +++ b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/privateLinkScopes/preview/2024-11-01-preview/examples/PrivateLinkScopePrivateLinkResourceListGet.json @@ -1,18 +1,18 @@ { "parameters": { - "subscriptionId": "00000000-1111-2222-3333-444444444444", + "api-version": "2024-11-01-preview", "resourceGroupName": "myResourceGroup", "scopeName": "myPrivateLinkScope", - "api-version": "2024-11-01-preview" + "subscriptionId": "00000000-1111-2222-3333-444444444444" }, "responses": { "200": { "body": { "value": [ { - "id": "/subscriptions/00000000-1111-2222-3333-444444444444/resourceGroups/myResourceGroup/providers/Microsoft.KubernetesConfiguration/privateLinkScopes/myPrivateLinkScope/privateLinkResources/KubernetesConfiguration", "name": "KubernetesConfiguration", "type": "Microsoft.KubernetesConfiguration/privateLinkScopes/privateLinkResources", + "id": "/subscriptions/00000000-1111-2222-3333-444444444444/resourceGroups/myResourceGroup/providers/Microsoft.KubernetesConfiguration/privateLinkScopes/myPrivateLinkScope/privateLinkResources/KubernetesConfiguration", "properties": { "groupId": "KubernetesConfiguration", "requiredMembers": [ @@ -30,5 +30,7 @@ ] } } - } + }, + "operationId": "PrivateLinkResources_ListByPrivateLinkScope", + "title": "Gets private endpoint connection." } diff --git a/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/privateLinkScopes/preview/2024-11-01-preview/examples/PrivateLinkScopesCreate.json b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/privateLinkScopes/preview/2024-11-01-preview/examples/PrivateLinkScopesCreate.json index 532b8e9505a3..cf5772c6f9f7 100644 --- a/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/privateLinkScopes/preview/2024-11-01-preview/examples/PrivateLinkScopesCreate.json +++ b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/privateLinkScopes/preview/2024-11-01-preview/examples/PrivateLinkScopesCreate.json @@ -1,79 +1,81 @@ { "parameters": { "api-version": "2024-11-01-preview", - "subscriptionId": "86dc51d3-92ed-4d7e-947a-775ea79b4919", - "resourceGroupName": "my-resource-group", - "scopeName": "my-privatelinkscope", "parameters": { "location": "westus" - } + }, + "resourceGroupName": "my-resource-group", + "scopeName": "my-privatelinkscope", + "subscriptionId": "86dc51d3-92ed-4d7e-947a-775ea79b4919" }, "responses": { "200": { "body": { - "id": "/subscriptions/86dc51d3-92ed-4d7e-947a-775ea79b4919/resourceGroups/my-resource-group/providers/Microsoft.KubernetesConfiguration/privateLinkScopes/my-privatelinkscope", "name": "my-privatelinkscope", "type": "Microsoft.KubernetesConfiguration/privateLinkScopes", + "id": "/subscriptions/86dc51d3-92ed-4d7e-947a-775ea79b4919/resourceGroups/my-resource-group/providers/Microsoft.KubernetesConfiguration/privateLinkScopes/my-privatelinkscope", "location": "westus", - "tags": {}, "properties": { - "privateLinkScopeId": "e5dc51d3-92ed-4d7e-947a-775ea79b4919", - "provisioningState": "Succeeded", - "publicNetworkAccess": "Disabled", "clusterResourceId": "/subscriptions/e9c17b5c-b7ef-4c29-aae7-9338ed5dcb43/resourceGroups/my-resource-group/providers/Microsoft.Kubernetes/ConnectedClusters/my-clusterName", "privateEndpointConnections": [ { - "id": "/subscriptions/00000000-1111-2222-3333-444444444444/resourceGroups/myResourceGroup/providers/Microsoft.KubernetesConfiguration/privateLinkScopes/myPrivateLinkScope/privateEndpointConnections/private-endpoint-connection-name", "name": "private-endpoint-connection-name", "type": "Microsoft.KubernetesConfiguration/privateLinkScopes/privateEndpointConnections", + "id": "/subscriptions/00000000-1111-2222-3333-444444444444/resourceGroups/myResourceGroup/providers/Microsoft.KubernetesConfiguration/privateLinkScopes/myPrivateLinkScope/privateEndpointConnections/private-endpoint-connection-name", "properties": { - "provisioningState": "Succeeded", "privateEndpoint": { "id": "/subscriptions/55555555-6666-7777-8888-999999999999/resourceGroups/Default-Network/providers/Microsoft.Network/privateEndpoints/private-endpoint-name" }, "privateLinkServiceConnectionState": { - "status": "Approved", "description": "Auto-approved", - "actionsRequired": "None" - } + "actionsRequired": "None", + "status": "Approved" + }, + "provisioningState": "Succeeded" } } - ] - } + ], + "privateLinkScopeId": "e5dc51d3-92ed-4d7e-947a-775ea79b4919", + "provisioningState": "Succeeded", + "publicNetworkAccess": "Disabled" + }, + "tags": {} } }, "201": { "body": { - "id": "/subscriptions/86dc51d3-92ed-4d7e-947a-775ea79b4919/resourceGroups/my-resource-group/providers/Microsoft.KubernetesConfiguration/privateLinkScopes/my-privatelinkscope", "name": "my-privatelinkscope", "type": "Microsoft.KubernetesConfiguration/privateLinkScopes", + "id": "/subscriptions/86dc51d3-92ed-4d7e-947a-775ea79b4919/resourceGroups/my-resource-group/providers/Microsoft.KubernetesConfiguration/privateLinkScopes/my-privatelinkscope", "location": "westus", - "tags": {}, "properties": { - "privateLinkScopeId": "e5dc51d3-92ed-4d7e-947a-775ea79b4919", - "provisioningState": "Succeeded", - "publicNetworkAccess": "Disabled", "clusterResourceId": "/subscriptions/e9c17b5c-b7ef-4c29-aae7-9338ed5dcb43/resourceGroups/my-resource-group/providers/Microsoft.Kubernetes/ConnectedClusters/my-clusterName", "privateEndpointConnections": [ { - "id": "/subscriptions/00000000-1111-2222-3333-444444444444/resourceGroups/myResourceGroup/providers/Microsoft.KubernetesConfiguration/privateLinkScopes/myPrivateLinkScope/privateEndpointConnections/private-endpoint-connection-name", "name": "private-endpoint-connection-name", "type": "Microsoft.KubernetesConfiguration/privateLinkScopes/privateEndpointConnections", + "id": "/subscriptions/00000000-1111-2222-3333-444444444444/resourceGroups/myResourceGroup/providers/Microsoft.KubernetesConfiguration/privateLinkScopes/myPrivateLinkScope/privateEndpointConnections/private-endpoint-connection-name", "properties": { - "provisioningState": "Succeeded", "privateEndpoint": { "id": "/subscriptions/55555555-6666-7777-8888-999999999999/resourceGroups/Default-Network/providers/Microsoft.Network/privateEndpoints/private-endpoint-name" }, "privateLinkServiceConnectionState": { - "status": "Approved", "description": "Auto-approved", - "actionsRequired": "None" - } + "actionsRequired": "None", + "status": "Approved" + }, + "provisioningState": "Succeeded" } } - ] - } + ], + "privateLinkScopeId": "e5dc51d3-92ed-4d7e-947a-775ea79b4919", + "provisioningState": "Succeeded", + "publicNetworkAccess": "Disabled" + }, + "tags": {} } } - } + }, + "operationId": "PrivateLinkScopes_CreateOrUpdate", + "title": "PrivateLinkScopeCreate" } diff --git a/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/privateLinkScopes/preview/2024-11-01-preview/examples/PrivateLinkScopesDelete.json b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/privateLinkScopes/preview/2024-11-01-preview/examples/PrivateLinkScopesDelete.json index 3cd94c6f6546..32ae38822922 100644 --- a/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/privateLinkScopes/preview/2024-11-01-preview/examples/PrivateLinkScopesDelete.json +++ b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/privateLinkScopes/preview/2024-11-01-preview/examples/PrivateLinkScopesDelete.json @@ -1,12 +1,14 @@ { "parameters": { "api-version": "2024-11-01-preview", - "subscriptionId": "86dc51d3-92ed-4d7e-947a-775ea79b4919", "resourceGroupName": "my-resource-group", - "scopeName": "my-privatelinkscope" + "scopeName": "my-privatelinkscope", + "subscriptionId": "86dc51d3-92ed-4d7e-947a-775ea79b4919" }, "responses": { "200": {}, "204": {} - } + }, + "operationId": "PrivateLinkScopes_Delete", + "title": "PrivateLinkScopesDelete" } diff --git a/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/privateLinkScopes/preview/2024-11-01-preview/examples/PrivateLinkScopesGet.json b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/privateLinkScopes/preview/2024-11-01-preview/examples/PrivateLinkScopesGet.json index 34a7c1dde97b..b759739aa547 100644 --- a/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/privateLinkScopes/preview/2024-11-01-preview/examples/PrivateLinkScopesGet.json +++ b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/privateLinkScopes/preview/2024-11-01-preview/examples/PrivateLinkScopesGet.json @@ -1,43 +1,45 @@ { "parameters": { "api-version": "2024-11-01-preview", - "subscriptionId": "86dc51d3-92ed-4d7e-947a-775ea79b4919", "resourceGroupName": "my-resource-group", - "scopeName": "my-privatelinkscope" + "scopeName": "my-privatelinkscope", + "subscriptionId": "86dc51d3-92ed-4d7e-947a-775ea79b4919" }, "responses": { "200": { "body": { - "id": "/subscriptions/86dc51d3-92ed-4d7e-947a-775ea79b4919/resourceGroups/my-resource-group/providers/Microsoft.KubernetesConfiguration/privateLinkScopes/my-privatelinkscope", "name": "my-privatelinkscope", "type": "Microsoft.KubernetesConfiguration/privateLinkScopes", + "id": "/subscriptions/86dc51d3-92ed-4d7e-947a-775ea79b4919/resourceGroups/my-resource-group/providers/Microsoft.KubernetesConfiguration/privateLinkScopes/my-privatelinkscope", "location": "westus", - "tags": {}, "properties": { - "privateLinkScopeId": "f5dc51d3-92ed-4d7e-947a-775ea79b4919", - "provisioningState": "Succeeded", - "publicNetworkAccess": "Disabled", "clusterResourceId": "/subscriptions/e9c17b5c-b7ef-4c29-aae7-9338ed5dcb43/resourceGroups/my-resource-group/providers/Microsoft.Kubernetes/ConnectedClusters/my-clusterName", "privateEndpointConnections": [ { - "id": "/subscriptions/00000000-1111-2222-3333-444444444444/resourceGroups/myResourceGroup/providers/Microsoft.KubernetesConfiguration/privateLinkScopes/myPrivateLinkScope/privateEndpointConnections/private-endpoint-connection-name", "name": "private-endpoint-connection-name", "type": "Microsoft.KubernetesConfiguration/privateLinkScopes/privateEndpointConnections", + "id": "/subscriptions/00000000-1111-2222-3333-444444444444/resourceGroups/myResourceGroup/providers/Microsoft.KubernetesConfiguration/privateLinkScopes/myPrivateLinkScope/privateEndpointConnections/private-endpoint-connection-name", "properties": { - "provisioningState": "Succeeded", "privateEndpoint": { "id": "/subscriptions/55555555-6666-7777-8888-999999999999/resourceGroups/Default-Network/providers/Microsoft.Network/privateEndpoints/private-endpoint-name" }, "privateLinkServiceConnectionState": { - "status": "Approved", "description": "Auto-approved", - "actionsRequired": "None" - } + "actionsRequired": "None", + "status": "Approved" + }, + "provisioningState": "Succeeded" } } - ] - } + ], + "privateLinkScopeId": "f5dc51d3-92ed-4d7e-947a-775ea79b4919", + "provisioningState": "Succeeded", + "publicNetworkAccess": "Disabled" + }, + "tags": {} } } - } + }, + "operationId": "PrivateLinkScopes_Get", + "title": "PrivateLinkScopeGet" } diff --git a/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/privateLinkScopes/preview/2024-11-01-preview/examples/PrivateLinkScopesList.json b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/privateLinkScopes/preview/2024-11-01-preview/examples/PrivateLinkScopesList.json index 51b0a6a0d309..195d598d6d0d 100644 --- a/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/privateLinkScopes/preview/2024-11-01-preview/examples/PrivateLinkScopesList.json +++ b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/privateLinkScopes/preview/2024-11-01-preview/examples/PrivateLinkScopesList.json @@ -8,51 +8,53 @@ "body": { "value": [ { - "id": "/subscriptions/86dc51d3-92ed-4d7e-947a-775ea79b4919/resourceGroups/my-resource-group/providers/Microsoft.KubernetesConfiguration/privateLinkScopes/my-privatelinkscope", "name": "my-privatelinkscope", "type": "Microsoft.KubernetesConfiguration/privateLinkScopes", + "id": "/subscriptions/86dc51d3-92ed-4d7e-947a-775ea79b4919/resourceGroups/my-resource-group/providers/Microsoft.KubernetesConfiguration/privateLinkScopes/my-privatelinkscope", "location": "westus", - "tags": {}, "properties": { + "clusterResourceId": "/subscriptions/e9c17b5c-b7ef-4c29-aae7-9338ed5dcb43/resourceGroups/my-resource-group/providers/Microsoft.Kubernetes/ConnectedClusters/my-clusterName", "privateLinkScopeId": "e5dc51d3-92ed-4d7e-947a-775ea79b4919", "provisioningState": "Succeeded", - "publicNetworkAccess": "Disabled", - "clusterResourceId": "/subscriptions/e9c17b5c-b7ef-4c29-aae7-9338ed5dcb43/resourceGroups/my-resource-group/providers/Microsoft.Kubernetes/ConnectedClusters/my-clusterName" - } + "publicNetworkAccess": "Disabled" + }, + "tags": {} }, { - "id": "/subscriptions/86dc51d3-92ed-4d7e-947a-775ea79b4919/resourceGroups/my-resource-group/providers/Microsoft.KubernetesConfiguration/privateLinkScopes/my-other-privatelinkscope", "name": "my-other-privatelinkscope", "type": "Microsoft.KubernetesConfiguration/privateLinkScopes", + "id": "/subscriptions/86dc51d3-92ed-4d7e-947a-775ea79b4919/resourceGroups/my-resource-group/providers/Microsoft.KubernetesConfiguration/privateLinkScopes/my-other-privatelinkscope", "location": "westus", - "tags": {}, "properties": { - "privateLinkScopeId": "f5dc51d3-92ed-4d7e-947a-775ea79b4919", - "provisioningState": "Succeeded", - "publicNetworkAccess": "Disabled", "clusterResourceId": "/subscriptions/e9c17b5c-b7ef-4c29-aae7-9338ed5dcb43/resourceGroups/my-resource-group/providers/Microsoft.Kubernetes/ConnectedClusters/my-clusterName", "privateEndpointConnections": [ { - "id": "/subscriptions/00000000-1111-2222-3333-444444444444/resourceGroups/myResourceGroup/providers/Microsoft.KubernetesConfiguration/privateLinkScopes/myPrivateLinkScope/privateEndpointConnections/private-endpoint-connection-name", "name": "private-endpoint-connection-name", "type": "Microsoft.KubernetesConfiguration/privateLinkScopes/privateEndpointConnections", + "id": "/subscriptions/00000000-1111-2222-3333-444444444444/resourceGroups/myResourceGroup/providers/Microsoft.KubernetesConfiguration/privateLinkScopes/myPrivateLinkScope/privateEndpointConnections/private-endpoint-connection-name", "properties": { - "provisioningState": "Succeeded", "privateEndpoint": { "id": "/subscriptions/55555555-6666-7777-8888-999999999999/resourceGroups/Default-Network/providers/Microsoft.Network/privateEndpoints/private-endpoint-name" }, "privateLinkServiceConnectionState": { - "status": "Approved", "description": "Auto-approved", - "actionsRequired": "None" - } + "actionsRequired": "None", + "status": "Approved" + }, + "provisioningState": "Succeeded" } } - ] - } + ], + "privateLinkScopeId": "f5dc51d3-92ed-4d7e-947a-775ea79b4919", + "provisioningState": "Succeeded", + "publicNetworkAccess": "Disabled" + }, + "tags": {} } ] } } - } + }, + "operationId": "PrivateLinkScopes_List", + "title": "PrivateLinkScopesList.json" } diff --git a/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/privateLinkScopes/preview/2024-11-01-preview/examples/PrivateLinkScopesListByResourceGroup.json b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/privateLinkScopes/preview/2024-11-01-preview/examples/PrivateLinkScopesListByResourceGroup.json index 97621ce31da7..7209d8e58abd 100644 --- a/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/privateLinkScopes/preview/2024-11-01-preview/examples/PrivateLinkScopesListByResourceGroup.json +++ b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/privateLinkScopes/preview/2024-11-01-preview/examples/PrivateLinkScopesListByResourceGroup.json @@ -1,78 +1,80 @@ { "parameters": { "api-version": "2024-11-01-preview", - "subscriptionId": "86dc51d3-92ed-4d7e-947a-775ea79b4919", - "resourceGroupName": "my-resource-group" + "resourceGroupName": "my-resource-group", + "subscriptionId": "86dc51d3-92ed-4d7e-947a-775ea79b4919" }, "responses": { "200": { "body": { + "nextLink": null, "value": [ { - "id": "/subscriptions/86dc51d3-92ed-4d7e-947a-775ea79b4919/resourceGroups/my-resource-group/providers/Microsoft.KubernetesConfiguration/privateLinkScopes/my-privatelinkscope", "name": "my-privatelinkscope", "type": "Microsoft.KubernetesConfiguration/privateLinkScopes", + "id": "/subscriptions/86dc51d3-92ed-4d7e-947a-775ea79b4919/resourceGroups/my-resource-group/providers/Microsoft.KubernetesConfiguration/privateLinkScopes/my-privatelinkscope", "location": "westus", - "tags": {}, "properties": { - "privateLinkScopeId": "f5dc51d3-92ed-4d7e-947a-775ea79b4919", - "provisioningState": "Succeeded", - "publicNetworkAccess": "Disabled", "clusterResourceId": "/subscriptions/e9c17b5c-b7ef-4c29-aae7-9338ed5dcb43/resourceGroups/my-resource-group/providers/Microsoft.Kubernetes/ConnectedClusters/my-clusterName", "privateEndpointConnections": [ { - "id": "/subscriptions/00000000-1111-2222-3333-444444444444/resourceGroups/myResourceGroup/providers/Microsoft.KubernetesConfiguration/privateLinkScopes/myPrivateLinkScope/privateEndpointConnections/private-endpoint-connection-name", "name": "private-endpoint-connection-name", "type": "Microsoft.KubernetesConfiguration/privateLinkScopes/privateEndpointConnections", + "id": "/subscriptions/00000000-1111-2222-3333-444444444444/resourceGroups/myResourceGroup/providers/Microsoft.KubernetesConfiguration/privateLinkScopes/myPrivateLinkScope/privateEndpointConnections/private-endpoint-connection-name", "properties": { - "provisioningState": "Succeeded", "privateEndpoint": { "id": "/subscriptions/55555555-6666-7777-8888-999999999999/resourceGroups/Default-Network/providers/Microsoft.Network/privateEndpoints/private-endpoint-name" }, "privateLinkServiceConnectionState": { - "status": "Approved", "description": "Auto-approved", - "actionsRequired": "None" - } + "actionsRequired": "None", + "status": "Approved" + }, + "provisioningState": "Succeeded" } } - ] - } + ], + "privateLinkScopeId": "f5dc51d3-92ed-4d7e-947a-775ea79b4919", + "provisioningState": "Succeeded", + "publicNetworkAccess": "Disabled" + }, + "tags": {} }, { - "id": "/subscriptions/86dc51d3-92ed-4d7e-947a-775ea79b4919/resourceGroups/my-resource-group/providers/Microsoft.KubernetesConfiguration/privateLinkScopes/my-other-privatelinkscope", "name": "my-other-privatelinkscope", "type": "Microsoft.KubernetesConfiguration/privateLinkScopes", + "id": "/subscriptions/86dc51d3-92ed-4d7e-947a-775ea79b4919/resourceGroups/my-resource-group/providers/Microsoft.KubernetesConfiguration/privateLinkScopes/my-other-privatelinkscope", "location": "westus", - "tags": {}, "properties": { - "privateLinkScopeId": "a5dc51d3-92ed-4d7e-947a-775ea79b4919", - "provisioningState": "Succeeded", - "publicNetworkAccess": "Disabled", "clusterResourceId": "/subscriptions/e9c17b5c-b7ef-4c29-aae7-9338ed5dcb43/resourceGroups/my-resource-group/providers/Microsoft.Kubernetes/ConnectedClusters/my-clusterName", "privateEndpointConnections": [ { - "id": "/subscriptions/00000000-1111-2222-3333-444444444444/resourceGroups/myResourceGroup/providers/Microsoft.KubernetesConfiguration/privateLinkScopes/myPrivateLinkScope/privateEndpointConnections/private-endpoint-connection-name", "name": "private-endpoint-connection-name", "type": "Microsoft.KubernetesConfiguration/privateLinkScopes/privateEndpointConnections", + "id": "/subscriptions/00000000-1111-2222-3333-444444444444/resourceGroups/myResourceGroup/providers/Microsoft.KubernetesConfiguration/privateLinkScopes/myPrivateLinkScope/privateEndpointConnections/private-endpoint-connection-name", "properties": { - "provisioningState": "Succeeded", "privateEndpoint": { "id": "/subscriptions/55555555-6666-7777-8888-999999999999/resourceGroups/Default-Network/providers/Microsoft.Network/privateEndpoints/private-endpoint-name" }, "privateLinkServiceConnectionState": { - "status": "Approved", "description": "Auto-approved", - "actionsRequired": "None" - } + "actionsRequired": "None", + "status": "Approved" + }, + "provisioningState": "Succeeded" } } - ] - } + ], + "privateLinkScopeId": "a5dc51d3-92ed-4d7e-947a-775ea79b4919", + "provisioningState": "Succeeded", + "publicNetworkAccess": "Disabled" + }, + "tags": {} } - ], - "nextLink": null + ] } } - } + }, + "operationId": "PrivateLinkScopes_ListByResourceGroup", + "title": "PrivateLinkScopeListByResourceGroup" } diff --git a/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/privateLinkScopes/preview/2024-11-01-preview/examples/PrivateLinkScopesUpdate.json b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/privateLinkScopes/preview/2024-11-01-preview/examples/PrivateLinkScopesUpdate.json index 92f98ec70add..e6a55f07cbe2 100644 --- a/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/privateLinkScopes/preview/2024-11-01-preview/examples/PrivateLinkScopesUpdate.json +++ b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/privateLinkScopes/preview/2024-11-01-preview/examples/PrivateLinkScopesUpdate.json @@ -1,86 +1,88 @@ { "parameters": { "api-version": "2024-11-01-preview", - "subscriptionId": "86dc51d3-92ed-4d7e-947a-775ea79b4919", - "resourceGroupName": "my-resource-group", - "scopeName": "my-privatelinkscope", "parameters": { "location": "westus", "tags": { "Tag1": "Value1" } - } + }, + "resourceGroupName": "my-resource-group", + "scopeName": "my-privatelinkscope", + "subscriptionId": "86dc51d3-92ed-4d7e-947a-775ea79b4919" }, "responses": { "200": { "body": { - "id": "/subscriptions/86dc51d3-92ed-4d7e-947a-775ea79b4919/resourceGroups/my-resource-group/providers/Microsoft.KubernetesConfiguration/privateLinkScopes/my-privatelinkscope", "name": "my-privatelinkscope", "type": "Microsoft.KubernetesConfiguration/privateLinkScopes", + "id": "/subscriptions/86dc51d3-92ed-4d7e-947a-775ea79b4919/resourceGroups/my-resource-group/providers/Microsoft.KubernetesConfiguration/privateLinkScopes/my-privatelinkscope", "location": "westus", - "tags": { - "Tag1": "Value1" - }, "properties": { - "privateLinkScopeId": "e5dc51d3-92ed-4d7e-947a-775ea79b4919", - "provisioningState": "Succeeded", - "publicNetworkAccess": "Disabled", "clusterResourceId": "/subscriptions/e9c17b5c-b7ef-4c29-aae7-9338ed5dcb43/resourceGroups/my-resource-group/providers/Microsoft.Kubernetes/ConnectedClusters/my-clusterName", "privateEndpointConnections": [ { - "id": "/subscriptions/00000000-1111-2222-3333-444444444444/resourceGroups/myResourceGroup/providers/Microsoft.KubernetesConfiguration/privateLinkScopes/myPrivateLinkScope/privateEndpointConnections/private-endpoint-connection-name", "name": "private-endpoint-connection-name", "type": "Microsoft.KubernetesConfiguration/privateLinkScopes/privateEndpointConnections", + "id": "/subscriptions/00000000-1111-2222-3333-444444444444/resourceGroups/myResourceGroup/providers/Microsoft.KubernetesConfiguration/privateLinkScopes/myPrivateLinkScope/privateEndpointConnections/private-endpoint-connection-name", "properties": { - "provisioningState": "Succeeded", "privateEndpoint": { "id": "/subscriptions/55555555-6666-7777-8888-999999999999/resourceGroups/Default-Network/providers/Microsoft.Network/privateEndpoints/private-endpoint-name" }, "privateLinkServiceConnectionState": { - "status": "Approved", "description": "Auto-approved", - "actionsRequired": "None" - } + "actionsRequired": "None", + "status": "Approved" + }, + "provisioningState": "Succeeded" } } - ] + ], + "privateLinkScopeId": "e5dc51d3-92ed-4d7e-947a-775ea79b4919", + "provisioningState": "Succeeded", + "publicNetworkAccess": "Disabled" + }, + "tags": { + "Tag1": "Value1" } } }, "201": { "body": { - "id": "/subscriptions/86dc51d3-92ed-4d7e-947a-775ea79b4919/resourceGroups/my-resource-group/providers/Microsoft.KubernetesConfiguration/privateLinkScopes/my-privatelinkscope", "name": "my-privatelinkscope", "type": "Microsoft.KubernetesConfiguration/privateLinkScopes", + "id": "/subscriptions/86dc51d3-92ed-4d7e-947a-775ea79b4919/resourceGroups/my-resource-group/providers/Microsoft.KubernetesConfiguration/privateLinkScopes/my-privatelinkscope", "location": "westus", - "tags": { - "Tag1": "Value1" - }, "properties": { - "privateLinkScopeId": "e5dc51d3-92ed-4d7e-947a-775ea79b4919", - "provisioningState": "Succeeded", - "publicNetworkAccess": "Disabled", "clusterResourceId": "/subscriptions/e9c17b5c-b7ef-4c29-aae7-9338ed5dcb43/resourceGroups/my-resource-group/providers/Microsoft.Kubernetes/ConnectedClusters/my-clusterName", "privateEndpointConnections": [ { - "id": "/subscriptions/00000000-1111-2222-3333-444444444444/resourceGroups/myResourceGroup/providers/Microsoft.KubernetesConfiguration/privateLinkScopes/myPrivateLinkScope/privateEndpointConnections/private-endpoint-connection-name", "name": "private-endpoint-connection-name", "type": "Microsoft.KubernetesConfiguration/privateLinkScopes/privateEndpointConnections", + "id": "/subscriptions/00000000-1111-2222-3333-444444444444/resourceGroups/myResourceGroup/providers/Microsoft.KubernetesConfiguration/privateLinkScopes/myPrivateLinkScope/privateEndpointConnections/private-endpoint-connection-name", "properties": { - "provisioningState": "Succeeded", "privateEndpoint": { "id": "/subscriptions/55555555-6666-7777-8888-999999999999/resourceGroups/Default-Network/providers/Microsoft.Network/privateEndpoints/private-endpoint-name" }, "privateLinkServiceConnectionState": { - "status": "Approved", "description": "Auto-approved", - "actionsRequired": "None" - } + "actionsRequired": "None", + "status": "Approved" + }, + "provisioningState": "Succeeded" } } - ] + ], + "privateLinkScopeId": "e5dc51d3-92ed-4d7e-947a-775ea79b4919", + "provisioningState": "Succeeded", + "publicNetworkAccess": "Disabled" + }, + "tags": { + "Tag1": "Value1" } } } - } + }, + "operationId": "PrivateLinkScopes_CreateOrUpdate", + "title": "PrivateLinkScopeUpdate" } diff --git a/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/privateLinkScopes/preview/2024-11-01-preview/examples/PrivateLinkScopesUpdateTagsOnly.json b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/privateLinkScopes/preview/2024-11-01-preview/examples/PrivateLinkScopesUpdateTagsOnly.json index 9c1a927631bc..42bc48e9eccc 100644 --- a/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/privateLinkScopes/preview/2024-11-01-preview/examples/PrivateLinkScopesUpdateTagsOnly.json +++ b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/privateLinkScopes/preview/2024-11-01-preview/examples/PrivateLinkScopesUpdateTagsOnly.json @@ -1,52 +1,54 @@ { "parameters": { - "api-version": "2024-11-01-preview", - "subscriptionId": "subid", - "resourceGroupName": "my-resource-group", - "scopeName": "my-privatelinkscope", "PrivateLinkScopeTags": { "tags": { "Tag1": "Value1", "Tag2": "Value2" } - } + }, + "api-version": "2024-11-01-preview", + "resourceGroupName": "my-resource-group", + "scopeName": "my-privatelinkscope", + "subscriptionId": "subid" }, "responses": { "200": { "body": { - "id": "/subscriptions/subid/resourceGroups/my-resource-group/providers/Microsoft.KubernetesConfiguration/privateLinkScopes/my-privatelinkscope", "name": "my-privatelinkscope", "type": "Microsoft.KubernetesConfiguration/privateLinkScopes", + "id": "/subscriptions/subid/resourceGroups/my-resource-group/providers/Microsoft.KubernetesConfiguration/privateLinkScopes/my-privatelinkscope", "location": "westus", - "tags": { - "Tag1": "Value1", - "Tag2": "Value2" - }, "properties": { - "privateLinkScopeId": "e5dc51d3-92ed-4d7e-947a-775ea79b4919", - "provisioningState": "Succeeded", - "publicNetworkAccess": "Disabled", "clusterResourceId": "/subscriptions/e9c17b5c-b7ef-4c29-aae7-9338ed5dcb43/resourceGroups/my-resource-group/providers/Microsoft.Kubernetes/ConnectedClusters/my-clusterName", "privateEndpointConnections": [ { - "id": "/subscriptions/00000000-1111-2222-3333-444444444444/resourceGroups/myResourceGroup/providers/Microsoft.KubernetesConfiguration/privateLinkScopes/myPrivateLinkScope/privateEndpointConnections/private-endpoint-connection-name", "name": "private-endpoint-connection-name", "type": "Microsoft.KubernetesConfiguration/privateLinkScopes/privateEndpointConnections", + "id": "/subscriptions/00000000-1111-2222-3333-444444444444/resourceGroups/myResourceGroup/providers/Microsoft.KubernetesConfiguration/privateLinkScopes/myPrivateLinkScope/privateEndpointConnections/private-endpoint-connection-name", "properties": { - "provisioningState": "Succeeded", "privateEndpoint": { "id": "/subscriptions/55555555-6666-7777-8888-999999999999/resourceGroups/Default-Network/providers/Microsoft.Network/privateEndpoints/private-endpoint-name" }, "privateLinkServiceConnectionState": { - "status": "Approved", "description": "Auto-approved", - "actionsRequired": "None" - } + "actionsRequired": "None", + "status": "Approved" + }, + "provisioningState": "Succeeded" } } - ] + ], + "privateLinkScopeId": "e5dc51d3-92ed-4d7e-947a-775ea79b4919", + "provisioningState": "Succeeded", + "publicNetworkAccess": "Disabled" + }, + "tags": { + "Tag1": "Value1", + "Tag2": "Value2" } } } - } + }, + "operationId": "PrivateLinkScopes_UpdateTags", + "title": "PrivateLinkScopeUpdateTagsOnly" } diff --git a/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/privateLinkScopes/preview/2024-11-01-preview/privateLinkScopes.json b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/privateLinkScopes/preview/2024-11-01-preview/privateLinkScopes.json index c4bd807b40c9..973833e2a27f 100644 --- a/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/privateLinkScopes/preview/2024-11-01-preview/privateLinkScopes.json +++ b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/privateLinkScopes/preview/2024-11-01-preview/privateLinkScopes.json @@ -2,20 +2,22 @@ "swagger": "2.0", "info": { "title": "MicrosoftKubernetesConfigurationClient", - "x-ms-code-generation-settings": { - "name": "MicrosoftKubernetesConfigurationClient" - }, + "version": "2024-11-01-preview", "description": "Azure Arc K8s Clusters API reference for Private Link's Scopes management.", - "version": "2024-11-01-preview" + "x-typespec-generated": [ + { + "emitter": "@azure-tools/typespec-autorest" + } + ] }, - "host": "management.azure.com", "schemes": [ "https" ], - "consumes": [ + "host": "management.azure.com", + "produces": [ "application/json" ], - "produces": [ + "consumes": [ "application/json" ], "security": [ @@ -28,19 +30,27 @@ "securityDefinitions": { "azure_auth": { "type": "oauth2", - "authorizationUrl": "https://login.microsoftonline.com/common/oauth2/authorize", + "description": "Azure Active Directory OAuth2 Flow.", "flow": "implicit", - "description": "Azure Active Directory OAuth2 Flow", + "authorizationUrl": "https://login.microsoftonline.com/common/oauth2/authorize", "scopes": { "user_impersonation": "impersonate your user account" } } }, + "tags": [ + { + "name": "PrivateLinkResources" + }, + { + "name": "PrivateEndpointConnections" + } + ], "paths": { "/subscriptions/{subscriptionId}/providers/Microsoft.KubernetesConfiguration/privateLinkScopes": { "get": { - "description": "Gets a list of all Azure Arc PrivateLinkScopes within a subscription.", "operationId": "PrivateLinkScopes_List", + "description": "Gets a list of all Azure Arc PrivateLinkScopes within a subscription.", "parameters": [ { "$ref": "../../../../../../common-types/resource-management/v3/types.json#/parameters/ApiVersionParameter" @@ -51,15 +61,15 @@ ], "responses": { "200": { - "description": "A list containing 0 or more Azure Arc PrivateLinkScope definitions.", + "description": "Azure operation completed successfully.", "schema": { "$ref": "#/definitions/KubernetesConfigurationPrivateLinkScopeListResult" } }, "default": { - "description": "Error response describing why the operation failed.", + "description": "An unexpected error response.", "schema": { - "$ref": "../../../../../../common-types/resource-management/v2/types.json#/definitions/ErrorResponse" + "$ref": "../../../../../../common-types/resource-management/v3/types.json#/definitions/ErrorResponse" } } }, @@ -75,30 +85,30 @@ }, "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.KubernetesConfiguration/privateLinkScopes": { "get": { - "description": "Gets a list of Azure Arc PrivateLinkScopes within a resource group.", "operationId": "PrivateLinkScopes_ListByResourceGroup", + "description": "Gets a list of Azure Arc PrivateLinkScopes within a resource group.", "parameters": [ - { - "$ref": "../../../../../../common-types/resource-management/v3/types.json#/parameters/ResourceGroupNameParameter" - }, { "$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" } ], "responses": { "200": { - "description": "A list containing 0 or more Azure Arc PrivateLinkScope definitions.", + "description": "Azure operation completed successfully.", "schema": { "$ref": "#/definitions/KubernetesConfigurationPrivateLinkScopeListResult" } }, "default": { - "description": "Error response describing why the operation failed.", + "description": "An unexpected error response.", "schema": { - "$ref": "../../../../../../common-types/resource-management/v2/types.json#/definitions/ErrorResponse" + "$ref": "../../../../../../common-types/resource-management/v3/types.json#/definitions/ErrorResponse" } } }, @@ -113,71 +123,38 @@ } }, "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.KubernetesConfiguration/privateLinkScopes/{scopeName}": { - "delete": { - "description": "Deletes a Azure Arc PrivateLinkScope.", - "operationId": "PrivateLinkScopes_Delete", + "get": { + "operationId": "PrivateLinkScopes_Get", + "description": "Returns a Azure Arc PrivateLinkScope.", "parameters": [ - { - "$ref": "../../../../../../common-types/resource-management/v3/types.json#/parameters/ResourceGroupNameParameter" - }, { "$ref": "../../../../../../common-types/resource-management/v3/types.json#/parameters/ApiVersionParameter" }, { "$ref": "../../../../../../common-types/resource-management/v3/types.json#/parameters/SubscriptionIdParameter" }, - { - "$ref": "#/parameters/PrivateLinkScopeName" - } - ], - "responses": { - "200": { - "description": "Successful request when deleting an Azure Arc PrivateLinkScope." - }, - "204": { - "description": "The specified PrivateLinkScope does not exist." - }, - "default": { - "description": "Error response describing why the operation failed.", - "schema": { - "$ref": "../../../../../../common-types/resource-management/v2/types.json#/definitions/ErrorResponse" - } - } - }, - "x-ms-examples": { - "PrivateLinkScopesDelete": { - "$ref": "./examples/PrivateLinkScopesDelete.json" - } - } - }, - "get": { - "description": "Returns a Azure Arc PrivateLinkScope.", - "operationId": "PrivateLinkScopes_Get", - "parameters": [ { "$ref": "../../../../../../common-types/resource-management/v3/types.json#/parameters/ResourceGroupNameParameter" }, { - "$ref": "../../../../../../common-types/resource-management/v3/types.json#/parameters/ApiVersionParameter" - }, - { - "$ref": "../../../../../../common-types/resource-management/v3/types.json#/parameters/SubscriptionIdParameter" - }, - { - "$ref": "#/parameters/PrivateLinkScopeName" + "name": "scopeName", + "in": "path", + "description": "The name of the Azure Arc PrivateLinkScope resource.", + "required": true, + "type": "string" } ], "responses": { "200": { - "description": "Azure Arc PrivateLinkScope definition.", + "description": "Azure operation completed successfully.", "schema": { "$ref": "#/definitions/KubernetesConfigurationPrivateLinkScope" } }, "default": { - "description": "Error response describing why the operation failed.", + "description": "An unexpected error response.", "schema": { - "$ref": "../../../../../../common-types/resource-management/v2/types.json#/definitions/ErrorResponse" + "$ref": "../../../../../../common-types/resource-management/v3/types.json#/definitions/ErrorResponse" } } }, @@ -188,12 +165,9 @@ } }, "put": { - "description": "Creates (or updates) a Azure Arc PrivateLinkScope. Note: You cannot specify a different value for InstrumentationKey nor AppId in the Put operation.", "operationId": "PrivateLinkScopes_CreateOrUpdate", + "description": "Creates (or updates) a Azure Arc PrivateLinkScope. Note: You cannot specify a different value for InstrumentationKey nor AppId in the Put operation.", "parameters": [ - { - "$ref": "../../../../../../common-types/resource-management/v3/types.json#/parameters/ResourceGroupNameParameter" - }, { "$ref": "../../../../../../common-types/resource-management/v3/types.json#/parameters/ApiVersionParameter" }, @@ -201,12 +175,19 @@ "$ref": "../../../../../../common-types/resource-management/v3/types.json#/parameters/SubscriptionIdParameter" }, { - "$ref": "#/parameters/PrivateLinkScopeName" + "$ref": "../../../../../../common-types/resource-management/v3/types.json#/parameters/ResourceGroupNameParameter" + }, + { + "name": "scopeName", + "in": "path", + "description": "The name of the Azure Arc PrivateLinkScope resource.", + "required": true, + "type": "string" }, { "name": "parameters", - "description": "Properties that need to be specified to create or update a Azure Arc for Servers and Clusters PrivateLinkScope.", "in": "body", + "description": "Properties that need to be specified to create or update a Azure Arc for Servers and Clusters PrivateLinkScope.", "required": true, "schema": { "$ref": "#/definitions/KubernetesConfigurationPrivateLinkScope" @@ -215,21 +196,21 @@ ], "responses": { "200": { - "description": "Successful request when creating or updating a Azure Arc PrivateLinkScope. The updated PrivateLinkScope is returned.", + "description": "Resource 'KubernetesConfigurationPrivateLinkScope' update operation succeeded", "schema": { "$ref": "#/definitions/KubernetesConfigurationPrivateLinkScope" } }, "201": { - "description": "Successful request when creating or updating a Azure Arc PrivateLinkScope. The updated PrivateLinkScope was created and is returned.", + "description": "Resource 'KubernetesConfigurationPrivateLinkScope' create operation succeeded", "schema": { "$ref": "#/definitions/KubernetesConfigurationPrivateLinkScope" } }, "default": { - "description": "Error response describing why the operation failed.", + "description": "An unexpected error response.", "schema": { - "$ref": "../../../../../../common-types/resource-management/v2/types.json#/definitions/ErrorResponse" + "$ref": "../../../../../../common-types/resource-management/v3/types.json#/definitions/ErrorResponse" } } }, @@ -243,12 +224,9 @@ } }, "patch": { - "description": "Updates an existing PrivateLinkScope's tags. To update other fields use the CreateOrUpdate method.", "operationId": "PrivateLinkScopes_UpdateTags", + "description": "Updates an existing PrivateLinkScope's tags. To update other fields use the CreateOrUpdate method.", "parameters": [ - { - "$ref": "../../../../../../common-types/resource-management/v3/types.json#/parameters/ResourceGroupNameParameter" - }, { "$ref": "../../../../../../common-types/resource-management/v3/types.json#/parameters/ApiVersionParameter" }, @@ -256,12 +234,19 @@ "$ref": "../../../../../../common-types/resource-management/v3/types.json#/parameters/SubscriptionIdParameter" }, { - "$ref": "#/parameters/PrivateLinkScopeName" + "$ref": "../../../../../../common-types/resource-management/v3/types.json#/parameters/ResourceGroupNameParameter" + }, + { + "name": "scopeName", + "in": "path", + "description": "The name of the Azure Arc PrivateLinkScope resource.", + "required": true, + "type": "string" }, { "name": "PrivateLinkScopeTags", - "description": "Updated tag information to set into the PrivateLinkScope instance.", "in": "body", + "description": "Updated tag information to set into the PrivateLinkScope instance.", "required": true, "schema": { "$ref": "#/definitions/TagsResource" @@ -270,15 +255,15 @@ ], "responses": { "200": { - "description": "Updating the Azure Arc PrivateLinkScope's tags was successful. PrivateLinkScope tags are updated and returned with the rest of the PrivateLinkScope's object properties.", + "description": "Azure operation completed successfully.", "schema": { "$ref": "#/definitions/KubernetesConfigurationPrivateLinkScope" } }, "default": { - "description": "Error response describing why the operation failed.", + "description": "An unexpected error response.", "schema": { - "$ref": "../../../../../../common-types/resource-management/v2/types.json#/definitions/ErrorResponse" + "$ref": "../../../../../../common-types/resource-management/v3/types.json#/definitions/ErrorResponse" } } }, @@ -287,114 +272,118 @@ "$ref": "./examples/PrivateLinkScopesUpdateTagsOnly.json" } } - } - }, - "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.KubernetesConfiguration/privateLinkScopes/{scopeName}/privateLinkResources": { - "get": { - "tags": [ - "PrivateLinkResources" - ], - "description": "Gets the private link resources that need to be created for a Azure Monitor PrivateLinkScope.", - "operationId": "PrivateLinkResources_ListByPrivateLinkScope", + }, + "delete": { + "operationId": "PrivateLinkScopes_Delete", + "description": "Deletes a Azure Arc PrivateLinkScope.", "parameters": [ { - "$ref": "../../../../../../common-types/resource-management/v3/types.json#/parameters/SubscriptionIdParameter" + "$ref": "../../../../../../common-types/resource-management/v3/types.json#/parameters/ApiVersionParameter" }, { - "$ref": "../../../../../../common-types/resource-management/v3/types.json#/parameters/ResourceGroupNameParameter" + "$ref": "../../../../../../common-types/resource-management/v3/types.json#/parameters/SubscriptionIdParameter" }, { - "$ref": "../../../../../../common-types/resource-management/v3/types.json#/parameters/ApiVersionParameter" + "$ref": "../../../../../../common-types/resource-management/v3/types.json#/parameters/ResourceGroupNameParameter" }, { - "$ref": "#/parameters/PrivateLinkScopeName" + "name": "scopeName", + "in": "path", + "description": "The name of the Azure Arc PrivateLinkScope resource.", + "required": true, + "type": "string" } ], "responses": { "200": { - "description": "Successfully retrieved private link resources.", - "schema": { - "$ref": "../../../../../../common-types/resource-management/v3/privatelinks.json#/definitions/PrivateLinkResourceListResult" - } + "description": "Resource deleted successfully." + }, + "204": { + "description": "Resource does not exist." }, "default": { - "description": "Error response describing why the operation failed.", + "description": "An unexpected error response.", "schema": { - "$ref": "../../../../../../common-types/resource-management/v2/types.json#/definitions/ErrorResponse" + "$ref": "../../../../../../common-types/resource-management/v3/types.json#/definitions/ErrorResponse" } } }, "x-ms-examples": { - "Gets private endpoint connection.": { - "$ref": "./examples/PrivateLinkScopePrivateLinkResourceListGet.json" + "PrivateLinkScopesDelete": { + "$ref": "./examples/PrivateLinkScopesDelete.json" } } } }, - "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.KubernetesConfiguration/privateLinkScopes/{scopeName}/privateLinkResources/{groupName}": { + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.KubernetesConfiguration/privateLinkScopes/{scopeName}/privateEndpointConnections": { "get": { + "operationId": "PrivateEndpointConnections_ListByPrivateLinkScope", "tags": [ - "PrivateLinkResources" + "PrivateEndpointConnections" ], - "description": "Gets the private link resources that need to be created for a Azure Monitor PrivateLinkScope.", - "operationId": "PrivateLinkResources_Get", + "description": "Gets all private endpoint connections on a private link scope.", "parameters": [ { - "$ref": "../../../../../../common-types/resource-management/v3/types.json#/parameters/SubscriptionIdParameter" - }, - { - "$ref": "../../../../../../common-types/resource-management/v3/types.json#/parameters/ResourceGroupNameParameter" + "$ref": "../../../../../../common-types/resource-management/v3/types.json#/parameters/ApiVersionParameter" }, { - "$ref": "../../../../../../common-types/resource-management/v3/types.json#/parameters/ApiVersionParameter" + "$ref": "../../../../../../common-types/resource-management/v3/types.json#/parameters/SubscriptionIdParameter" }, { - "$ref": "#/parameters/PrivateLinkScopeName" + "$ref": "../../../../../../common-types/resource-management/v3/types.json#/parameters/ResourceGroupNameParameter" }, { - "$ref": "#/parameters/GroupNameParameter" + "name": "scopeName", + "in": "path", + "description": "The name of the Azure Arc PrivateLinkScope resource.", + "required": true, + "type": "string" } ], "responses": { "200": { - "description": "Successfully retrieved a specified private link resource.", + "description": "Azure operation completed successfully.", "schema": { - "$ref": "../../../../../../common-types/resource-management/v3/privatelinks.json#/definitions/PrivateLinkResource" + "$ref": "#/definitions/PrivateEndpointConnectionListResult" } }, "default": { - "description": "Error response describing why the operation failed.", + "description": "An unexpected error response.", "schema": { - "$ref": "../../../../../../common-types/resource-management/v2/types.json#/definitions/ErrorResponse" + "$ref": "../../../../../../common-types/resource-management/v3/types.json#/definitions/ErrorResponse" } } }, "x-ms-examples": { - "Gets private endpoint connection.": { - "$ref": "./examples/PrivateLinkScopePrivateLinkResourceGet.json" + "Gets list of private endpoint connections on a private link scope.": { + "$ref": "./examples/PrivateEndpointConnectionList.json" } } } }, "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.KubernetesConfiguration/privateLinkScopes/{scopeName}/privateEndpointConnections/{privateEndpointConnectionName}": { "get": { + "operationId": "PrivateEndpointConnections_Get", "tags": [ "PrivateEndpointConnections" ], "description": "Gets a private endpoint connection.", - "operationId": "PrivateEndpointConnections_Get", "parameters": [ { - "$ref": "../../../../../../common-types/resource-management/v3/types.json#/parameters/SubscriptionIdParameter" + "$ref": "../../../../../../common-types/resource-management/v3/types.json#/parameters/ApiVersionParameter" }, { - "$ref": "../../../../../../common-types/resource-management/v3/types.json#/parameters/ResourceGroupNameParameter" + "$ref": "../../../../../../common-types/resource-management/v3/types.json#/parameters/SubscriptionIdParameter" }, { - "$ref": "../../../../../../common-types/resource-management/v3/types.json#/parameters/ApiVersionParameter" + "$ref": "../../../../../../common-types/resource-management/v3/types.json#/parameters/ResourceGroupNameParameter" }, { - "$ref": "#/parameters/PrivateLinkScopeName" + "name": "scopeName", + "in": "path", + "description": "The name of the Azure Arc PrivateLinkScope resource.", + "required": true, + "type": "string" }, { "$ref": "../../../../../../common-types/resource-management/v3/privatelinks.json#/parameters/PrivateEndpointConnectionName" @@ -402,15 +391,15 @@ ], "responses": { "200": { - "description": "Successfully retrieved a specified private endpoint connection.", + "description": "Azure operation completed successfully.", "schema": { "$ref": "../../../../../../common-types/resource-management/v3/privatelinks.json#/definitions/PrivateEndpointConnection" } }, "default": { - "description": "Error response describing why the operation failed.", + "description": "An unexpected error response.", "schema": { - "$ref": "../../../../../../common-types/resource-management/v2/types.json#/definitions/ErrorResponse" + "$ref": "../../../../../../common-types/resource-management/v3/types.json#/definitions/ErrorResponse" } } }, @@ -421,23 +410,27 @@ } }, "put": { + "operationId": "PrivateEndpointConnections_CreateOrUpdate", "tags": [ "PrivateEndpointConnections" ], "description": "Approve or reject a private endpoint connection with a given name.", - "operationId": "PrivateEndpointConnections_CreateOrUpdate", "parameters": [ { - "$ref": "../../../../../../common-types/resource-management/v3/types.json#/parameters/SubscriptionIdParameter" + "$ref": "../../../../../../common-types/resource-management/v3/types.json#/parameters/ApiVersionParameter" }, { - "$ref": "../../../../../../common-types/resource-management/v3/types.json#/parameters/ResourceGroupNameParameter" + "$ref": "../../../../../../common-types/resource-management/v3/types.json#/parameters/SubscriptionIdParameter" }, { - "$ref": "../../../../../../common-types/resource-management/v3/types.json#/parameters/ApiVersionParameter" + "$ref": "../../../../../../common-types/resource-management/v3/types.json#/parameters/ResourceGroupNameParameter" }, { - "$ref": "#/parameters/PrivateLinkScopeName" + "name": "scopeName", + "in": "path", + "description": "The name of the Azure Arc PrivateLinkScope resource.", + "required": true, + "type": "string" }, { "$ref": "../../../../../../common-types/resource-management/v3/privatelinks.json#/parameters/PrivateEndpointConnectionName" @@ -445,55 +438,74 @@ { "name": "properties", "in": "body", + "description": "The private endpoint connection properties.", "required": true, "schema": { "$ref": "../../../../../../common-types/resource-management/v3/privatelinks.json#/definitions/PrivateEndpointConnection" - }, - "description": "The private endpoint connection properties." + } } ], "responses": { "200": { - "description": "Successfully approved or rejected private endpoint connection.", + "description": "Resource 'PrivateEndpointConnection' update operation succeeded", "schema": { "$ref": "../../../../../../common-types/resource-management/v3/privatelinks.json#/definitions/PrivateEndpointConnection" } }, "202": { - "description": "Accepted" + "description": "Resource operation accepted.", + "headers": { + "Location": { + "type": "string", + "description": "The Location header contains the URL where the status of the long running operation can be checked." + }, + "Retry-After": { + "type": "integer", + "format": "int32", + "description": "The Retry-After header can indicate how long the client should wait before polling the operation status." + } + } }, "default": { - "description": "Error response describing why the operation failed.", + "description": "An unexpected error response.", "schema": { - "$ref": "../../../../../../common-types/resource-management/v2/types.json#/definitions/ErrorResponse" + "$ref": "../../../../../../common-types/resource-management/v3/types.json#/definitions/ErrorResponse" } } }, - "x-ms-long-running-operation": true, "x-ms-examples": { "Approve or reject a private endpoint connection with a given name.": { "$ref": "./examples/PrivateEndpointConnectionUpdate.json" } - } + }, + "x-ms-long-running-operation-options": { + "final-state-via": "location", + "final-state-schema": "../../../../../../common-types/resource-management/v3/privatelinks.json#/definitions/PrivateEndpointConnection" + }, + "x-ms-long-running-operation": true }, "delete": { + "operationId": "PrivateEndpointConnections_Delete", "tags": [ "PrivateEndpointConnections" ], "description": "Deletes a private endpoint connection with a given name.", - "operationId": "PrivateEndpointConnections_Delete", "parameters": [ { - "$ref": "../../../../../../common-types/resource-management/v3/types.json#/parameters/SubscriptionIdParameter" + "$ref": "../../../../../../common-types/resource-management/v3/types.json#/parameters/ApiVersionParameter" }, { - "$ref": "../../../../../../common-types/resource-management/v3/types.json#/parameters/ResourceGroupNameParameter" + "$ref": "../../../../../../common-types/resource-management/v3/types.json#/parameters/SubscriptionIdParameter" }, { - "$ref": "../../../../../../common-types/resource-management/v3/types.json#/parameters/ApiVersionParameter" + "$ref": "../../../../../../common-types/resource-management/v3/types.json#/parameters/ResourceGroupNameParameter" }, { - "$ref": "#/parameters/PrivateLinkScopeName" + "name": "scopeName", + "in": "path", + "description": "The name of the Azure Arc PrivateLinkScope resource.", + "required": true, + "type": "string" }, { "$ref": "../../../../../../common-types/resource-management/v3/privatelinks.json#/parameters/PrivateEndpointConnectionName" @@ -501,15 +513,15 @@ ], "responses": { "200": { - "description": "Successfully deleted private endpoint connection." + "description": "Resource deleted successfully." }, "204": { - "description": "Private endpoint connection does not exist." + "description": "Resource does not exist." }, "default": { - "description": "Error response describing why the operation failed.", + "description": "An unexpected error response.", "schema": { - "$ref": "../../../../../../common-types/resource-management/v2/types.json#/definitions/ErrorResponse" + "$ref": "../../../../../../common-types/resource-management/v3/types.json#/definitions/ErrorResponse" } } }, @@ -520,174 +532,318 @@ } } }, - "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.KubernetesConfiguration/privateLinkScopes/{scopeName}/privateEndpointConnections": { + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.KubernetesConfiguration/privateLinkScopes/{scopeName}/privateLinkResources": { "get": { + "operationId": "PrivateLinkResources_ListByPrivateLinkScope", "tags": [ - "PrivateEndpointConnections" + "PrivateLinkResources" ], - "description": "Gets all private endpoint connections on a private link scope.", - "operationId": "PrivateEndpointConnections_ListByPrivateLinkScope", + "description": "Gets the private link resources that need to be created for a Azure Monitor PrivateLinkScope.", "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": "scopeName", + "in": "path", + "description": "The name of the Azure Arc PrivateLinkScope resource.", + "required": true, + "type": "string" + } + ], + "responses": { + "200": { + "description": "Azure operation completed successfully.", + "schema": { + "$ref": "#/definitions/PrivateLinkResourceListResult" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "../../../../../../common-types/resource-management/v3/types.json#/definitions/ErrorResponse" + } + } + }, + "x-ms-examples": { + "Gets private endpoint connection.": { + "$ref": "./examples/PrivateLinkScopePrivateLinkResourceListGet.json" + } + } + } + }, + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.KubernetesConfiguration/privateLinkScopes/{scopeName}/privateLinkResources/{groupName}": { + "get": { + "operationId": "PrivateLinkResources_Get", + "tags": [ + "PrivateLinkResources" + ], + "description": "Gets the private link resources that need to be created for a Azure Monitor PrivateLinkScope.", + "parameters": [ { "$ref": "../../../../../../common-types/resource-management/v3/types.json#/parameters/ApiVersionParameter" }, { - "$ref": "#/parameters/PrivateLinkScopeName" + "$ref": "../../../../../../common-types/resource-management/v3/types.json#/parameters/SubscriptionIdParameter" + }, + { + "$ref": "../../../../../../common-types/resource-management/v3/types.json#/parameters/ResourceGroupNameParameter" + }, + { + "name": "scopeName", + "in": "path", + "description": "The name of the Azure Arc PrivateLinkScope resource.", + "required": true, + "type": "string" + }, + { + "name": "groupName", + "in": "path", + "description": "The name of the private link resource.", + "required": true, + "type": "string" } ], "responses": { "200": { - "description": "Successfully retrieved private endpoint connections.", + "description": "Azure operation completed successfully.", "schema": { - "$ref": "../../../../../../common-types/resource-management/v3/privatelinks.json#/definitions/PrivateEndpointConnectionListResult" + "$ref": "#/definitions/PrivateLinkResource" } }, "default": { - "description": "Error response describing why the operation failed.", + "description": "An unexpected error response.", "schema": { - "$ref": "../../../../../../common-types/resource-management/v2/types.json#/definitions/ErrorResponse" + "$ref": "../../../../../../common-types/resource-management/v3/types.json#/definitions/ErrorResponse" } } }, "x-ms-examples": { - "Gets list of private endpoint connections on a private link scope.": { - "$ref": "./examples/PrivateEndpointConnectionList.json" + "Gets private endpoint connection.": { + "$ref": "./examples/PrivateLinkScopePrivateLinkResourceGet.json" } } } } }, "definitions": { - "TagsResource": { - "type": "object", - "properties": { - "tags": { - "type": "object", - "additionalProperties": { - "type": "string" - }, - "description": "Resource tags" - } - }, - "description": "A container holding only the Tags for a resource, allowing the user to update the tags on a PrivateLinkScope instance." - }, "KubernetesConfigurationPrivateLinkScope": { "type": "object", + "description": "An Azure Arc PrivateLinkScope definition.", "properties": { "properties": { - "description": "Properties that define a Azure Arc PrivateLinkScope resource.", - "$ref": "#/definitions/KubernetesConfigurationPrivateLinkScopeProperties" + "$ref": "#/definitions/KubernetesConfigurationPrivateLinkScopeProperties", + "description": "Properties that define a Azure Arc PrivateLinkScope resource." } }, "allOf": [ { "$ref": "../../../../../../common-types/resource-management/v3/types.json#/definitions/TrackedResource" } - ], - "description": "An Azure Arc PrivateLinkScope definition." + ] + }, + "KubernetesConfigurationPrivateLinkScopeListResult": { + "type": "object", + "description": "The response of a KubernetesConfigurationPrivateLinkScope list operation.", + "properties": { + "value": { + "type": "array", + "description": "The KubernetesConfigurationPrivateLinkScope items on this page", + "items": { + "$ref": "#/definitions/KubernetesConfigurationPrivateLinkScope" + } + }, + "nextLink": { + "type": "string", + "format": "uri", + "description": "The link to the next page of items" + } + }, + "required": [ + "value" + ] }, "KubernetesConfigurationPrivateLinkScopeProperties": { "type": "object", "description": "Properties that define a Azure Arc PrivateLinkScope resource.", - "required": [ - "clusterResourceId" - ], "properties": { "publicNetworkAccess": { + "type": "string", "description": "Indicates whether machines associated with the private link scope can also use public Azure Arc service endpoints.", - "$ref": "#/definitions/PublicNetworkAccessType" + "default": "Disabled", + "enum": [ + "Enabled", + "Disabled" + ], + "x-ms-enum": { + "name": "PublicNetworkAccessType", + "modelAsString": true, + "values": [ + { + "name": "Enabled", + "value": "Enabled", + "description": "Allows Azure Arc agents to communicate with Azure Arc services over both public (internet) and private endpoints." + }, + { + "name": "Disabled", + "value": "Disabled", + "description": "Does not allow Azure Arc agents to communicate with Azure Arc services over public (internet) endpoints. The agents must use the private link." + } + ] + } }, "provisioningState": { + "$ref": "#/definitions/ProvisioningState", "description": "Current state of this PrivateLinkScope: whether or not is has been provisioned within the resource group it is defined. Users cannot change this value but are able to read from it. Values will include Provisioning ,Succeeded, Canceled and Failed.", - "type": "string", - "readOnly": true, - "$ref": "../../../common/2022-03-01/definitions.json#/definitions/ProvisioningStateDefinition" + "readOnly": true }, "clusterResourceId": { "type": "string", "description": "Managed Cluster ARM ID for the private link scope (Required)" }, "privateLinkScopeId": { - "readOnly": true, + "type": "string", "description": "The Guid id of the private link scope.", - "type": "string" + "readOnly": true }, "privateEndpointConnections": { - "readOnly": true, - "description": "The collection of associated Private Endpoint Connections.", "type": "array", + "description": "The collection of associated Private Endpoint Connections.", "items": { "$ref": "../../../../../../common-types/resource-management/v3/privatelinks.json#/definitions/PrivateEndpointConnection" - } + }, + "readOnly": true } - } + }, + "required": [ + "clusterResourceId" + ] }, - "KubernetesConfigurationPrivateLinkScopeListResult": { + "PrivateEndpointConnectionListResult": { "type": "object", - "description": "Describes the list of Azure Arc PrivateLinkScope resources.", + "description": "The response of a PrivateEndpointConnection list operation.", + "properties": { + "value": { + "type": "array", + "description": "The PrivateEndpointConnection items on this page", + "items": { + "$ref": "../../../../../../common-types/resource-management/v3/privatelinks.json#/definitions/PrivateEndpointConnection" + } + }, + "nextLink": { + "type": "string", + "format": "uri", + "description": "The link to the next page of items" + } + }, "required": [ "value" - ], + ] + }, + "PrivateLinkResource": { + "type": "object", + "description": "A private link resource", + "properties": { + "properties": { + "$ref": "../../../../../../common-types/resource-management/v3/privatelinks.json#/definitions/PrivateLinkResourceProperties", + "description": "Resource properties.", + "x-ms-client-flatten": true + } + }, + "allOf": [ + { + "$ref": "../../../../../../common-types/resource-management/v3/types.json#/definitions/ProxyResource" + } + ] + }, + "PrivateLinkResourceListResult": { + "type": "object", + "description": "The response of a PrivateLinkResource list operation.", "properties": { "value": { "type": "array", - "description": "List of Azure Arc PrivateLinkScope definitions.", + "description": "The PrivateLinkResource items on this page", "items": { - "$ref": "#/definitions/KubernetesConfigurationPrivateLinkScope" + "$ref": "#/definitions/PrivateLinkResource" } }, "nextLink": { "type": "string", - "description": "The URI to get the next set of Azure Arc PrivateLinkScope definitions if too many PrivateLinkScopes where returned in the result set." + "format": "uri", + "description": "The link to the next page of items" } - } + }, + "required": [ + "value" + ] }, - "PublicNetworkAccessType": { + "ProvisioningState": { "type": "string", - "description": "The network access policy to determine if Azure Arc agents can use public Azure Arc service endpoints. Defaults to disabled (access to Azure Arc services only via private link).", - "default": "Disabled", + "description": "The provisioning state of the resource.", "enum": [ - "Enabled", - "Disabled" + "Succeeded", + "Failed", + "Canceled", + "Creating", + "Updating", + "Deleting" ], "x-ms-enum": { - "name": "PublicNetworkAccessType", + "name": "ProvisioningState", "modelAsString": true, "values": [ { - "value": "Enabled", - "description": "Allows Azure Arc agents to communicate with Azure Arc services over both public (internet) and private endpoints." + "name": "Succeeded", + "value": "Succeeded", + "description": "Succeeded" + }, + { + "name": "Failed", + "value": "Failed", + "description": "Failed" }, { - "value": "Disabled", - "description": "Does not allow Azure Arc agents to communicate with Azure Arc services over public (internet) endpoints. The agents must use the private link." + "name": "Canceled", + "value": "Canceled", + "description": "Canceled" + }, + { + "name": "Creating", + "value": "Creating", + "description": "Creating" + }, + { + "name": "Updating", + "value": "Updating", + "description": "Updating" + }, + { + "name": "Deleting", + "value": "Deleting", + "description": "Deleting" } ] } - } - }, - "parameters": { - "PrivateLinkScopeName": { - "name": "scopeName", - "in": "path", - "required": true, - "type": "string", - "description": "The name of the Azure Arc PrivateLinkScope resource.", - "x-ms-parameter-location": "method" }, - "GroupNameParameter": { - "name": "groupName", - "in": "path", - "description": "The name of the private link resource.", - "required": true, - "x-ms-parameter-location": "method", - "type": "string" + "TagsResource": { + "type": "object", + "description": "A container holding only the Tags for a resource, allowing the user to update the tags on a PrivateLinkScope instance.", + "properties": { + "tags": { + "type": "object", + "description": "Resource tags", + "additionalProperties": { + "type": "string" + } + } + } } - } + }, + "parameters": {} } diff --git a/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/privateLinkScopes/tspconfig.yaml b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/privateLinkScopes/tspconfig.yaml new file mode 100644 index 000000000000..0dd769c3863b --- /dev/null +++ b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/privateLinkScopes/tspconfig.yaml @@ -0,0 +1,51 @@ +parameters: + "service-dir": + default: "sdk/privatelinkscopes" +emit: + - "@azure-tools/typespec-autorest" +options: + "@azure-tools/typespec-autorest": + omit-unreachable-types: true + emitter-output-dir: "{project-root}" + azure-resource-provider-folder: "resource-manager" + output-file: "{version-status}/{version}/privateLinkScopes.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-privatelinkscopes" + namespace: "azure.mgmt.kubernetesconfiguration.privatelinkscopes" + 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-privatelinkscopes" + namespace: "com.azure.resourcemanager.kubernetesconfiguration.privatelinkscopes" + service-name: "Scope" # human-readable service name, whitespace allowed + flavor: azure + rename-model: + PrivateEndpointConnectionListResult: ConnectionListResult + PrivateLinkResourceListResult: ResourceListResult + ResourcesOperations: Resources + "@azure-tools/typespec-ts": + service-dir: sdk/kubernetesconfiguration + emitter-output-dir: "{output-dir}/{service-dir}/arm-kubernetesconfiguration-privatelinkscopes" + flavor: "azure" + experimental-extensible-enums: true + package-details: + name: "@azure/arm-kubernetesconfiguration-privatelinkscopes" + "@azure-tools/typespec-go": + service-dir: "sdk/resourcemanager/kubernetesconfiguration" + emitter-output-dir: "{output-dir}/{service-dir}/armprivatelinkscopes" + module: "github.com/Azure/azure-sdk-for-go/{service-dir}/armprivatelinkscopes" + fix-const-stuttering: true + flavor: "azure" + generate-samples: true + generate-fakes: true + head-as-boolean: true + inject-spans: true +linter: + extends: + - "@azure-tools/typespec-azure-rulesets/resource-manager" diff --git a/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/suppressions.yaml b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/suppressions.yaml index 771e1e1b619d..4a035f87a2fe 100644 --- a/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/suppressions.yaml +++ b/specification/kubernetesconfiguration/resource-manager/Microsoft.KubernetesConfiguration/suppressions.yaml @@ -20,4 +20,17 @@ - tool: TypeSpecRequirement path: ./operations/stable/2024-11-01/**/*.json - reason: Brownfield service not ready to migrate \ No newline at end of file + reason: Brownfield service not ready to migrate + +- tool: TypeSpecValidation + reason: operations has no sdk generation then tspconfig.yaml does not have language emitter settings, so typespec validation would fail. + rules: [SdkTspConfigValidation] + sub-rules: + - options.@azure-tools/typespec-java.* + - options.@azure-tools/typespec-python.* + - options.@azure-tools/typespec-ts.* + - options.@azure-tools/typespec-go.* + - options.@azure-typespec/http-client-csharp.* + - parameters.service-dir.default + paths: + - ./operations/**/tspconfig.yaml