Skip to content
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
471 changes: 471 additions & 0 deletions .generator/schemas/v2/openapi.yaml

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
"""
Create a Terraform backend sync configuration returns "Created" response
"""

from datadog_api_client import ApiClient, Configuration
from datadog_api_client.v2.api.terraform_state_files_api import TerraformStateFilesApi
from datadog_api_client.v2.model.terraform_backend_create_attributes import TerraformBackendCreateAttributes
from datadog_api_client.v2.model.terraform_backend_create_data import TerraformBackendCreateData
from datadog_api_client.v2.model.terraform_backend_create_request import TerraformBackendCreateRequest
from datadog_api_client.v2.model.terraform_backend_kind import TerraformBackendKind
from datadog_api_client.v2.model.terraform_backend_type import TerraformBackendType

body = TerraformBackendCreateRequest(
data=TerraformBackendCreateData(
attributes=TerraformBackendCreateAttributes(
account_id="123456789012",
backend_type=TerraformBackendKind.TERRAFORM,
bucket_names=[
"terraform-state-bucket",
],
region="us-east-1",
),
type=TerraformBackendType.TERRAFORM_BACKENDS,
),
)

configuration = Configuration()
with ApiClient(configuration) as api_client:
api_instance = TerraformStateFilesApi(api_client)
response = api_instance.create_terraform_backend_sync_config(body=body)

print(response)
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
"""
Delete a Terraform backend sync configuration returns "No Content" response
"""

from datadog_api_client import ApiClient, Configuration
from datadog_api_client.v2.api.terraform_state_files_api import TerraformStateFilesApi

configuration = Configuration()
with ApiClient(configuration) as api_client:
api_instance = TerraformStateFilesApi(api_client)
api_instance.delete_terraform_backend_sync_config(
id="9007199254740993",
)
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
"""
List Terraform backend sync configurations returns "OK" response
"""

from datadog_api_client import ApiClient, Configuration
from datadog_api_client.v2.api.terraform_state_files_api import TerraformStateFilesApi

configuration = Configuration()
with ApiClient(configuration) as api_client:
api_instance = TerraformStateFilesApi(api_client)
response = api_instance.list_terraform_backend_sync_configs(
account_id="123456789012",
)

print(response)
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
"""
Update a Terraform backend sync configuration returns "OK" response
"""

from datadog_api_client import ApiClient, Configuration
from datadog_api_client.v2.api.terraform_state_files_api import TerraformStateFilesApi
from datadog_api_client.v2.model.terraform_backend_type import TerraformBackendType
from datadog_api_client.v2.model.terraform_backend_update_attributes import TerraformBackendUpdateAttributes
from datadog_api_client.v2.model.terraform_backend_update_data import TerraformBackendUpdateData
from datadog_api_client.v2.model.terraform_backend_update_request import TerraformBackendUpdateRequest

body = TerraformBackendUpdateRequest(
data=TerraformBackendUpdateData(
attributes=TerraformBackendUpdateAttributes(
bucket_names=[
"terraform-state-bucket",
],
),
id="9007199254740993",
type=TerraformBackendType.TERRAFORM_BACKENDS,
),
)

configuration = Configuration()
with ApiClient(configuration) as api_client:
api_instance = TerraformStateFilesApi(api_client)
response = api_instance.update_terraform_backend_sync_config(id="9007199254740993", body=body)

print(response)
192 changes: 192 additions & 0 deletions src/datadog_api_client/v2/api/terraform_state_files_api.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,192 @@
# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
# This product includes software developed at Datadog (https://www.datadoghq.com/).
# Copyright 2019-Present Datadog, Inc.
from __future__ import annotations

from typing import Any, Dict, Union

from datadog_api_client.api_client import ApiClient, Endpoint as _Endpoint
from datadog_api_client.configuration import Configuration
from datadog_api_client.model_utils import (
UnsetType,
unset,
)
from datadog_api_client.v2.model.terraform_backend_list_response import TerraformBackendListResponse
from datadog_api_client.v2.model.terraform_backend_response import TerraformBackendResponse
from datadog_api_client.v2.model.terraform_backend_create_request import TerraformBackendCreateRequest
from datadog_api_client.v2.model.terraform_backend_update_request import TerraformBackendUpdateRequest


class TerraformStateFilesApi:
"""
Configure synchronization of Terraform state files from S3 buckets and inspect synchronization status.
"""

def __init__(self, api_client=None):
if api_client is None:
api_client = ApiClient(Configuration())
self.api_client = api_client

self._create_terraform_backend_sync_config_endpoint = _Endpoint(
settings={
"response_type": (TerraformBackendResponse,),
"auth": ["apiKeyAuth", "appKeyAuth"],
"endpoint_path": "/api/v2/iac-api/terraform/backends",
"operation_id": "create_terraform_backend_sync_config",
"http_method": "POST",
"version": "v2",
},
params_map={
"body": {
"required": True,
"openapi_types": (TerraformBackendCreateRequest,),
"location": "body",
},
},
headers_map={"accept": ["application/json"], "content_type": ["application/json"]},
api_client=api_client,
)

self._delete_terraform_backend_sync_config_endpoint = _Endpoint(
settings={
"response_type": None,
"auth": ["apiKeyAuth", "appKeyAuth"],
"endpoint_path": "/api/v2/iac-api/terraform/backends/{id}",
"operation_id": "delete_terraform_backend_sync_config",
"http_method": "DELETE",
"version": "v2",
},
params_map={
"id": {
"required": True,
"openapi_types": (str,),
"attribute": "id",
"location": "path",
},
},
headers_map={
"accept": ["*/*"],
},
api_client=api_client,
)

self._list_terraform_backend_sync_configs_endpoint = _Endpoint(
settings={
"response_type": (TerraformBackendListResponse,),
"auth": ["apiKeyAuth", "appKeyAuth"],
"endpoint_path": "/api/v2/iac-api/terraform/backends",
"operation_id": "list_terraform_backend_sync_configs",
"http_method": "GET",
"version": "v2",
},
params_map={
"account_id": {
"openapi_types": (str,),
"attribute": "account_id",
"location": "query",
},
},
headers_map={
"accept": ["application/json"],
},
api_client=api_client,
)

self._update_terraform_backend_sync_config_endpoint = _Endpoint(
settings={
"response_type": (TerraformBackendResponse,),
"auth": ["apiKeyAuth", "appKeyAuth"],
"endpoint_path": "/api/v2/iac-api/terraform/backends/{id}",
"operation_id": "update_terraform_backend_sync_config",
"http_method": "PATCH",
"version": "v2",
},
params_map={
"id": {
"required": True,
"openapi_types": (str,),
"attribute": "id",
"location": "path",
},
"body": {
"required": True,
"openapi_types": (TerraformBackendUpdateRequest,),
"location": "body",
},
},
headers_map={"accept": ["application/json"], "content_type": ["application/json"]},
api_client=api_client,
)

def create_terraform_backend_sync_config(
self,
body: TerraformBackendCreateRequest,
) -> TerraformBackendResponse:
"""Create a Terraform backend sync configuration.

Create a Terraform backend sync configuration for an AWS account, region, and set of S3 buckets.

:type body: TerraformBackendCreateRequest
:rtype: TerraformBackendResponse
"""
kwargs: Dict[str, Any] = {}
kwargs["body"] = body

return self._create_terraform_backend_sync_config_endpoint.call_with_http_info(**kwargs)

def delete_terraform_backend_sync_config(
self,
id: str,
) -> None:
"""Delete a Terraform backend sync configuration.

Delete a Terraform backend sync configuration and its synchronized state files.

:param id: Terraform backend sync configuration ID.
:type id: str
:rtype: None
"""
kwargs: Dict[str, Any] = {}
kwargs["id"] = id

return self._delete_terraform_backend_sync_config_endpoint.call_with_http_info(**kwargs)

def list_terraform_backend_sync_configs(
self,
*,
account_id: Union[str, UnsetType] = unset,
) -> TerraformBackendListResponse:
"""List Terraform backend sync configurations.

List Terraform backend sync configurations, optionally filtered by AWS account ID.

:param account_id: AWS account ID used to filter configurations. Omit to list all configurations for the organization.
:type account_id: str, optional
:rtype: TerraformBackendListResponse
"""
kwargs: Dict[str, Any] = {}
if account_id is not unset:
kwargs["account_id"] = account_id

return self._list_terraform_backend_sync_configs_endpoint.call_with_http_info(**kwargs)

def update_terraform_backend_sync_config(
self,
id: str,
body: TerraformBackendUpdateRequest,
) -> TerraformBackendResponse:
"""Update a Terraform backend sync configuration.

Replace the complete set of buckets in a Terraform backend sync configuration. The account and region cannot be changed. The resource ID in the request body must match the path ID; a mismatch returns 409 Conflict.

:param id: Terraform backend sync configuration ID.
:type id: str
:type body: TerraformBackendUpdateRequest
:rtype: TerraformBackendResponse
"""
kwargs: Dict[str, Any] = {}
kwargs["id"] = id

kwargs["body"] = body

return self._update_terraform_backend_sync_config_endpoint.call_with_http_info(**kwargs)
2 changes: 2 additions & 0 deletions src/datadog_api_client/v2/apis/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -137,6 +137,7 @@
from datadog_api_client.v2.api.synthetics_api import SyntheticsApi
from datadog_api_client.v2.api.tag_rules_api import TagRulesApi
from datadog_api_client.v2.api.teams_api import TeamsApi
from datadog_api_client.v2.api.terraform_state_files_api import TerraformStateFilesApi
from datadog_api_client.v2.api.test_optimization_api import TestOptimizationApi
from datadog_api_client.v2.api.threat_intelligence_api import ThreatIntelligenceApi
from datadog_api_client.v2.api.timeseries_anomaly_investigations_api import TimeseriesAnomalyInvestigationsApi
Expand Down Expand Up @@ -290,6 +291,7 @@
"SyntheticsApi",
"TagRulesApi",
"TeamsApi",
"TerraformStateFilesApi",
"TestOptimizationApi",
"ThreatIntelligenceApi",
"TimeseriesAnomalyInvestigationsApi",
Expand Down
74 changes: 74 additions & 0 deletions src/datadog_api_client/v2/model/terraform_backend_attributes.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,74 @@
# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
# This product includes software developed at Datadog (https://www.datadoghq.com/).
# Copyright 2019-Present Datadog, Inc.
from __future__ import annotations

from typing import List, TYPE_CHECKING

from datadog_api_client.model_utils import (
ModelNormal,
cached_property,
)


if TYPE_CHECKING:
from datadog_api_client.v2.model.terraform_backend_kind import TerraformBackendKind
from datadog_api_client.v2.model.terraform_backend_bucket import TerraformBackendBucket


class TerraformBackendAttributes(ModelNormal):
@cached_property
def openapi_types(_):
from datadog_api_client.v2.model.terraform_backend_kind import TerraformBackendKind
from datadog_api_client.v2.model.terraform_backend_bucket import TerraformBackendBucket

return {
"account_id": (str,),
"backend_type": (TerraformBackendKind,),
"buckets": ([TerraformBackendBucket],),
"org_id": (str,),
"region": (str,),
}

attribute_map = {
"account_id": "account_id",
"backend_type": "backend_type",
"buckets": "buckets",
"org_id": "org_id",
"region": "region",
}

def __init__(
self_,
account_id: str,
backend_type: TerraformBackendKind,
buckets: List[TerraformBackendBucket],
org_id: str,
region: str,
**kwargs,
):
"""
Terraform backend sync configuration and bucket statuses.

:param account_id: AWS account ID that owns the S3 buckets.
:type account_id: str

:param backend_type: Backend type to synchronize.
:type backend_type: TerraformBackendKind

:param buckets: Source buckets and their synchronization statuses.
:type buckets: [TerraformBackendBucket]

:param org_id: Datadog organization ID.
:type org_id: str

:param region: AWS region containing the S3 buckets.
:type region: str
"""
super().__init__(kwargs)

self_.account_id = account_id
self_.backend_type = backend_type
self_.buckets = buckets
self_.org_id = org_id
self_.region = region
Loading
Loading