Skip to content

[TSP Migration]--datadog #34281

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 11 commits into
base: main
Choose a base branch
from
Open
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
198 changes: 198 additions & 0 deletions specification/datadog/Datadog.Management/DatadogMonitorResource.tsp
Original file line number Diff line number Diff line change
@@ -0,0 +1,198 @@
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.Datadog;

#suppress "@azure-tools/typespec-azure-core/documentation-required" ""
#suppress "@azure-tools/typespec-azure-core/no-private-usage" ""
#suppress "@azure-tools/typespec-azure-core/composition-over-inheritance" ""
@Azure.ResourceManager.Private.armResourceInternal(IdentityProperties)
@TypeSpec.Http.Private.includeInapplicableMetadataInPayload(false)
model DatadogMonitorResource
extends Azure.ResourceManager.Foundations.TrackedResource {
...ResourceNameParameter<
Resource = DatadogMonitorResource,
KeyName = "monitorName",
SegmentName = "monitors",
NamePattern = ""
>;
#suppress "@azure-tools/typespec-azure-core/documentation-required" ""
#suppress "@azure-tools/typespec-azure-resource-manager/arm-resource-invalid-envelope-property" "For backward compatibility"
sku?: ResourceSku;

#suppress "@azure-tools/typespec-azure-resource-manager/arm-resource-invalid-envelope-property" ""
@Azure.ResourceManager.Private.conditionalClientFlatten
@Azure.ResourceManager.Private.armResourcePropertiesOptionality(true)
properties?: MonitorProperties;

#suppress "@azure-tools/typespec-azure-core/documentation-required" ""
#suppress "@azure-tools/typespec-azure-resource-manager/arm-resource-invalid-envelope-property" "For backward compatibility"
identity?: IdentityProperties;
}

@armResourceOperations
interface DatadogMonitorResources {
/**
* Get the properties of a specific monitor resource.
*/
#suppress "@azure-tools/typespec-azure-core/no-openapi" "non-standard operations"
@operationId("Monitors_Get")
get is ArmResourceRead<DatadogMonitorResource>;

/**
* Create a monitor resource.
*/
#suppress "@azure-tools/typespec-azure-core/no-openapi" "non-standard operations"
@operationId("Monitors_Create")
create is ArmResourceCreateOrReplaceAsync<DatadogMonitorResource>;

/**
* Update a monitor resource.
*/
#suppress "@azure-tools/typespec-azure-core/no-openapi" "non-standard operations"
@patch(#{ implicitOptionality: false })
@operationId("Monitors_Update")
update is ArmCustomPatchAsync<
DatadogMonitorResource,
PatchModel = DatadogMonitorResourceUpdateParameters,
Response = ArmResponse<DatadogMonitorResource> | (ArmResourceCreatedResponse<DatadogMonitorResource> &
ArmLroLocationHeader)
>;

/**
* Delete a monitor resource.
*/
#suppress "@azure-tools/typespec-azure-core/no-openapi" "non-standard operations"
#suppress "@azure-tools/typespec-azure-resource-manager/arm-delete-operation-response-codes" "For backward compatibility"
@operationId("Monitors_Delete")
delete is ArmResourceDeleteWithoutOkAsync<
DatadogMonitorResource,
Response = ArmDeletedResponse | ArmDeleteAcceptedLroResponse | ArmDeletedNoContentResponse
>;

/**
* List all monitors under the specified resource group.
*/
#suppress "@azure-tools/typespec-azure-core/no-openapi" "non-standard operations"
@operationId("Monitors_ListByResourceGroup")
listByResourceGroup is ArmResourceListByParent<
DatadogMonitorResource,
Response = ArmResponse<DatadogMonitorResourceListResponse>
>;

/**
* List all monitors under the specified subscription.
*/
#suppress "@azure-tools/typespec-azure-core/no-openapi" "non-standard operations"
@operationId("Monitors_List")
list is ArmListBySubscription<
DatadogMonitorResource,
Response = ArmResponse<DatadogMonitorResourceListResponse>
>;

/**
* List the api keys for a given monitor resource.
*/
#suppress "@azure-tools/typespec-azure-core/no-openapi" "non-standard operations"
@operationId("Monitors_ListApiKeys")
listApiKeys is ArmResourceActionSync<
DatadogMonitorResource,
void,
ArmResponse<DatadogApiKeyListResponse>
>;

/**
* Get the default api key.
*/
#suppress "@azure-tools/typespec-azure-core/no-openapi" "non-standard operations"
@operationId("Monitors_GetDefaultKey")
getDefaultKey is ArmResourceActionSync<
DatadogMonitorResource,
void,
ArmResponse<DatadogApiKey>
>;

/**
* Set the default api key.
*/
#suppress "@azure-tools/typespec-azure-core/no-openapi" "non-standard operations"
@operationId("Monitors_SetDefaultKey")
setDefaultKey is ArmResourceActionSync<
DatadogMonitorResource,
{
@bodyRoot
body?: DatadogApiKey;
},
OkResponse
>;

/**
* List the hosts for a given monitor resource.
*/
#suppress "@azure-tools/typespec-azure-core/no-openapi" "non-standard operations"
@operationId("Monitors_ListHosts")
listHosts is ArmResourceActionSync<
DatadogMonitorResource,
void,
ArmResponse<DatadogHostListResponse>
>;

/**
* List all Azure resources associated to the same Datadog organization as the target resource.
*/
#suppress "@azure-tools/typespec-azure-core/no-openapi" "non-standard operations"
@operationId("Monitors_ListLinkedResources")
listLinkedResources is ArmResourceActionSync<
DatadogMonitorResource,
void,
ArmResponse<LinkedResourceListResponse>
>;

/**
* List the resources currently being monitored by the Datadog monitor resource.
*/
#suppress "@azure-tools/typespec-azure-core/no-openapi" "non-standard operations"
@operationId("Monitors_ListMonitoredResources")
listMonitoredResources is ArmResourceActionSync<
DatadogMonitorResource,
void,
ArmResponse<MonitoredResourceListResponse>
>;

/**
* Refresh the set password link and return a latest one.
*/
#suppress "@azure-tools/typespec-azure-core/no-openapi" "non-standard operations"
@operationId("Monitors_RefreshSetPasswordLink")
refreshSetPasswordLink is ArmResourceActionSync<
DatadogMonitorResource,
void,
ArmResponse<DatadogSetPasswordLink>
>;

/**
* Get marketplace and organization info mapped to the given monitor.
*/
#suppress "@azure-tools/typespec-azure-core/no-openapi" "non-standard operations"
@action("getBillingInfo")
@operationId("BillingInfo_Get")
billingInfoGet is ArmResourceActionSync<
DatadogMonitorResource,
void,
ArmResponse<BillingInfoResponse>
>;
}

@@doc(DatadogMonitorResource.name, "Monitor resource name");
@@doc(DatadogMonitorResource.properties,
"Properties specific to the monitor resource."
);
@@doc(DatadogMonitorResources.create::parameters.resource, "");
@@doc(DatadogMonitorResources.update::parameters.properties, "");
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
import "@azure-tools/typespec-azure-core";
import "@azure-tools/typespec-azure-resource-manager";
import "@typespec/openapi";
import "@typespec/rest";
import "./models.tsp";
import "./DatadogMonitorResource.tsp";

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

namespace Microsoft.Datadog;

@parentResource(DatadogMonitorResource)
model DatadogSingleSignOnResource
is Azure.ResourceManager.ProxyResource<DatadogSingleSignOnProperties> {
...ResourceNameParameter<
Resource = DatadogSingleSignOnResource,
KeyName = "configurationName",
SegmentName = "singleSignOnConfigurations",
NamePattern = ""
>;
}

#suppress "@azure-tools/typespec-azure-resource-manager/no-resource-delete-operation" ""
@armResourceOperations
interface DatadogSingleSignOnResources {
/**
* Gets the datadog single sign-on resource for the given Monitor.
*/
#suppress "@azure-tools/typespec-azure-core/no-openapi" "non-standard operations"
@operationId("SingleSignOnConfigurations_Get")
get is ArmResourceRead<DatadogSingleSignOnResource>;

/**
* Configures single-sign-on for this resource.
*/
#suppress "@azure-tools/typespec-azure-core/no-openapi" "non-standard operations"
@operationId("SingleSignOnConfigurations_CreateOrUpdate")
createOrUpdate is ArmResourceCreateOrReplaceAsync<DatadogSingleSignOnResource>;

/**
* List the single sign-on configurations for a given monitor resource.
*/
#suppress "@azure-tools/typespec-azure-core/no-openapi" "non-standard operations"
@operationId("SingleSignOnConfigurations_List")
list is ArmResourceListByParent<
DatadogSingleSignOnResource,
Response = ArmResponse<DatadogSingleSignOnResourceListResponse>
>;
}

@@doc(DatadogSingleSignOnResource.name, "Configuration name");
@@doc(DatadogSingleSignOnResource.properties, "");
@@doc(DatadogSingleSignOnResources.createOrUpdate::parameters.resource, "");
Original file line number Diff line number Diff line change
@@ -0,0 +1,82 @@
import "@azure-tools/typespec-azure-core";
import "@azure-tools/typespec-azure-resource-manager";
import "@typespec/openapi";
import "@typespec/rest";
import "./models.tsp";
import "./DatadogMonitorResource.tsp";

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

namespace Microsoft.Datadog;
/**
* The request to update subscriptions needed to be monitored by the Datadog monitor resource.
*/
@parentResource(DatadogMonitorResource)
model MonitoredSubscriptionProperties
is Azure.ResourceManager.ProxyResource<SubscriptionList> {
...ResourceNameParameter<
Resource = MonitoredSubscriptionProperties,
KeyName = "configurationName",
SegmentName = "monitoredSubscriptions",
NamePattern = ""
>;
}

@armResourceOperations
interface MonitoredSubscriptions {
/**
* List the subscriptions currently being monitored by the Datadog monitor resource.
*/
get is ArmResourceRead<MonitoredSubscriptionProperties>;

/**
* Add the subscriptions that should be monitored by the Datadog monitor resource.
*/
#suppress "@azure-tools/typespec-azure-resource-manager/arm-put-operation-response-codes" "For backward compatibility"
createorUpdate is ArmResourceCreateOrReplaceAsync<
MonitoredSubscriptionProperties,
Response = ArmResourceUpdatedResponse<MonitoredSubscriptionProperties> | ArmResourceCreatedResponse<
MonitoredSubscriptionProperties,
ArmLroLocationHeader<FinalResult = MonitoredSubscriptionProperties> &
Azure.Core.Foundations.RetryAfterHeader
> | ArmAcceptedLroResponse
>;

/**
* Updates the subscriptions that are being monitored by the Datadog monitor resource
*/
@patch(#{ implicitOptionality: false })
update is ArmCustomPatchAsync<
MonitoredSubscriptionProperties,
PatchModel = MonitoredSubscriptionProperties
>;

/**
* Updates the subscriptions that are being monitored by the Datadog monitor resource
*/
#suppress "@azure-tools/typespec-azure-resource-manager/arm-delete-operation-response-codes" "For backward compatibility"
delete is ArmResourceDeleteWithoutOkAsync<
MonitoredSubscriptionProperties,
Response = ArmDeletedResponse | ArmDeleteAcceptedLroResponse | ArmDeletedNoContentResponse
>;

/**
* List the subscriptions currently being monitored by the Datadog monitor resource.
*/
list is ArmResourceListByParent<
MonitoredSubscriptionProperties,
Response = ArmResponse<MonitoredSubscriptionPropertiesList>
>;
}

@@doc(MonitoredSubscriptionProperties.name,
"The configuration name. Only 'default' value is supported."
);
@@doc(MonitoredSubscriptionProperties.properties,
"The request to update subscriptions needed to be monitored by the Datadog monitor resource."
);
@@doc(MonitoredSubscriptions.createorUpdate::parameters.resource, "");
@@doc(MonitoredSubscriptions.update::parameters.properties, "");
58 changes: 58 additions & 0 deletions specification/datadog/Datadog.Management/MonitoringTagRules.tsp
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
import "@azure-tools/typespec-azure-core";
import "@azure-tools/typespec-azure-resource-manager";
import "@typespec/openapi";
import "@typespec/rest";
import "./models.tsp";
import "./DatadogMonitorResource.tsp";

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

namespace Microsoft.Datadog;
/**
* Capture logs and metrics of Azure resources based on ARM tags.
*/
@parentResource(DatadogMonitorResource)
model MonitoringTagRules
is Azure.ResourceManager.ProxyResource<MonitoringTagRulesProperties> {
...ResourceNameParameter<
Resource = MonitoringTagRules,
KeyName = "ruleSetName",
SegmentName = "tagRules",
NamePattern = ""
>;
}

#suppress "@azure-tools/typespec-azure-resource-manager/no-resource-delete-operation" ""
@armResourceOperations
interface TagRules {
/**
* Get a tag rule set for a given monitor resource.
*/
get is ArmResourceRead<MonitoringTagRules>;

/**
* Create or update a tag rule set for a given monitor resource.
*/
#suppress "@azure-tools/typespec-azure-resource-manager/arm-put-operation-response-codes" "For backward compatibility"
createOrUpdate is ArmResourceCreateOrReplaceSync<
MonitoringTagRules,
Response = ArmResourceUpdatedResponse<MonitoringTagRules>
>;

/**
* List the tag rules for a given monitor resource.
*/
list is ArmResourceListByParent<
MonitoringTagRules,
Response = ArmResponse<MonitoringTagRulesListResponse>
>;
}

@@doc(MonitoringTagRules.name, "Rule set name");
@@doc(MonitoringTagRules.properties,
"Definition of the properties for a TagRules resource."
);
@@doc(TagRules.createOrUpdate::parameters.resource, "");
Loading
Loading