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
Original file line number Diff line number Diff line change
Expand Up @@ -91,18 +91,6 @@ union OperationState {
string,
}

// ------------------ Common Values ---------------
alias Params = {
...ApiVersionParameter;
...SubscriptionIdParameter;

@path
@minLength(1)
@segment("locations")
@doc("The location name.")
locationparameter: string;
};

// ------------------ Models ---------------
@doc("The schedule details for the user request")
model Schedule {
Expand Down
238 changes: 152 additions & 86 deletions specification/computeschedule/ComputeSchedule.Management/routes.tsp
Original file line number Diff line number Diff line change
Expand Up @@ -2,122 +2,189 @@ import "@typespec/http";
import "@typespec/rest";
import "@typespec/versioning";
import "@azure-tools/typespec-azure-core";
import "@azure-tools/typespec-client-generator-core";
import "@azure-tools/typespec-azure-resource-manager";
import "./models.tsp";
import "./scheduledactionmodels.tsp";

using TypeSpec.Http;
using TypeSpec.Rest;
using TypeSpec.Versioning;
using Azure.ClientGenerator.Core;
using Azure.ResourceManager;

namespace Microsoft.ComputeSchedule;

interface Operations extends Azure.ResourceManager.Operations {}

#suppress "@azure-tools/typespec-azure-resource-manager/arm-resource-interface-requires-decorator" "Each resource interface must have an @armResourceOperations decorator."
alias LocationParameter = {
/** The location name. */
@path
@minLength(1)
@segment("locations")
@key
locationparameter: Azure.Core.azureLocation;
};

@@clientName(ScheduledActions.virtualMachinesSubmitDeallocate::parameters.body,
"requestBody"
);
@@doc(ScheduledActions.virtualMachinesSubmitDeallocate::parameters.body,
"The request body"
);
@@clientName(ScheduledActions.virtualMachinesSubmitHibernate::parameters.body,
"requestBody"
);
@@doc(ScheduledActions.virtualMachinesSubmitHibernate::parameters.body,
"The request body"
);
@@clientName(ScheduledActions.virtualMachinesSubmitStart::parameters.body,
"requestBody"
);
@@doc(ScheduledActions.virtualMachinesSubmitStart::parameters.body,
"The request body"
);
@@clientName(ScheduledActions.virtualMachinesExecuteDeallocate::parameters.body,
"requestBody"
);
@@doc(ScheduledActions.virtualMachinesExecuteDeallocate::parameters.body,
"The request body"
);
@@clientName(ScheduledActions.virtualMachinesExecuteHibernate::parameters.body,
"requestBody"
);
@@doc(ScheduledActions.virtualMachinesExecuteHibernate::parameters.body,
"The request body"
);
@@clientName(ScheduledActions.virtualMachinesExecuteStart::parameters.body,
"requestBody"
);
@@doc(ScheduledActions.virtualMachinesExecuteStart::parameters.body,
"The request body"
);
@@clientName(ScheduledActions.virtualMachinesExecuteCreate::parameters.body,
"requestBody"
);
@@doc(ScheduledActions.virtualMachinesExecuteCreate::parameters.body,
"The request body"
);
@@clientName(ScheduledActions.virtualMachinesExecuteDelete::parameters.body,
"requestBody"
);
@@doc(ScheduledActions.virtualMachinesExecuteDelete::parameters.body,
"The request body"
);
@@clientName(ScheduledActions.virtualMachinesGetOperationStatus::parameters.body,
"requestBody"
);
@@doc(ScheduledActions.virtualMachinesGetOperationStatus::parameters.body,
"The request body"
);
@@clientName(ScheduledActions.virtualMachinesCancelOperations::parameters.body,
"requestBody"
);
@@doc(ScheduledActions.virtualMachinesCancelOperations::parameters.body,
"The request body"
);
@@clientName(ScheduledActions.virtualMachinesGetOperationErrors::parameters.body,
"requestBody"
);
@@doc(ScheduledActions.virtualMachinesGetOperationErrors::parameters.body,
"The request body"
);

@armResourceOperations(#{ omitTags: true })
interface ScheduledActions {
// -------------- Routes -------------
/** VirtualMachinesSubmitDeallocate: Schedule deallocate operation for a batch of virtual machines at datetime in future. */
#suppress "@azure-tools/typespec-azure-resource-manager/arm-resource-operation" "necessary to avoid standard routing"
@route("/subscriptions/{subscriptionId}/providers/Microsoft.ComputeSchedule/locations/{locationparameter}/virtualMachinesSubmitDeallocate")
@post
virtualMachinesSubmitDeallocate(
...Params,
@body @doc("The request body") requestBody: SubmitDeallocateRequest,
): ArmResponse<DeallocateResourceOperationResponse> | ErrorResponse;
virtualMachinesSubmitDeallocate is ArmProviderActionSync<
Request = SubmitDeallocateRequest,
Response = ArmResponse<DeallocateResourceOperationResponse>,
Scope = Extension.Subscription,
Parameters = LocationParameter
>;

/** VirtualMachinesSubmitHibernate: Schedule hibernate operation for a batch of virtual machines at datetime in future. */
#suppress "@azure-tools/typespec-azure-resource-manager/arm-resource-operation" "necessary to avoid standard routing"
@route("/subscriptions/{subscriptionId}/providers/Microsoft.ComputeSchedule/locations/{locationparameter}/virtualMachinesSubmitHibernate")
@post
virtualMachinesSubmitHibernate(
...Params,
@body @doc("The request body") requestBody: SubmitHibernateRequest,
): ArmResponse<HibernateResourceOperationResponse> | ErrorResponse;
virtualMachinesSubmitHibernate is ArmProviderActionSync<
Request = SubmitHibernateRequest,
Response = ArmResponse<HibernateResourceOperationResponse>,
Scope = Extension.Subscription,
Parameters = LocationParameter
>;

/** VirtualMachinesSubmitStart: Schedule start operation for a batch of virtual machines at datetime in future. */
#suppress "@azure-tools/typespec-azure-resource-manager/arm-resource-operation" "necessary to avoid standard routing"
@route("/subscriptions/{subscriptionId}/providers/Microsoft.ComputeSchedule/locations/{locationparameter}/virtualMachinesSubmitStart")
@post
virtualMachinesSubmitStart(
...Params,
@body @doc("The request body") requestBody: SubmitStartRequest,
): ArmResponse<StartResourceOperationResponse> | ErrorResponse;
virtualMachinesSubmitStart is ArmProviderActionSync<
Request = SubmitStartRequest,
Response = ArmResponse<StartResourceOperationResponse>,
Scope = Extension.Subscription,
Parameters = LocationParameter
>;

/** VirtualMachinesExecuteDeallocate: Execute deallocate operation for a batch of virtual machines, this operation is triggered as soon as Computeschedule receives it. */
#suppress "@azure-tools/typespec-azure-resource-manager/arm-resource-operation" "necessary to avoid standard routing"
@route("/subscriptions/{subscriptionId}/providers/Microsoft.ComputeSchedule/locations/{locationparameter}/virtualMachinesExecuteDeallocate")
@post
virtualMachinesExecuteDeallocate(
...Params,
@body @doc("The request body") requestBody: ExecuteDeallocateRequest,
): ArmResponse<DeallocateResourceOperationResponse> | ErrorResponse;
virtualMachinesExecuteDeallocate is ArmProviderActionSync<
Request = ExecuteDeallocateRequest,
Response = ArmResponse<DeallocateResourceOperationResponse>,
Scope = Extension.Subscription,
Parameters = LocationParameter
>;

/** VirtualMachinesExecuteHibernate: Execute hibernate operation for a batch of virtual machines, this operation is triggered as soon as Computeschedule receives it. */
#suppress "@azure-tools/typespec-azure-resource-manager/arm-resource-operation" "necessary to avoid standard routing"
@route("/subscriptions/{subscriptionId}/providers/Microsoft.ComputeSchedule/locations/{locationparameter}/virtualMachinesExecuteHibernate")
@post
virtualMachinesExecuteHibernate(
...Params,
@body @doc("The request body") requestBody: ExecuteHibernateRequest,
): ArmResponse<HibernateResourceOperationResponse> | ErrorResponse;
virtualMachinesExecuteHibernate is ArmProviderActionSync<
Request = ExecuteHibernateRequest,
Response = ArmResponse<HibernateResourceOperationResponse>,
Scope = Extension.Subscription,
Parameters = LocationParameter
>;

/** VirtualMachinesExecuteStart: Execute start operation for a batch of virtual machines, this operation is triggered as soon as Computeschedule receives it. */
#suppress "@azure-tools/typespec-azure-resource-manager/arm-resource-operation" "necessary to avoid standard routing"
@route("/subscriptions/{subscriptionId}/providers/Microsoft.ComputeSchedule/locations/{locationparameter}/virtualMachinesExecuteStart")
@post
virtualMachinesExecuteStart(
...Params,
@body @doc("The request body") requestBody: ExecuteStartRequest,
): ArmResponse<StartResourceOperationResponse> | ErrorResponse;
virtualMachinesExecuteStart is ArmProviderActionSync<
Request = ExecuteStartRequest,
Response = ArmResponse<StartResourceOperationResponse>,
Scope = Extension.Subscription,
Parameters = LocationParameter
>;

/** VirtualMachinesExecuteCreate: Execute create operation for a batch of virtual machines, this operation is triggered as soon as Computeschedule receives it. */
#suppress "@azure-tools/typespec-azure-resource-manager/arm-resource-operation" "necessary to avoid standard routing"
@added(Microsoft.ComputeSchedule.Versions.`2025-05-01`)
@route("/subscriptions/{subscriptionId}/providers/Microsoft.ComputeSchedule/locations/{locationparameter}/virtualMachinesExecuteCreate")
@post
virtualMachinesExecuteCreate(
...Params,
@body @doc("The request body") requestBody: ExecuteCreateRequest,
): ArmResponse<CreateResourceOperationResponse> | ErrorResponse;
virtualMachinesExecuteCreate is ArmProviderActionSync<
Request = ExecuteCreateRequest,
Response = ArmResponse<CreateResourceOperationResponse>,
Scope = Extension.Subscription,
Parameters = LocationParameter
>;

/** VirtualMachinesExecuteDelete: Execute delete operation for a batch of virtual machines, this operation is triggered as soon as Computeschedule receives it. */
#suppress "@azure-tools/typespec-azure-resource-manager/arm-resource-operation" "necessary to avoid standard routing"
@added(Microsoft.ComputeSchedule.Versions.`2025-05-01`)
@route("/subscriptions/{subscriptionId}/providers/Microsoft.ComputeSchedule/locations/{locationparameter}/virtualMachinesExecuteDelete")
@post
virtualMachinesExecuteDelete(
...Params,
@body @doc("The request body") requestBody: ExecuteDeleteRequest,
): ArmResponse<DeleteResourceOperationResponse> | ErrorResponse;
virtualMachinesExecuteDelete is ArmProviderActionSync<
Request = ExecuteDeleteRequest,
Response = ArmResponse<DeleteResourceOperationResponse>,
Scope = Extension.Subscription,
Parameters = LocationParameter
>;

/** VirtualMachinesGetOperationStatus: Polling endpoint to read status of operations performed on virtual machines */
#suppress "@azure-tools/typespec-azure-resource-manager/arm-resource-operation" "necessary to avoid standard routing"
@route("/subscriptions/{subscriptionId}/providers/Microsoft.ComputeSchedule/locations/{locationparameter}/virtualMachinesGetOperationStatus")
@post
virtualMachinesGetOperationStatus(
...Params,
@body @doc("The request body") requestBody: GetOperationStatusRequest,
): ArmResponse<GetOperationStatusResponse> | ErrorResponse;
virtualMachinesGetOperationStatus is ArmProviderActionSync<
Request = GetOperationStatusRequest,
Response = ArmResponse<GetOperationStatusResponse>,
Scope = Extension.Subscription,
Parameters = LocationParameter
>;

/** VirtualMachinesCancelOperations: Cancel a previously submitted (start/deallocate/hibernate) request */
#suppress "@azure-tools/typespec-azure-resource-manager/arm-resource-operation" "necessary to avoid standard routing"
@route("/subscriptions/{subscriptionId}/providers/Microsoft.ComputeSchedule/locations/{locationparameter}/virtualMachinesCancelOperations")
@post
virtualMachinesCancelOperations(
...Params,
@body @doc("The request body") requestBody: CancelOperationsRequest,
): ArmResponse<CancelOperationsResponse> | ErrorResponse;
virtualMachinesCancelOperations is ArmProviderActionSync<
Request = CancelOperationsRequest,
Response = ArmResponse<CancelOperationsResponse>,
Scope = Extension.Subscription,
Parameters = LocationParameter
>;

/** VirtualMachinesGetOperationErrors: Get error details on operation errors (like transient errors encountered, additional logs) if they exist. */
#suppress "@azure-tools/typespec-azure-resource-manager/arm-resource-operation" "necessary to avoid standard routing"
@route("/subscriptions/{subscriptionId}/providers/Microsoft.ComputeSchedule/locations/{locationparameter}/virtualMachinesGetOperationErrors")
@post
virtualMachinesGetOperationErrors(
...Params,
@body @doc("The request body") requestBody: GetOperationErrorsRequest,
): ArmResponse<GetOperationErrorsResponse> | ErrorResponse;
virtualMachinesGetOperationErrors is ArmProviderActionSync<
Request = GetOperationErrorsRequest,
Response = ArmResponse<GetOperationErrorsResponse>,
Scope = Extension.Subscription,
Parameters = LocationParameter
>;

// Recurring scheduledaction routes
@added(Microsoft.ComputeSchedule.Versions.`2025-04-15-preview`)
Expand Down Expand Up @@ -145,15 +212,15 @@ interface ScheduledActions {
listBySubscription is ArmListBySubscription<ScheduledAction>;

@added(Microsoft.ComputeSchedule.Versions.`2025-04-15-preview`)
@autoRoute
@listsResource(ScheduledActionResource)
@armResourceList(ScheduledActionResource)
@get
@doc("List resources attached to Scheduled Actions")
@get
@action("resources")
@list
listResources(
...ResourceInstanceParameters<ScheduledActionResource>,
): ArmResponse<ResourceListResponse> | ErrorResponse;
listResources is ArmResourceActionSync<
ScheduledAction,
Request = void,
Response = ArmResponse<ResourceListResponse>
>;

@added(Microsoft.ComputeSchedule.Versions.`2025-04-15-preview`)
attachResources is ArmResourceActionSync<
Expand Down Expand Up @@ -195,7 +262,6 @@ interface ScheduledActions {
void,
Occurrence
>;
// Recurring scheduledaction routes
}

// Recurring scheduledaction extension routes
Expand Down