Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
45 changes: 45 additions & 0 deletions specification/applink/AppLink.Management/applink.tsp
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
import "@typespec/rest";
import "@typespec/http";
import "@azure-tools/typespec-azure-core";
import "@azure-tools/typespec-azure-resource-manager";
import "./commontypes.tsp";

using Azure.ResourceManager;

namespace Microsoft.AppLink;

@doc("AppLink resource")
model AppLink is TrackedResource<AppLinkProperties> {
...ResourceNameParameter<AppLink>;
...ManagedServiceIdentityProperty;
}

@doc("AppLink properties")
model AppLinkProperties {
Comment thread
deveshdama marked this conversation as resolved.
@doc("Provisioning state")
@visibility(Lifecycle.Read)
provisioningState?: ProvisioningState;
}

@armResourceOperations
interface AppLinks {
@doc("Get an AppLink.")
get is ArmResourceRead<AppLink>;
@doc("Create an AppLink.")
createOrUpdate is ArmResourceCreateOrReplaceAsync<AppLink>;
@doc("Update an AppLink.")
@Azure.Core.useFinalStateVia("azure-async-operation")
update is ArmResourcePatchAsync<
AppLink,
AppLinkProperties,
LroHeaders = ArmAsyncOperationHeader<FinalResult = AppLink> &
ArmLroLocationHeader<FinalResult = AppLink> &
Azure.Core.Foundations.RetryAfterHeader
>;
@doc("Delete an AppLink.")
delete is ArmResourceDeleteWithoutOkAsync<AppLink>;
@doc("List AppLink resources by resource group.")
listByResourceGroup is ArmResourceListByParent<AppLink>;
@doc("List AppLink resources by subscription.")
listBySubscription is ArmListBySubscription<AppLink>;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,78 @@
import "@typespec/rest";
import "@typespec/http";
import "@azure-tools/typespec-azure-core";
import "@azure-tools/typespec-azure-resource-manager";
import "@typespec/openapi";

using TypeSpec.Rest;
using TypeSpec.Http;
using Azure.ResourceManager;

namespace Microsoft.AppLink;

@doc("AppLink available version resource")
@parentResource(ArmLocationResource<"Subscription">)
model AvailableVersion is ProxyResource<AvailableVersionProperties> {
...ResourceNameParameter<AvailableVersion>;
}

@doc("AppLink available version properties")
model AvailableVersionProperties {
@doc("Kubernetes version")
kubernetesVersion: string;

@doc("Fully managed versions")
fullyManagedVersions: FullyManagedVersions;

@doc("Self managed versions")
selfManagedVersions: SelfManagedVersions;

@doc("Provisioning state")
@visibility(Lifecycle.Read)
provisioningState?: ProvisioningState;
}

@doc("Fully managed versions")
model FullyManagedVersions {
@doc("Release channels")
@identifiers(#["releaseChannel", "version"])
releaseChannels: ReleaseChannelInfo[];
}

@doc("Self managed versions")
model SelfManagedVersions {
@doc("Istio versions")
@identifiers(#["version", "upgrades"])
versions: VersionInfo[];
}

@doc("Release channel information")
model ReleaseChannelInfo {
@doc("Release channel")
releaseChannel: string;

@doc("Istio version behind release channel")
version: string;
}

@doc("Version information")
model VersionInfo {
@doc("Istio version")
version: string;

@doc("Available upgrades")
upgrades: string[];
}

@armResourceOperations
interface AvailableVersions {
@doc("List AvailableVersion resources by location.")
listByLocation is ArmResourceListByParent<
Resource = AvailableVersion,
Parameters = {
@doc("Kubernetes version to filter profiles")
@query("kubernetesVersion")
kubernetesVersion?: string;
}
>;
}
169 changes: 169 additions & 0 deletions specification/applink/AppLink.Management/applinkmember.tsp
Original file line number Diff line number Diff line change
@@ -0,0 +1,169 @@
import "@typespec/rest";
import "@typespec/http";
import "@typespec/openapi";
import "@azure-tools/typespec-azure-core";
import "@azure-tools/typespec-azure-resource-manager";
import "./applink.tsp";

using TypeSpec.Rest;
using Azure.Core;
using Azure.ResourceManager;

namespace Microsoft.AppLink;

@doc("AppLink Member resource")
@parentResource(AppLink)
model AppLinkMember is TrackedResource<AppLinkMemberProperties> {
...ResourceNameParameter<AppLinkMember>;
}

@doc("AppLink Member properties")
model AppLinkMemberProperties {
@doc("Cluster type")
@visibility(Lifecycle.Create, Lifecycle.Read)
clusterType?: ClusterType;

@doc("AppLink Member Metadata")
metadata: Metadata;

@doc("Upgrade profile.")
upgradeProfile?: UpgradeProfile;

@doc("Observability profile")
observabilityProfile?: ObservabilityProfile;

@doc("Connectivity profile.")
connectivityProfile?: ConnectivityProfile;

@doc("Provisioning state")
@visibility(Lifecycle.Read)
provisioningState?: ProvisioningState;
}

@doc("AppLinkMember cluster type")
union ClusterType {
string,

@doc("Azure Kubernetes Service")
AKS: "AKS",
}

@doc("AppLinkMember metadata")
model Metadata {
@doc("Resource ID")
@visibility(Lifecycle.Create, Lifecycle.Read)
resourceId: Azure.Core.armResourceIdentifier;
}

@doc("AppLinkMember upgrade profile.")
model UpgradeProfile {
@doc("Upgrade mode.")
mode: UpgradeMode;

@doc("Fully managed upgrade profile.")
fullyManagedUpgradeProfile?: FullyManagedUpgradeProfile;

@doc("Self managed upgrade profile.")
selfManagedUpgradeProfile?: SelfManagedUpgradeProfile;
}

@doc("AppLinkMember upgrade release channel")
union UpgradeReleaseChannel {
string,

@doc("Rapid release channel")
Rapid: "Rapid",

@doc("Stable release channel")
Stable: "Stable",
}

@doc("AppLinkMember upgrade mode")
union UpgradeMode {
string,

@doc("Fully managed upgrade mode")
FullyManaged: "FullyManaged",

@doc("Self managed upgrade mode")
SelfManaged: "SelfManaged",
}

@doc("AppLinkMember fully managed upgrade profile")
model FullyManagedUpgradeProfile {
@doc("Release channel")
releaseChannel: UpgradeReleaseChannel;
}

@doc("AppLinkMember self managed upgrade profile")
model SelfManagedUpgradeProfile {
@doc("Istio version")
version: string;
}

@doc("AppLinkMember observability profile")
model ObservabilityProfile {
@doc("Metrics configuration")
metrics?: MetricsProfile;
}

@doc("AppLinkMember connectivity profile.")
model ConnectivityProfile {
@doc("East-West gateway profile.")
eastWestGateway?: EastWestGatewayProfile;

@doc("Private connect profile.")
privateConnect?: PrivateConnectProfile;
}

@doc("AppLinkMember private connect profile.")
model PrivateConnectProfile {
@doc("Delegated Subnet to AppLink.")
@visibility(Lifecycle.Read, Lifecycle.Create)
subnetResourceId: armResourceIdentifier;
}

@doc("AppLinkMember metrics profile")
model MetricsProfile {
@doc("Metrics endpoint URL")
@visibility(Lifecycle.Read)
metricsEndpoint?: string;
}

@doc("AppLinkMember east-west gateway profile.")
model EastWestGatewayProfile {
@doc("East-West gateway visibility.")
visibility: EastWestGatewayVisibility;
}

@doc("East-West gateway visibility.")
union EastWestGatewayVisibility {
string,

@doc("Use an internal load balancer for the east-west gateway.")
Internal: "Internal",

@doc("Use an external load balancer for the east-west gateway.")
External: "External",
}

@armResourceOperations
interface AppLinkMembers {
@doc("Get an AppLinkMember.")
get is ArmResourceRead<AppLinkMember>;
@doc("Create an AppLinkMember.")
createOrUpdate is ArmResourceCreateOrReplaceAsync<AppLinkMember>;
@doc("Update an AppLinkMember.")
@Azure.Core.useFinalStateVia("azure-async-operation")
update is ArmResourcePatchAsync<
AppLinkMember,
AppLinkMemberProperties,
LroHeaders = ArmAsyncOperationHeader<FinalResult = AppLinkMember> &
ArmLroLocationHeader<FinalResult = AppLinkMember> &
Azure.Core.Foundations.RetryAfterHeader
>;
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@doc("Delete an AppLinkMember.")
delete is ArmResourceDeleteWithoutOkAsync<AppLinkMember>;
@doc("List AppLinkMember resources by AppLink.")
listByAppLink is ArmResourceListByParent<AppLinkMember>;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
import "@typespec/rest";
import "@typespec/http";
import "@azure-tools/typespec-azure-core";
import "@azure-tools/typespec-azure-resource-manager";
import "./applinkmember.tsp";

using TypeSpec.Rest;
using Azure.ResourceManager;

namespace Microsoft.AppLink;

@doc("AppLinkMember upgrade history")
@parentResource(AppLinkMember)
model UpgradeHistory is ProxyResource<UpgradeHistoryProperties> {
...ResourceNameParameter<UpgradeHistory>;
}

@doc("AppLinkMember upgrade history properties")
model UpgradeHistoryProperties {
@doc("Start timestamp")
startTimestamp: utcDateTime;

@doc("End timestamp")
endTimestamp?: utcDateTime;

@doc("Upgrade initiator")
initiatedBy: string;

@doc("Version upgraded from")
fromVersion: string;

@doc("Version upgraded to")
toVersion: string;

@doc("Provisioning state")
@visibility(Lifecycle.Read)
provisioningState?: ProvisioningState;
}

@armResourceOperations
interface UpgradeHistories {
@doc("List UpgradeHistory resources by AppLinkMember.")
listByAppLinkMember is ArmResourceListByParent<UpgradeHistory>;
}
22 changes: 22 additions & 0 deletions specification/applink/AppLink.Management/commontypes.tsp
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
import "@azure-tools/typespec-azure-resource-manager";

using Azure.ResourceManager;

namespace Microsoft.AppLink;

@doc("Provisioning state of the resource")
union ProvisioningState {
ResourceProvisioningState,

@doc("Resource is getting provisioned.")
Provisioning: "Provisioning",

@doc("Resource is Updating.")
Updating: "Updating",

@doc("Resource is Deleting.")
Deleting: "Deleting",

@doc("Resource has been Accepted.")
Accepted: "Accepted",
}
Loading