Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
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
43 changes: 43 additions & 0 deletions specification/applink/AppLink.Management/applink.tsp
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
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")
createOrReplace 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>;
listByResourceGroup is ArmResourceListByParent<AppLink>;
listBySubscription is ArmListBySubscription<AppLink>;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,77 @@
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 {
listByLocation is ArmResourceListByParent<
Resource = AvailableVersion,
Parameters = {
@doc("Kubernetes version to filter profiles")
@query("kubernetesVersion")
kubernetesVersion?: string;
}
>;
}
125 changes: 125 additions & 0 deletions specification/applink/AppLink.Management/applinkmember.tsp
Original file line number Diff line number Diff line change
@@ -0,0 +1,125 @@
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.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 mode")
mode?: UpgradeMode;

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

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

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

@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: string;
Comment thread
deveshdama marked this conversation as resolved.
Outdated
}

@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 metrics profile")
model MetricsProfile {
@doc("Metrics endpoint URL")
@visibility(Lifecycle.Read)
metricsEndpoint?: string;
}

@armResourceOperations
interface AppLinkMembers {
@doc("Get an AppLinkMember")
get is ArmResourceRead<AppLinkMember>;
@doc("Create an AppLinkMember")
createOrReplace 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>;
listByAppLink is ArmResourceListByParent<AppLinkMember>;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
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 {
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