Skip to content
Original file line number Diff line number Diff line change
@@ -0,0 +1,123 @@
import "@azure-tools/typespec-azure-core";
using Azure.Core;
using Azure.ResourceManager;
using Azure.ResourceManager.Foundations;
using TypeSpec.Http;
using TypeSpec.Rest;
using TypeSpec.Versioning;

namespace Microsoft.ContainerService;

@doc("A cluster mesh profile stores the general information about the mesh.")
@added(Versions.v2026_03_02_preview)
@resource("clusterMeshProfiles")
@parentResource(Fleet)
model ClusterMeshProfile
is Azure.ResourceManager.ProxyResource<ClusterMeshProfileProperties> {
@doc("The name of the ClusterMeshProfile resource.")
@pattern("^[a-z0-9]([-a-z0-9]*[a-z0-9])?$")
@minLength(1)
@maxLength(63)
@path
@segment("clusterMeshProfiles")
@key("clusterMeshProfileName")
@visibility(Lifecycle.Read)
name: string;

...EntityTagProperty;
}

@doc("A cluster mesh profile stores the general information about the mesh.")
@added(Versions.v2026_03_02_preview)
model ClusterMeshProfileProperties {
@doc("The provisioning state of the cluster mesh profile.")
@visibility(Lifecycle.Read)
provisioningState?: ClusterMeshProfileProvisioningState;

@doc("Kubernetes-style label selector for selecting Fleet members to join the mesh.")
@minLength(1)
@maxLength(512)
@visibility(Lifecycle.Read, Lifecycle.Create)
Comment thread
serbrech marked this conversation as resolved.
memberLabelSelector: string;
Comment thread
serbrech marked this conversation as resolved.
Outdated

@doc("The cluster mesh profile status.")
@visibility(Lifecycle.Read)
status: ClusterMeshProfileStatus;
}

@doc("The provisioning state of the cluster mesh profile resource.")
@added(Versions.v2026_03_02_preview)
union ClusterMeshProfileProvisioningState {
string,
ResourceProvisioningState,
}

@doc("Cluster mesh state.")
@added(Versions.v2026_03_02_preview)
union ClusterMeshState {
string,

@doc("The mesh is not connected.")
NotConnected: "NotConnected",

@doc("The mesh is connecting.")
Connecting: "Connecting",

@doc("The mesh is connected.")
Connected: "Connected",

@doc("The mesh failed to connect.")
Failed: "Failed",
}

@doc("Status of the cluster mesh.")
@added(Versions.v2026_03_02_preview)
model ClusterMeshProfileStatus {
@doc("The state of the cluster mesh.")
@visibility(Lifecycle.Read)
state: ClusterMeshState;

@doc("The last applied Kubernetes-style label selector defining which Fleet members are in the mesh.")
Comment thread
dvadas marked this conversation as resolved.
Outdated
@minLength(1)
@maxLength(512)
@visibility(Lifecycle.Read)
lastAppliedMemberLabelSelector?: string;

@visibility(Lifecycle.Read)
@doc("The last operation ID for the cluster mesh profile.")
lastOperationId?: string;

@visibility(Lifecycle.Read)
@doc("The last operation error of the cluster mesh profile.")
lastOperationError?: Azure.ResourceManager.Foundations.ErrorDetail;
}

@added(Versions.v2026_03_02_preview)
@armResourceOperations
interface ClusterMeshProfiles {
get is ArmResourceRead<ClusterMeshProfile>;

createOrUpdate is ArmResourceCreateOrUpdateAsync<
ClusterMeshProfile,
Azure.ResourceManager.Foundations.BaseParameters<ClusterMeshProfile> &
IfMatchParameters<ClusterMeshProfile> &
IfNoneMatchParameters<ClusterMeshProfile>,
LroHeaders = Azure.Core.Foundations.RetryAfterHeader
>;

delete is ArmResourceDeleteWithoutOkAsync<
ClusterMeshProfile,
Azure.ResourceManager.Foundations.BaseParameters<ClusterMeshProfile> &
IfMatchParameters<ClusterMeshProfile>
>;

listByFleet is ArmResourceListByParent<ClusterMeshProfile>;

@doc("Applies the cluster mesh profile to selected fleet members.")
apply is Azure.ResourceManager.ArmResourceActionAsync<
ClusterMeshProfile,
void,
ClusterMeshProfile,
BaseParameters<ClusterMeshProfile> & IfMatchParameters<ClusterMeshProfile>
>;
}
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
import "@typespec/rest";
import "./helpers.tsp";
import "./meshmember.tsp";

using TypeSpec.Http;
using TypeSpec.Rest;
Expand Down Expand Up @@ -64,6 +65,11 @@ model FleetMemberProperties {
@visibility(Lifecycle.Read)
@doc("Status information of the last operation for fleet member.")
status?: FleetMemberStatus;

@added(Versions.v2026_03_02_preview)
@visibility(Lifecycle.Read)
@doc("The Mesh Member Properties associated with this Fleet Member.")
meshProperties?: MeshProperties;
}

@added(Versions.v2025_03_01)
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
import "@typespec/versioning";
import "@azure-tools/typespec-azure-resource-manager";
import "./clustermeshprofile.tsp";
import "./fleet.tsp";
import "./fleetmember.tsp";
import "./fleetnamespace.tsp";
Expand Down Expand Up @@ -64,4 +65,8 @@ enum Versions {
@doc("Azure Kubernetes Fleet Manager api version 2026-02-01-preview.")
@armCommonTypesVersion(Azure.ResourceManager.CommonTypes.Versions.v5)
v2026_02_01_preview: "2026-02-01-preview",

@doc("Azure Kubernetes Fleet Manager api version 2026-03-02-preview.")
@armCommonTypesVersion(Azure.ResourceManager.CommonTypes.Versions.v5)
v2026_03_02_preview: "2026-03-02-preview",
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,82 @@
import "@typespec/rest";
import "./helpers.tsp";

using TypeSpec.Versioning;

namespace Microsoft.ContainerService;

scalar ClusterMeshProfileResourceId
extends Azure.Core.armResourceIdentifier<[
{
type: "Microsoft.ContainerService/fleets/clusterMeshProfiles",
}
]>;

@added(Versions.v2026_03_02_preview)
@doc("The Mesh Member data for a Fleet Member resource.")
model MeshProperties {
@doc("The Cilium cluster properties.")
@visibility(Lifecycle.Read)
ciliumProperties: CiliumProperties;

@doc("The status of the mesh member.")
@visibility(Lifecycle.Read)
status: MeshMemberStatus;

@doc("Resource id of the cluster mesh profile associated with this mesh member.")
@visibility(Lifecycle.Read)
clusterMeshProfileResourceId: ClusterMeshProfileResourceId;
}

@added(Versions.v2026_03_02_preview)
@doc("The Cilium specific properties of the member cluster.")
model CiliumProperties {
@doc("The Cilium clusterId")
Comment thread
dvadas marked this conversation as resolved.
Outdated
@visibility(Lifecycle.Read)
id: int32;

@doc("The Cilium cluster name")
@visibility(Lifecycle.Read)
name: string;
}

@added(Versions.v2026_03_02_preview)
@doc("Mesh member state.")
union MeshMemberState {
string,

@doc("The member is not connected to the mesh.")
NotConnected: "NotConnected",

@doc("The member is connecting to the mesh.")
Connecting: "Connecting",

@doc("The member is connected to the mesh.")
Connected: "Connected",

@doc("The member is disconnecting from the mesh.")
Disconnecting: "Disconnecting",

@doc("The member failed to connect due to an error.")
Failed: "Failed",
}

@added(Versions.v2026_03_02_preview)
@doc("Status of the mesh member.")
model MeshMemberStatus {
@doc("The mesh member state.")
@visibility(Lifecycle.Read)
state: MeshMemberState;

@doc("When the status was last updated.")
@visibility(Lifecycle.Read)
lastUpdatedAt?: utcDateTime;

@doc("The last operation ID that affected the mesh properties of the fleet member")
Comment thread
dvadas marked this conversation as resolved.
Outdated
@visibility(Lifecycle.Read)
lastOperationId?: string;

@doc("The error affecting this member.")
@visibility(Lifecycle.Read)
error?: Azure.ResourceManager.Foundations.ErrorDetail;
}
Loading
Loading