diff --git a/.generator/schemas/v2/openapi.yaml b/.generator/schemas/v2/openapi.yaml index 99b25f0ac87..e653f2574e4 100644 --- a/.generator/schemas/v2/openapi.yaml +++ b/.generator/schemas/v2/openapi.yaml @@ -76954,6 +76954,543 @@ components: - new_advisories - avoided_advisories type: object + RemediationCodeSession: + description: A linked code session (for example, a pull request) for the investigation. + properties: + id: + description: Code session ID. + type: string + pull_request_status: + $ref: "#/components/schemas/RemediationPullRequestStatus" + title: RemediationCodeSession + type: object + RemediationConfidence: + description: The agent's self-rated confidence in a plan. + enum: + - low + - medium + - high + title: RemediationConfidence + type: string + x-enum-varnames: + - LOW + - MEDIUM + - HIGH + RemediationDeploymentRolloutState: + description: ECS deployment state, populated only for deployment failures. + enum: + - IN_PROGRESS + - COMPLETED + - FAILED + title: RemediationDeploymentRolloutState + type: string + x-enum-varnames: + - IN_PROGRESS + - COMPLETED + - FAILED + RemediationEcsMetadata: + description: ECS-specific context for the investigation. + properties: + account_id: + description: AWS account ID. + type: string + capacity_providers: + description: Associated capacity providers. + items: + type: string + type: array + cluster_arn: + description: ECS cluster ARN. + type: string + cluster_name: + description: ECS cluster name. + type: string + impact_score: + description: Computed impact score for ranking (64-bit integer encoded as a string). + example: "100" + type: string + issue_start_time: + description: When the issue was first detected, epoch milliseconds (64-bit integer encoded as a string). + example: "1718000000000" + type: string + launch_type: + $ref: "#/components/schemas/RemediationLaunchType" + region: + description: AWS region. + type: string + task_arns: + description: All affected task ARNs, for filtering. + items: + type: string + type: array + task_definition_family: + description: Task definition family name. + type: string + task_definition_revision: + description: Current task definition revision. + format: int64 + type: integer + tasks: + description: Individual tasks exhibiting issues. Capped at 50 most recent. + items: + $ref: "#/components/schemas/RemediationProblemTask" + type: array + total_cpu_units: + description: Sum of CPU units across affected tasks (64-bit integer encoded as a string). + example: "1024" + type: string + total_memory_mib: + description: Sum of memory (MiB) across affected tasks (64-bit integer encoded as a string). + example: "2048" + type: string + update_timestamp: + description: When this metadata was last updated, epoch milliseconds (64-bit integer encoded as a string). + example: "1718000100000" + type: string + workload_summary: + $ref: "#/components/schemas/RemediationWorkloadSummary" + workload_type: + $ref: "#/components/schemas/RemediationWorkloadType" + title: RemediationEcsMetadata + type: object + RemediationExecuteRequest: + description: Request payload for executing a remediation. + properties: + connection_id: + description: >- + The Action Platform AWS connection ID to execute through. Must carry the integration_aws connection prefix. + example: "connection:integration_aws:00000000-0000-0000-0000-000000000000" + type: string + investigation_id: + description: The ID of the investigation to remediate. + example: "inv-00000000-0000-0000-0000-000000000000" + type: string + required: + - investigation_id + - connection_id + title: RemediationExecuteRequest + type: object + RemediationExecuteResponse: + description: Response payload for executing a remediation. + properties: + investigation_id: + description: Echoes the investigation ID that the remediation runs against. + example: "inv-00000000-0000-0000-0000-000000000000" + type: string + required: + - investigation_id + title: RemediationExecuteResponse + type: object + RemediationGetInvestigationResponse: + description: Response payload for getting a single investigation. + properties: + investigation: + $ref: "#/components/schemas/RemediationInvestigation" + required: + - investigation + title: RemediationGetInvestigationResponse + type: object + RemediationGuardrailDecision: + description: The guardrail decision applied to a plan or investigation. + properties: + decision: + $ref: "#/components/schemas/RemediationGuardrailVerdict" + guardrail_id: + description: >- + ID of the matching guardrail. Set when the decision is not denied; may be empty when denied because no rule matched. + type: string + title: RemediationGuardrailDecision + type: object + RemediationGuardrailVerdict: + description: The verdict a guardrail applied to a plan or investigation. + enum: + - allowed + - approval_required + - denied + title: RemediationGuardrailVerdict + type: string + x-enum-varnames: + - ALLOWED + - APPROVAL_REQUIRED + - DENIED + RemediationHistoryEvent: + description: A single event in the investigation history. + properties: + event_type: + description: The type of event. + type: string + id: + description: History event ID. + type: string + payload: + description: >- + Opaque JSON event body, base64-encoded. Decode and parse according to event_type. + type: string + timestamp_ms: + description: Event time in epoch milliseconds (64-bit integer encoded as a string). + example: "1718000075000" + type: string + title: RemediationHistoryEvent + type: object + RemediationInvestigation: + description: >- + A single ECS remediation investigation: a detected issue together with its proposed plan, history, and ECS workload metadata. + properties: + code_session: + $ref: "#/components/schemas/RemediationCodeSession" + created_at_ms: + description: Creation time in epoch milliseconds (64-bit integer encoded as a string). + example: "1718000000000" + type: string + guardrail_decision: + $ref: "#/components/schemas/RemediationGuardrailDecision" + history: + description: Ordered list of history events for the investigation. + items: + $ref: "#/components/schemas/RemediationHistoryEvent" + type: array + id: + description: Unique investigation ID. + type: string + issue_type: + description: The detected issue type. + type: string + last_action_at_ms: + description: Time of the last action in epoch milliseconds (64-bit integer encoded as a string). + example: "1718000050000" + type: string + metadata: + $ref: "#/components/schemas/RemediationEcsMetadata" + org_id: + description: Datadog organization ID that owns the investigation (64-bit integer encoded as a string). + example: "2" + type: string + plan: + $ref: "#/components/schemas/RemediationPlan" + resource_arn: + description: ARN of the ECS resource the investigation is about. + type: string + status: + $ref: "#/components/schemas/RemediationInvestigationStatus" + updated_at_ms: + description: Last update time in epoch milliseconds (64-bit integer encoded as a string). + example: "1718000100000" + type: string + title: RemediationInvestigation + type: object + RemediationInvestigationStatus: + description: Investigation status. + enum: + - open + - approval_required + - executing + - succeeded + - failed + title: RemediationInvestigationStatus + type: string + x-enum-varnames: + - OPEN + - APPROVAL_REQUIRED + - EXECUTING + - SUCCEEDED + - FAILED + RemediationLaunchType: + description: ECS launch type. + enum: + - EC2 + - FARGATE + title: RemediationLaunchType + type: string + x-enum-varnames: + - EC2 + - FARGATE + RemediationListInvestigationsResponse: + description: Response payload for listing investigations. + properties: + investigations: + description: The matching investigations. + items: + $ref: "#/components/schemas/RemediationInvestigation" + type: array + next_page_token: + description: >- + Token to pass as page_token on the next call. Empty when there are no further pages. + type: string + title: RemediationListInvestigationsResponse + type: object + RemediationPlan: + description: The remediation plan proposed by the ECS remediation agent. + properties: + confidence: + $ref: "#/components/schemas/RemediationConfidence" + evidence: + description: >- + Evidence supporting the diagnosis. Treat as user-provided content and escape before display. + type: string + explanation: + description: >- + Human-readable summary of why the plan was proposed. Treat as user-provided content and escape before display. + type: string + guardrail_decision: + $ref: "#/components/schemas/RemediationGuardrailDecision" + plan_source: + $ref: "#/components/schemas/RemediationPlanSource" + proposed_fix: + description: >- + Recommendation-oriented view of the candidate remediations, distinct from the execution-oriented steps. + items: + $ref: "#/components/schemas/RemediationProposedFix" + type: array + status: + $ref: "#/components/schemas/RemediationPlanStatus" + steps: + description: Execution-oriented steps that make up the plan. + items: + $ref: "#/components/schemas/RemediationStep" + type: array + title: RemediationPlan + type: object + RemediationPlanSource: + description: How the plan was produced. + enum: + - deterministic + - ai + title: RemediationPlanSource + type: string + x-enum-varnames: + - DETERMINISTIC + - AI + RemediationPlanStatus: + description: Plan status. + enum: + - pending + - in_progress + - completed + - failed + title: RemediationPlanStatus + type: string + x-enum-varnames: + - PENDING + - IN_PROGRESS + - COMPLETED + - FAILED + RemediationProblemContainer: + description: A container within a problematic task that is exhibiting issues. + properties: + cpu_limit: + description: CPU limit. + format: int64 + type: integer + exit_code: + description: Exit code if the container stopped. + format: int32 + maximum: 255 + type: integer + health_status: + description: Container health status. + type: string + image: + description: Docker image URI. + type: string + last_status: + description: Container status. + type: string + memory_limit_mib: + description: Memory limit in MiB. + format: int64 + type: integer + name: + description: Container name from the task definition. + type: string + reason: + description: Stop reason. + type: string + title: RemediationProblemContainer + type: object + RemediationProblemTask: + description: An individual ECS task in a problematic state. + properties: + availability_zone: + description: Availability zone where the task is running. + type: string + container_instance_arn: + description: Container instance ARN (EC2 launch type only). + type: string + containers: + description: Problematic containers within the task. + items: + $ref: "#/components/schemas/RemediationProblemContainer" + type: array + cpu_units: + description: CPU units allocated to the task (64-bit integer encoded as a string). + example: "256" + type: string + desired_status: + description: Desired task status. + type: string + execution_role_arn: + description: IAM role used by ECS to pull images and fetch secrets. + type: string + health_status: + description: Task-level health status. + type: string + issue_start_time: + description: When this task's issue started, epoch milliseconds (64-bit integer encoded as a string). + example: "1718000000000" + type: string + issue_type: + description: Issue type for this specific task. + type: string + last_status: + description: Current task status. + type: string + launch_type: + $ref: "#/components/schemas/RemediationLaunchType" + memory_mib: + description: Memory in MiB allocated to the task (64-bit integer encoded as a string). + example: "512" + type: string + stop_code: + description: Stop code if the task was stopped. + type: string + stopped_reason: + description: Stop reason if the task was stopped. + type: string + tags: + description: Task-level tags. + items: + type: string + type: array + task_arn: + description: Full task ARN. + type: string + task_definition_arn: + description: Task definition ARN with revision. + type: string + task_role_arn: + description: IAM role used by the task at runtime. + type: string + title: RemediationProblemTask + type: object + RemediationProposedFix: + description: A recommendation-oriented summary of a candidate remediation. + properties: + description: + description: >- + Explanation of the proposed change and why it resolves the root cause. Treat as user-provided content and escape before display. + type: string + reversible: + description: Whether the proposed fix can be reversed after execution. + type: boolean + risk: + $ref: "#/components/schemas/RemediationRiskLevel" + title: + description: Short title for the proposed fix. + type: string + title: RemediationProposedFix + type: object + RemediationPullRequestStatus: + description: Pull request status for a linked code session. + enum: + - open + - closed + - merged + title: RemediationPullRequestStatus + type: string + x-enum-varnames: + - OPEN + - CLOSED + - MERGED + RemediationRiskLevel: + description: Estimated risk of a remediation step or proposed fix. + enum: + - low + - medium + - high + title: RemediationRiskLevel + type: string + x-enum-varnames: + - LOW + - MEDIUM + - HIGH + RemediationStep: + description: A single execution-oriented step in a remediation plan. + properties: + action_fqn: + description: Fully qualified action type, for example ecs.update_service_memory. + type: string + approval_state: + $ref: "#/components/schemas/RemediationStepApprovalState" + description: + description: Human-readable description of the step. + type: string + reversible: + description: Whether the step can be reversed after execution. + type: boolean + risk: + $ref: "#/components/schemas/RemediationRiskLevel" + step_id: + description: Unique ID for the step within the plan. + type: string + title: RemediationStep + type: object + RemediationStepApprovalState: + description: Approval state for a remediation step. + enum: + - pending_approval + - approved + - rejected + title: RemediationStepApprovalState + type: string + x-enum-varnames: + - PENDING_APPROVAL + - APPROVED + - REJECTED + RemediationWorkloadSummary: + description: Aggregated health across all tasks in a workload (service or daemon). + properties: + deployment_rollout_state: + $ref: "#/components/schemas/RemediationDeploymentRolloutState" + desired_count: + description: Expected task count (64-bit integer encoded as a string). + example: "3" + type: string + failed_count: + description: Tasks in a problematic state (64-bit integer encoded as a string). + example: "2" + type: string + failed_percent: + description: Percentage of desired count that is failed (64-bit integer encoded as a string). + example: "66" + type: string + pending_count: + description: Tasks currently pending (64-bit integer encoded as a string). + example: "0" + type: string + previous_task_definition: + description: >- + Previous deployment's task definition, as family:revision or a full task definition ARN. Empty when no rollback target is visible. + type: string + running_count: + description: Tasks currently running (64-bit integer encoded as a string). + example: "1" + type: string + title: RemediationWorkloadSummary + type: object + RemediationWorkloadType: + description: The kind of ECS workload that owns the problematic tasks. + enum: + - WORKLOAD_TYPE_UNSPECIFIED + - SERVICE + - STANDALONE_TASK + - DAEMON + title: RemediationWorkloadType + type: string + x-enum-varnames: + - WORKLOAD_TYPE_UNSPECIFIED + - SERVICE + - STANDALONE_TASK + - DAEMON ReorderRetentionFiltersRequest: description: A list of retention filters to reorder. properties: @@ -108909,6 +109446,181 @@ info: version: "1.0" openapi: 3.0.0 paths: + /api/ui/orchestration/ecs_remediation/execute: + post: + description: >- + Trigger execution of the proposed remediation for an investigation through the configured AWS connection. The investigation must belong to the caller's organization. + operationId: ExecuteRemediation + requestBody: + content: + application/json: + examples: + default: + value: + connection_id: "connection:integration_aws:00000000-0000-0000-0000-000000000000" + investigation_id: "inv-00000000-0000-0000-0000-000000000000" + schema: + $ref: "#/components/schemas/RemediationExecuteRequest" + description: The investigation to remediate and the AWS connection to use. + required: true + responses: + "200": + content: + application/json: + examples: + default: + value: + investigation_id: "inv-00000000-0000-0000-0000-000000000000" + schema: + $ref: "#/components/schemas/RemediationExecuteResponse" + description: OK + "429": + $ref: "#/components/responses/TooManyRequestsResponse" + summary: Execute an ECS remediation + tags: + - ECS Remediation + x-codegen-request-body-name: body + /api/ui/orchestration/ecs_remediation/investigation: + get: + description: >- + Get a single ECS remediation investigation by ID, including its proposed plan, history, and ECS workload metadata. + operationId: GetEcsRemediationInvestigation + parameters: + - description: The investigation ID. + in: query + name: id + required: true + schema: + type: string + responses: + "200": + content: + application/json: + examples: + default: + value: + investigation: + created_at_ms: "1718000000000" + id: "inv-00000000-0000-0000-0000-000000000000" + issue_type: "OOM_KILLED" + last_action_at_ms: "1718000050000" + org_id: "2" + resource_arn: "arn:aws:ecs:us-east-1:123456789012:service/prod-cluster/web" + status: "approval_required" + updated_at_ms: "1718000100000" + schema: + $ref: "#/components/schemas/RemediationGetInvestigationResponse" + description: OK + "429": + $ref: "#/components/responses/TooManyRequestsResponse" + summary: Get an ECS remediation investigation + tags: + - ECS Remediation + /api/ui/orchestration/ecs_remediation/investigations: + get: + description: >- + List ECS remediation investigations for the caller's organization. All filters are optional and applied together. Results are returned in pages. + operationId: ListEcsRemediationInvestigations + parameters: + - description: Filter by ECS cluster ARN. + in: query + name: cluster_arn + required: false + schema: + type: string + - description: Filter by ECS cluster name. + in: query + name: cluster_name + required: false + schema: + type: string + - description: Filter by ECS service ARN. + in: query + name: service_arn + required: false + schema: + type: string + - description: Filter by ECS task ARN. + in: query + name: task_arn + required: false + schema: + type: string + - description: >- + Filter by resource ARN. Matches services, daemons, and standalone tasks. + in: query + name: resource_arn + required: false + schema: + type: string + - description: >- + Filter by investigation status. Repeatable. Accepted values: open, approval_required, executing, succeeded, failed. Unknown values are ignored. + in: query + name: status + required: false + schema: + items: + type: string + type: array + - description: Filter by issue type. + in: query + name: issue_type + required: false + schema: + type: string + - description: Start of the created-at time range, in epoch milliseconds. + example: 1718000000000 + in: query + name: since_ms + required: false + schema: + format: int64 + type: integer + - description: End of the created-at time range, in epoch milliseconds. + example: 1718600000000 + in: query + name: until_ms + required: false + schema: + format: int64 + type: integer + - description: Maximum number of investigations to return. Clamped to 200. + example: 50 + in: query + name: page_size + required: false + schema: + format: int32 + maximum: 200 + type: integer + - description: Pagination token returned by a previous call. + in: query + name: page_token + required: false + schema: + type: string + responses: + "200": + content: + application/json: + examples: + default: + value: + investigations: + - id: "inv-00000000-0000-0000-0000-000000000000" + issue_type: "OOM_KILLED" + org_id: "2" + resource_arn: "arn:aws:ecs:us-east-1:123456789012:service/prod-cluster/web" + status: "approval_required" + next_page_token: "" + schema: + $ref: "#/components/schemas/RemediationListInvestigationsResponse" + description: OK + "429": + $ref: "#/components/responses/TooManyRequestsResponse" + summary: List ECS remediation investigations + tags: + - ECS Remediation /api/unstable/fleet/agent_versions: get: description: |- @@ -193574,6 +194286,8 @@ tags: scopes from alerting. Downtime settings, which can be scheduled with start and end times, prevent all alerting related to specified Datadog tags. name: Downtimes + - description: Manage ECS remediation investigations and execute proposed remediation plans. + name: ECS Remediation - description: Manage per-integration configurations for the Internal Developer Portal (IDP). These configurations control which external resources (for example, GitHub repositories, Jira projects, or PagerDuty services) are synced as entities into the Software Catalog. name: Entity Integration Configs - description: Retrieves security risk scores for entities in your organization. diff --git a/src/main/java/com/datadog/api/client/v2/api/EcsRemediationApi.java b/src/main/java/com/datadog/api/client/v2/api/EcsRemediationApi.java new file mode 100644 index 00000000000..9a870f8fb7d --- /dev/null +++ b/src/main/java/com/datadog/api/client/v2/api/EcsRemediationApi.java @@ -0,0 +1,661 @@ +package com.datadog.api.client.v2.api; + +import com.datadog.api.client.ApiClient; +import com.datadog.api.client.ApiException; +import com.datadog.api.client.ApiResponse; +import com.datadog.api.client.Pair; +import com.datadog.api.client.v2.model.RemediationExecuteRequest; +import com.datadog.api.client.v2.model.RemediationExecuteResponse; +import com.datadog.api.client.v2.model.RemediationGetInvestigationResponse; +import com.datadog.api.client.v2.model.RemediationListInvestigationsResponse; +import jakarta.ws.rs.client.Invocation; +import jakarta.ws.rs.core.GenericType; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.concurrent.CompletableFuture; + +@jakarta.annotation.Generated( + value = "https://github.com/DataDog/datadog-api-client-java/blob/master/.generator") +public class EcsRemediationApi { + private ApiClient apiClient; + + public EcsRemediationApi() { + this(ApiClient.getDefaultApiClient()); + } + + public EcsRemediationApi(ApiClient apiClient) { + this.apiClient = apiClient; + } + + /** + * Get the API client. + * + * @return API client + */ + public ApiClient getApiClient() { + return apiClient; + } + + /** + * Set the API client. + * + * @param apiClient an instance of API client + */ + public void setApiClient(ApiClient apiClient) { + this.apiClient = apiClient; + } + + /** + * Execute an ECS remediation. + * + *

See {@link #executeRemediationWithHttpInfo}. + * + * @param body The investigation to remediate and the AWS connection to use. (required) + * @return RemediationExecuteResponse + * @throws ApiException if fails to make API call + */ + public RemediationExecuteResponse executeRemediation(RemediationExecuteRequest body) + throws ApiException { + return executeRemediationWithHttpInfo(body).getData(); + } + + /** + * Execute an ECS remediation. + * + *

See {@link #executeRemediationWithHttpInfoAsync}. + * + * @param body The investigation to remediate and the AWS connection to use. (required) + * @return CompletableFuture<RemediationExecuteResponse> + */ + public CompletableFuture executeRemediationAsync( + RemediationExecuteRequest body) { + return executeRemediationWithHttpInfoAsync(body) + .thenApply( + response -> { + return response.getData(); + }); + } + + /** + * Trigger execution of the proposed remediation for an investigation through the configured AWS + * connection. The investigation must belong to the caller's organization. + * + * @param body The investigation to remediate and the AWS connection to use. (required) + * @return ApiResponse<RemediationExecuteResponse> + * @throws ApiException if fails to make API call + * @http.response.details + * + * + * + * + * + *
Response details
Status Code Description Response Headers
200 OK -
429 Too many requests -
+ */ + public ApiResponse executeRemediationWithHttpInfo( + RemediationExecuteRequest body) throws ApiException { + Object localVarPostBody = body; + + // verify the required parameter 'body' is set + if (body == null) { + throw new ApiException( + 400, "Missing the required parameter 'body' when calling executeRemediation"); + } + // create path and map variables + String localVarPath = "/api/ui/orchestration/ecs_remediation/execute"; + + Map localVarHeaderParams = new HashMap(); + + Invocation.Builder builder = + apiClient.createBuilder( + "v2.EcsRemediationApi.executeRemediation", + localVarPath, + new ArrayList(), + localVarHeaderParams, + new HashMap(), + new String[] {"application/json"}, + new String[] {"apiKeyAuth", "appKeyAuth"}); + return apiClient.invokeAPI( + "POST", + builder, + localVarHeaderParams, + new String[] {"application/json"}, + localVarPostBody, + new HashMap(), + false, + new GenericType() {}); + } + + /** + * Execute an ECS remediation. + * + *

See {@link #executeRemediationWithHttpInfo}. + * + * @param body The investigation to remediate and the AWS connection to use. (required) + * @return CompletableFuture<ApiResponse<RemediationExecuteResponse>> + */ + public CompletableFuture> + executeRemediationWithHttpInfoAsync(RemediationExecuteRequest body) { + Object localVarPostBody = body; + + // verify the required parameter 'body' is set + if (body == null) { + CompletableFuture> result = new CompletableFuture<>(); + result.completeExceptionally( + new ApiException( + 400, "Missing the required parameter 'body' when calling executeRemediation")); + return result; + } + // create path and map variables + String localVarPath = "/api/ui/orchestration/ecs_remediation/execute"; + + Map localVarHeaderParams = new HashMap(); + + Invocation.Builder builder; + try { + builder = + apiClient.createBuilder( + "v2.EcsRemediationApi.executeRemediation", + localVarPath, + new ArrayList(), + localVarHeaderParams, + new HashMap(), + new String[] {"application/json"}, + new String[] {"apiKeyAuth", "appKeyAuth"}); + } catch (ApiException ex) { + CompletableFuture> result = new CompletableFuture<>(); + result.completeExceptionally(ex); + return result; + } + return apiClient.invokeAPIAsync( + "POST", + builder, + localVarHeaderParams, + new String[] {"application/json"}, + localVarPostBody, + new HashMap(), + false, + new GenericType() {}); + } + + /** + * Get an ECS remediation investigation. + * + *

See {@link #getEcsRemediationInvestigationWithHttpInfo}. + * + * @param id The investigation ID. (required) + * @return RemediationGetInvestigationResponse + * @throws ApiException if fails to make API call + */ + public RemediationGetInvestigationResponse getEcsRemediationInvestigation(String id) + throws ApiException { + return getEcsRemediationInvestigationWithHttpInfo(id).getData(); + } + + /** + * Get an ECS remediation investigation. + * + *

See {@link #getEcsRemediationInvestigationWithHttpInfoAsync}. + * + * @param id The investigation ID. (required) + * @return CompletableFuture<RemediationGetInvestigationResponse> + */ + public CompletableFuture getEcsRemediationInvestigationAsync( + String id) { + return getEcsRemediationInvestigationWithHttpInfoAsync(id) + .thenApply( + response -> { + return response.getData(); + }); + } + + /** + * Get a single ECS remediation investigation by ID, including its proposed plan, history, and ECS + * workload metadata. + * + * @param id The investigation ID. (required) + * @return ApiResponse<RemediationGetInvestigationResponse> + * @throws ApiException if fails to make API call + * @http.response.details + * + * + * + * + * + *
Response details
Status Code Description Response Headers
200 OK -
429 Too many requests -
+ */ + public ApiResponse + getEcsRemediationInvestigationWithHttpInfo(String id) throws ApiException { + Object localVarPostBody = null; + + // verify the required parameter 'id' is set + if (id == null) { + throw new ApiException( + 400, "Missing the required parameter 'id' when calling getEcsRemediationInvestigation"); + } + // create path and map variables + String localVarPath = "/api/ui/orchestration/ecs_remediation/investigation"; + + List localVarQueryParams = new ArrayList(); + Map localVarHeaderParams = new HashMap(); + + localVarQueryParams.addAll(apiClient.parameterToPairs("", "id", id)); + + Invocation.Builder builder = + apiClient.createBuilder( + "v2.EcsRemediationApi.getEcsRemediationInvestigation", + localVarPath, + localVarQueryParams, + localVarHeaderParams, + new HashMap(), + new String[] {"application/json"}, + new String[] {"apiKeyAuth", "appKeyAuth"}); + return apiClient.invokeAPI( + "GET", + builder, + localVarHeaderParams, + new String[] {}, + localVarPostBody, + new HashMap(), + false, + new GenericType() {}); + } + + /** + * Get an ECS remediation investigation. + * + *

See {@link #getEcsRemediationInvestigationWithHttpInfo}. + * + * @param id The investigation ID. (required) + * @return CompletableFuture<ApiResponse<RemediationGetInvestigationResponse>> + */ + public CompletableFuture> + getEcsRemediationInvestigationWithHttpInfoAsync(String id) { + Object localVarPostBody = null; + + // verify the required parameter 'id' is set + if (id == null) { + CompletableFuture> result = + new CompletableFuture<>(); + result.completeExceptionally( + new ApiException( + 400, + "Missing the required parameter 'id' when calling getEcsRemediationInvestigation")); + return result; + } + // create path and map variables + String localVarPath = "/api/ui/orchestration/ecs_remediation/investigation"; + + List localVarQueryParams = new ArrayList(); + Map localVarHeaderParams = new HashMap(); + + localVarQueryParams.addAll(apiClient.parameterToPairs("", "id", id)); + + Invocation.Builder builder; + try { + builder = + apiClient.createBuilder( + "v2.EcsRemediationApi.getEcsRemediationInvestigation", + localVarPath, + localVarQueryParams, + localVarHeaderParams, + new HashMap(), + new String[] {"application/json"}, + new String[] {"apiKeyAuth", "appKeyAuth"}); + } catch (ApiException ex) { + CompletableFuture> result = + new CompletableFuture<>(); + result.completeExceptionally(ex); + return result; + } + return apiClient.invokeAPIAsync( + "GET", + builder, + localVarHeaderParams, + new String[] {}, + localVarPostBody, + new HashMap(), + false, + new GenericType() {}); + } + + /** Manage optional parameters to listEcsRemediationInvestigations. */ + public static class ListEcsRemediationInvestigationsOptionalParameters { + private String clusterArn; + private String clusterName; + private String serviceArn; + private String taskArn; + private String resourceArn; + private List status; + private String issueType; + private Long sinceMs; + private Long untilMs; + private Integer pageSize; + private String pageToken; + + /** + * Set clusterArn. + * + * @param clusterArn Filter by ECS cluster ARN. (optional) + * @return ListEcsRemediationInvestigationsOptionalParameters + */ + public ListEcsRemediationInvestigationsOptionalParameters clusterArn(String clusterArn) { + this.clusterArn = clusterArn; + return this; + } + + /** + * Set clusterName. + * + * @param clusterName Filter by ECS cluster name. (optional) + * @return ListEcsRemediationInvestigationsOptionalParameters + */ + public ListEcsRemediationInvestigationsOptionalParameters clusterName(String clusterName) { + this.clusterName = clusterName; + return this; + } + + /** + * Set serviceArn. + * + * @param serviceArn Filter by ECS service ARN. (optional) + * @return ListEcsRemediationInvestigationsOptionalParameters + */ + public ListEcsRemediationInvestigationsOptionalParameters serviceArn(String serviceArn) { + this.serviceArn = serviceArn; + return this; + } + + /** + * Set taskArn. + * + * @param taskArn Filter by ECS task ARN. (optional) + * @return ListEcsRemediationInvestigationsOptionalParameters + */ + public ListEcsRemediationInvestigationsOptionalParameters taskArn(String taskArn) { + this.taskArn = taskArn; + return this; + } + + /** + * Set resourceArn. + * + * @param resourceArn Filter by resource ARN. Matches services, daemons, and standalone tasks. + * (optional) + * @return ListEcsRemediationInvestigationsOptionalParameters + */ + public ListEcsRemediationInvestigationsOptionalParameters resourceArn(String resourceArn) { + this.resourceArn = resourceArn; + return this; + } + + /** + * Set status. + * + * @param status Filter by investigation status. Repeatable. Accepted values: open, + * approval_required, executing, succeeded, failed. Unknown values are ignored. (optional) + * @return ListEcsRemediationInvestigationsOptionalParameters + */ + public ListEcsRemediationInvestigationsOptionalParameters status(List status) { + this.status = status; + return this; + } + + /** + * Set issueType. + * + * @param issueType Filter by issue type. (optional) + * @return ListEcsRemediationInvestigationsOptionalParameters + */ + public ListEcsRemediationInvestigationsOptionalParameters issueType(String issueType) { + this.issueType = issueType; + return this; + } + + /** + * Set sinceMs. + * + * @param sinceMs Start of the created-at time range, in epoch milliseconds. (optional) + * @return ListEcsRemediationInvestigationsOptionalParameters + */ + public ListEcsRemediationInvestigationsOptionalParameters sinceMs(Long sinceMs) { + this.sinceMs = sinceMs; + return this; + } + + /** + * Set untilMs. + * + * @param untilMs End of the created-at time range, in epoch milliseconds. (optional) + * @return ListEcsRemediationInvestigationsOptionalParameters + */ + public ListEcsRemediationInvestigationsOptionalParameters untilMs(Long untilMs) { + this.untilMs = untilMs; + return this; + } + + /** + * Set pageSize. + * + * @param pageSize Maximum number of investigations to return. Clamped to 200. (optional) + * @return ListEcsRemediationInvestigationsOptionalParameters + */ + public ListEcsRemediationInvestigationsOptionalParameters pageSize(Integer pageSize) { + this.pageSize = pageSize; + return this; + } + + /** + * Set pageToken. + * + * @param pageToken Pagination token returned by a previous call. (optional) + * @return ListEcsRemediationInvestigationsOptionalParameters + */ + public ListEcsRemediationInvestigationsOptionalParameters pageToken(String pageToken) { + this.pageToken = pageToken; + return this; + } + } + + /** + * List ECS remediation investigations. + * + *

See {@link #listEcsRemediationInvestigationsWithHttpInfo}. + * + * @return RemediationListInvestigationsResponse + * @throws ApiException if fails to make API call + */ + public RemediationListInvestigationsResponse listEcsRemediationInvestigations() + throws ApiException { + return listEcsRemediationInvestigationsWithHttpInfo( + new ListEcsRemediationInvestigationsOptionalParameters()) + .getData(); + } + + /** + * List ECS remediation investigations. + * + *

See {@link #listEcsRemediationInvestigationsWithHttpInfoAsync}. + * + * @return CompletableFuture<RemediationListInvestigationsResponse> + */ + public CompletableFuture + listEcsRemediationInvestigationsAsync() { + return listEcsRemediationInvestigationsWithHttpInfoAsync( + new ListEcsRemediationInvestigationsOptionalParameters()) + .thenApply( + response -> { + return response.getData(); + }); + } + + /** + * List ECS remediation investigations. + * + *

See {@link #listEcsRemediationInvestigationsWithHttpInfo}. + * + * @param parameters Optional parameters for the request. + * @return RemediationListInvestigationsResponse + * @throws ApiException if fails to make API call + */ + public RemediationListInvestigationsResponse listEcsRemediationInvestigations( + ListEcsRemediationInvestigationsOptionalParameters parameters) throws ApiException { + return listEcsRemediationInvestigationsWithHttpInfo(parameters).getData(); + } + + /** + * List ECS remediation investigations. + * + *

See {@link #listEcsRemediationInvestigationsWithHttpInfoAsync}. + * + * @param parameters Optional parameters for the request. + * @return CompletableFuture<RemediationListInvestigationsResponse> + */ + public CompletableFuture + listEcsRemediationInvestigationsAsync( + ListEcsRemediationInvestigationsOptionalParameters parameters) { + return listEcsRemediationInvestigationsWithHttpInfoAsync(parameters) + .thenApply( + response -> { + return response.getData(); + }); + } + + /** + * List ECS remediation investigations for the caller's organization. All filters are optional and + * applied together. Results are returned in pages. + * + * @param parameters Optional parameters for the request. + * @return ApiResponse<RemediationListInvestigationsResponse> + * @throws ApiException if fails to make API call + * @http.response.details + * + * + * + * + * + *
Response details
Status Code Description Response Headers
200 OK -
429 Too many requests -
+ */ + public ApiResponse + listEcsRemediationInvestigationsWithHttpInfo( + ListEcsRemediationInvestigationsOptionalParameters parameters) throws ApiException { + Object localVarPostBody = null; + String clusterArn = parameters.clusterArn; + String clusterName = parameters.clusterName; + String serviceArn = parameters.serviceArn; + String taskArn = parameters.taskArn; + String resourceArn = parameters.resourceArn; + List status = parameters.status; + String issueType = parameters.issueType; + Long sinceMs = parameters.sinceMs; + Long untilMs = parameters.untilMs; + Integer pageSize = parameters.pageSize; + String pageToken = parameters.pageToken; + // create path and map variables + String localVarPath = "/api/ui/orchestration/ecs_remediation/investigations"; + + List localVarQueryParams = new ArrayList(); + Map localVarHeaderParams = new HashMap(); + + localVarQueryParams.addAll(apiClient.parameterToPairs("", "cluster_arn", clusterArn)); + localVarQueryParams.addAll(apiClient.parameterToPairs("", "cluster_name", clusterName)); + localVarQueryParams.addAll(apiClient.parameterToPairs("", "service_arn", serviceArn)); + localVarQueryParams.addAll(apiClient.parameterToPairs("", "task_arn", taskArn)); + localVarQueryParams.addAll(apiClient.parameterToPairs("", "resource_arn", resourceArn)); + localVarQueryParams.addAll(apiClient.parameterToPairs("multi", "status", status)); + localVarQueryParams.addAll(apiClient.parameterToPairs("", "issue_type", issueType)); + localVarQueryParams.addAll(apiClient.parameterToPairs("", "since_ms", sinceMs)); + localVarQueryParams.addAll(apiClient.parameterToPairs("", "until_ms", untilMs)); + localVarQueryParams.addAll(apiClient.parameterToPairs("", "page_size", pageSize)); + localVarQueryParams.addAll(apiClient.parameterToPairs("", "page_token", pageToken)); + + Invocation.Builder builder = + apiClient.createBuilder( + "v2.EcsRemediationApi.listEcsRemediationInvestigations", + localVarPath, + localVarQueryParams, + localVarHeaderParams, + new HashMap(), + new String[] {"application/json"}, + new String[] {"apiKeyAuth", "appKeyAuth"}); + return apiClient.invokeAPI( + "GET", + builder, + localVarHeaderParams, + new String[] {}, + localVarPostBody, + new HashMap(), + false, + new GenericType() {}); + } + + /** + * List ECS remediation investigations. + * + *

See {@link #listEcsRemediationInvestigationsWithHttpInfo}. + * + * @param parameters Optional parameters for the request. + * @return CompletableFuture<ApiResponse<RemediationListInvestigationsResponse>> + */ + public CompletableFuture> + listEcsRemediationInvestigationsWithHttpInfoAsync( + ListEcsRemediationInvestigationsOptionalParameters parameters) { + Object localVarPostBody = null; + String clusterArn = parameters.clusterArn; + String clusterName = parameters.clusterName; + String serviceArn = parameters.serviceArn; + String taskArn = parameters.taskArn; + String resourceArn = parameters.resourceArn; + List status = parameters.status; + String issueType = parameters.issueType; + Long sinceMs = parameters.sinceMs; + Long untilMs = parameters.untilMs; + Integer pageSize = parameters.pageSize; + String pageToken = parameters.pageToken; + // create path and map variables + String localVarPath = "/api/ui/orchestration/ecs_remediation/investigations"; + + List localVarQueryParams = new ArrayList(); + Map localVarHeaderParams = new HashMap(); + + localVarQueryParams.addAll(apiClient.parameterToPairs("", "cluster_arn", clusterArn)); + localVarQueryParams.addAll(apiClient.parameterToPairs("", "cluster_name", clusterName)); + localVarQueryParams.addAll(apiClient.parameterToPairs("", "service_arn", serviceArn)); + localVarQueryParams.addAll(apiClient.parameterToPairs("", "task_arn", taskArn)); + localVarQueryParams.addAll(apiClient.parameterToPairs("", "resource_arn", resourceArn)); + localVarQueryParams.addAll(apiClient.parameterToPairs("multi", "status", status)); + localVarQueryParams.addAll(apiClient.parameterToPairs("", "issue_type", issueType)); + localVarQueryParams.addAll(apiClient.parameterToPairs("", "since_ms", sinceMs)); + localVarQueryParams.addAll(apiClient.parameterToPairs("", "until_ms", untilMs)); + localVarQueryParams.addAll(apiClient.parameterToPairs("", "page_size", pageSize)); + localVarQueryParams.addAll(apiClient.parameterToPairs("", "page_token", pageToken)); + + Invocation.Builder builder; + try { + builder = + apiClient.createBuilder( + "v2.EcsRemediationApi.listEcsRemediationInvestigations", + localVarPath, + localVarQueryParams, + localVarHeaderParams, + new HashMap(), + new String[] {"application/json"}, + new String[] {"apiKeyAuth", "appKeyAuth"}); + } catch (ApiException ex) { + CompletableFuture> result = + new CompletableFuture<>(); + result.completeExceptionally(ex); + return result; + } + return apiClient.invokeAPIAsync( + "GET", + builder, + localVarHeaderParams, + new String[] {}, + localVarPostBody, + new HashMap(), + false, + new GenericType() {}); + } +} diff --git a/src/main/java/com/datadog/api/client/v2/model/RemediationCodeSession.java b/src/main/java/com/datadog/api/client/v2/model/RemediationCodeSession.java new file mode 100644 index 00000000000..12b999af502 --- /dev/null +++ b/src/main/java/com/datadog/api/client/v2/model/RemediationCodeSession.java @@ -0,0 +1,168 @@ +/* + * 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. + */ + +package com.datadog.api.client.v2.model; + +import com.fasterxml.jackson.annotation.JsonAnyGetter; +import com.fasterxml.jackson.annotation.JsonAnySetter; +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; +import java.util.HashMap; +import java.util.Map; +import java.util.Objects; + +/** A linked code session (for example, a pull request) for the investigation. */ +@JsonPropertyOrder({ + RemediationCodeSession.JSON_PROPERTY_ID, + RemediationCodeSession.JSON_PROPERTY_PULL_REQUEST_STATUS +}) +@jakarta.annotation.Generated( + value = "https://github.com/DataDog/datadog-api-client-java/blob/master/.generator") +public class RemediationCodeSession { + @JsonIgnore public boolean unparsed = false; + public static final String JSON_PROPERTY_ID = "id"; + private String id; + + public static final String JSON_PROPERTY_PULL_REQUEST_STATUS = "pull_request_status"; + private RemediationPullRequestStatus pullRequestStatus; + + public RemediationCodeSession id(String id) { + this.id = id; + return this; + } + + /** + * Code session ID. + * + * @return id + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_ID) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public RemediationCodeSession pullRequestStatus(RemediationPullRequestStatus pullRequestStatus) { + this.pullRequestStatus = pullRequestStatus; + this.unparsed |= !pullRequestStatus.isValid(); + return this; + } + + /** + * Pull request status for a linked code session. + * + * @return pullRequestStatus + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_PULL_REQUEST_STATUS) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public RemediationPullRequestStatus getPullRequestStatus() { + return pullRequestStatus; + } + + public void setPullRequestStatus(RemediationPullRequestStatus pullRequestStatus) { + if (!pullRequestStatus.isValid()) { + this.unparsed = true; + } + this.pullRequestStatus = pullRequestStatus; + } + + /** + * A container for additional, undeclared properties. This is a holder for any undeclared + * properties as specified with the 'additionalProperties' keyword in the OAS document. + */ + private Map additionalProperties; + + /** + * Set the additional (undeclared) property with the specified name and value. If the property + * does not already exist, create it otherwise replace it. + * + * @param key The arbitrary key to set + * @param value The associated value + * @return RemediationCodeSession + */ + @JsonAnySetter + public RemediationCodeSession putAdditionalProperty(String key, Object value) { + if (this.additionalProperties == null) { + this.additionalProperties = new HashMap(); + } + this.additionalProperties.put(key, value); + return this; + } + + /** + * Return the additional (undeclared) property. + * + * @return The additional properties + */ + @JsonAnyGetter + public Map getAdditionalProperties() { + return additionalProperties; + } + + /** + * Return the additional (undeclared) property with the specified name. + * + * @param key The arbitrary key to get + * @return The specific additional property for the given key + */ + public Object getAdditionalProperty(String key) { + if (this.additionalProperties == null) { + return null; + } + return this.additionalProperties.get(key); + } + + /** Return true if this RemediationCodeSession object is equal to o. */ + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + RemediationCodeSession remediationCodeSession = (RemediationCodeSession) o; + return Objects.equals(this.id, remediationCodeSession.id) + && Objects.equals(this.pullRequestStatus, remediationCodeSession.pullRequestStatus) + && Objects.equals(this.additionalProperties, remediationCodeSession.additionalProperties); + } + + @Override + public int hashCode() { + return Objects.hash(id, pullRequestStatus, additionalProperties); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class RemediationCodeSession {\n"); + sb.append(" id: ").append(toIndentedString(id)).append("\n"); + sb.append(" pullRequestStatus: ").append(toIndentedString(pullRequestStatus)).append("\n"); + sb.append(" additionalProperties: ") + .append(toIndentedString(additionalProperties)) + .append("\n"); + sb.append('}'); + return sb.toString(); + } + + /** + * Convert the given object to string with each line indented by 4 spaces (except the first line). + */ + private String toIndentedString(Object o) { + if (o == null) { + return "null"; + } + return o.toString().replace("\n", "\n "); + } +} diff --git a/src/main/java/com/datadog/api/client/v2/model/RemediationConfidence.java b/src/main/java/com/datadog/api/client/v2/model/RemediationConfidence.java new file mode 100644 index 00000000000..a2ef77d8ac7 --- /dev/null +++ b/src/main/java/com/datadog/api/client/v2/model/RemediationConfidence.java @@ -0,0 +1,57 @@ +/* + * 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. + */ + +package com.datadog.api.client.v2.model; + +import com.datadog.api.client.ModelEnum; +import com.fasterxml.jackson.annotation.JsonCreator; +import com.fasterxml.jackson.core.JsonGenerator; +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.SerializerProvider; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.StdSerializer; +import java.io.IOException; +import java.util.Arrays; +import java.util.HashSet; +import java.util.Set; + +/** The agent's self-rated confidence in a plan. */ +@JsonSerialize(using = RemediationConfidence.RemediationConfidenceSerializer.class) +public class RemediationConfidence extends ModelEnum { + + private static final Set allowedValues = + new HashSet(Arrays.asList("low", "medium", "high")); + + public static final RemediationConfidence LOW = new RemediationConfidence("low"); + public static final RemediationConfidence MEDIUM = new RemediationConfidence("medium"); + public static final RemediationConfidence HIGH = new RemediationConfidence("high"); + + RemediationConfidence(String value) { + super(value, allowedValues); + } + + public static class RemediationConfidenceSerializer extends StdSerializer { + public RemediationConfidenceSerializer(Class t) { + super(t); + } + + public RemediationConfidenceSerializer() { + this(null); + } + + @Override + public void serialize( + RemediationConfidence value, JsonGenerator jgen, SerializerProvider provider) + throws IOException, JsonProcessingException { + jgen.writeObject(value.value); + } + } + + @JsonCreator + public static RemediationConfidence fromValue(String value) { + return new RemediationConfidence(value); + } +} diff --git a/src/main/java/com/datadog/api/client/v2/model/RemediationDeploymentRolloutState.java b/src/main/java/com/datadog/api/client/v2/model/RemediationDeploymentRolloutState.java new file mode 100644 index 00000000000..73960eb02ea --- /dev/null +++ b/src/main/java/com/datadog/api/client/v2/model/RemediationDeploymentRolloutState.java @@ -0,0 +1,62 @@ +/* + * 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. + */ + +package com.datadog.api.client.v2.model; + +import com.datadog.api.client.ModelEnum; +import com.fasterxml.jackson.annotation.JsonCreator; +import com.fasterxml.jackson.core.JsonGenerator; +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.SerializerProvider; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.StdSerializer; +import java.io.IOException; +import java.util.Arrays; +import java.util.HashSet; +import java.util.Set; + +/** ECS deployment state, populated only for deployment failures. */ +@JsonSerialize( + using = RemediationDeploymentRolloutState.RemediationDeploymentRolloutStateSerializer.class) +public class RemediationDeploymentRolloutState extends ModelEnum { + + private static final Set allowedValues = + new HashSet(Arrays.asList("IN_PROGRESS", "COMPLETED", "FAILED")); + + public static final RemediationDeploymentRolloutState IN_PROGRESS = + new RemediationDeploymentRolloutState("IN_PROGRESS"); + public static final RemediationDeploymentRolloutState COMPLETED = + new RemediationDeploymentRolloutState("COMPLETED"); + public static final RemediationDeploymentRolloutState FAILED = + new RemediationDeploymentRolloutState("FAILED"); + + RemediationDeploymentRolloutState(String value) { + super(value, allowedValues); + } + + public static class RemediationDeploymentRolloutStateSerializer + extends StdSerializer { + public RemediationDeploymentRolloutStateSerializer(Class t) { + super(t); + } + + public RemediationDeploymentRolloutStateSerializer() { + this(null); + } + + @Override + public void serialize( + RemediationDeploymentRolloutState value, JsonGenerator jgen, SerializerProvider provider) + throws IOException, JsonProcessingException { + jgen.writeObject(value.value); + } + } + + @JsonCreator + public static RemediationDeploymentRolloutState fromValue(String value) { + return new RemediationDeploymentRolloutState(value); + } +} diff --git a/src/main/java/com/datadog/api/client/v2/model/RemediationEcsMetadata.java b/src/main/java/com/datadog/api/client/v2/model/RemediationEcsMetadata.java new file mode 100644 index 00000000000..475bc830395 --- /dev/null +++ b/src/main/java/com/datadog/api/client/v2/model/RemediationEcsMetadata.java @@ -0,0 +1,631 @@ +/* + * 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. + */ + +package com.datadog.api.client.v2.model; + +import com.fasterxml.jackson.annotation.JsonAnyGetter; +import com.fasterxml.jackson.annotation.JsonAnySetter; +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Objects; + +/** ECS-specific context for the investigation. */ +@JsonPropertyOrder({ + RemediationEcsMetadata.JSON_PROPERTY_ACCOUNT_ID, + RemediationEcsMetadata.JSON_PROPERTY_CAPACITY_PROVIDERS, + RemediationEcsMetadata.JSON_PROPERTY_CLUSTER_ARN, + RemediationEcsMetadata.JSON_PROPERTY_CLUSTER_NAME, + RemediationEcsMetadata.JSON_PROPERTY_IMPACT_SCORE, + RemediationEcsMetadata.JSON_PROPERTY_ISSUE_START_TIME, + RemediationEcsMetadata.JSON_PROPERTY_LAUNCH_TYPE, + RemediationEcsMetadata.JSON_PROPERTY_REGION, + RemediationEcsMetadata.JSON_PROPERTY_TASK_ARNS, + RemediationEcsMetadata.JSON_PROPERTY_TASK_DEFINITION_FAMILY, + RemediationEcsMetadata.JSON_PROPERTY_TASK_DEFINITION_REVISION, + RemediationEcsMetadata.JSON_PROPERTY_TASKS, + RemediationEcsMetadata.JSON_PROPERTY_TOTAL_CPU_UNITS, + RemediationEcsMetadata.JSON_PROPERTY_TOTAL_MEMORY_MIB, + RemediationEcsMetadata.JSON_PROPERTY_UPDATE_TIMESTAMP, + RemediationEcsMetadata.JSON_PROPERTY_WORKLOAD_SUMMARY, + RemediationEcsMetadata.JSON_PROPERTY_WORKLOAD_TYPE +}) +@jakarta.annotation.Generated( + value = "https://github.com/DataDog/datadog-api-client-java/blob/master/.generator") +public class RemediationEcsMetadata { + @JsonIgnore public boolean unparsed = false; + public static final String JSON_PROPERTY_ACCOUNT_ID = "account_id"; + private String accountId; + + public static final String JSON_PROPERTY_CAPACITY_PROVIDERS = "capacity_providers"; + private List capacityProviders = null; + + public static final String JSON_PROPERTY_CLUSTER_ARN = "cluster_arn"; + private String clusterArn; + + public static final String JSON_PROPERTY_CLUSTER_NAME = "cluster_name"; + private String clusterName; + + public static final String JSON_PROPERTY_IMPACT_SCORE = "impact_score"; + private String impactScore; + + public static final String JSON_PROPERTY_ISSUE_START_TIME = "issue_start_time"; + private String issueStartTime; + + public static final String JSON_PROPERTY_LAUNCH_TYPE = "launch_type"; + private RemediationLaunchType launchType; + + public static final String JSON_PROPERTY_REGION = "region"; + private String region; + + public static final String JSON_PROPERTY_TASK_ARNS = "task_arns"; + private List taskArns = null; + + public static final String JSON_PROPERTY_TASK_DEFINITION_FAMILY = "task_definition_family"; + private String taskDefinitionFamily; + + public static final String JSON_PROPERTY_TASK_DEFINITION_REVISION = "task_definition_revision"; + private Long taskDefinitionRevision; + + public static final String JSON_PROPERTY_TASKS = "tasks"; + private List tasks = null; + + public static final String JSON_PROPERTY_TOTAL_CPU_UNITS = "total_cpu_units"; + private String totalCpuUnits; + + public static final String JSON_PROPERTY_TOTAL_MEMORY_MIB = "total_memory_mib"; + private String totalMemoryMib; + + public static final String JSON_PROPERTY_UPDATE_TIMESTAMP = "update_timestamp"; + private String updateTimestamp; + + public static final String JSON_PROPERTY_WORKLOAD_SUMMARY = "workload_summary"; + private RemediationWorkloadSummary workloadSummary; + + public static final String JSON_PROPERTY_WORKLOAD_TYPE = "workload_type"; + private RemediationWorkloadType workloadType; + + public RemediationEcsMetadata accountId(String accountId) { + this.accountId = accountId; + return this; + } + + /** + * AWS account ID. + * + * @return accountId + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_ACCOUNT_ID) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public String getAccountId() { + return accountId; + } + + public void setAccountId(String accountId) { + this.accountId = accountId; + } + + public RemediationEcsMetadata capacityProviders(List capacityProviders) { + this.capacityProviders = capacityProviders; + return this; + } + + public RemediationEcsMetadata addCapacityProvidersItem(String capacityProvidersItem) { + if (this.capacityProviders == null) { + this.capacityProviders = new ArrayList<>(); + } + this.capacityProviders.add(capacityProvidersItem); + return this; + } + + /** + * Associated capacity providers. + * + * @return capacityProviders + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_CAPACITY_PROVIDERS) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public List getCapacityProviders() { + return capacityProviders; + } + + public void setCapacityProviders(List capacityProviders) { + this.capacityProviders = capacityProviders; + } + + public RemediationEcsMetadata clusterArn(String clusterArn) { + this.clusterArn = clusterArn; + return this; + } + + /** + * ECS cluster ARN. + * + * @return clusterArn + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_CLUSTER_ARN) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public String getClusterArn() { + return clusterArn; + } + + public void setClusterArn(String clusterArn) { + this.clusterArn = clusterArn; + } + + public RemediationEcsMetadata clusterName(String clusterName) { + this.clusterName = clusterName; + return this; + } + + /** + * ECS cluster name. + * + * @return clusterName + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_CLUSTER_NAME) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public String getClusterName() { + return clusterName; + } + + public void setClusterName(String clusterName) { + this.clusterName = clusterName; + } + + public RemediationEcsMetadata impactScore(String impactScore) { + this.impactScore = impactScore; + return this; + } + + /** + * Computed impact score for ranking (64-bit integer encoded as a string). + * + * @return impactScore + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_IMPACT_SCORE) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public String getImpactScore() { + return impactScore; + } + + public void setImpactScore(String impactScore) { + this.impactScore = impactScore; + } + + public RemediationEcsMetadata issueStartTime(String issueStartTime) { + this.issueStartTime = issueStartTime; + return this; + } + + /** + * When the issue was first detected, epoch milliseconds (64-bit integer encoded as a string). + * + * @return issueStartTime + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_ISSUE_START_TIME) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public String getIssueStartTime() { + return issueStartTime; + } + + public void setIssueStartTime(String issueStartTime) { + this.issueStartTime = issueStartTime; + } + + public RemediationEcsMetadata launchType(RemediationLaunchType launchType) { + this.launchType = launchType; + this.unparsed |= !launchType.isValid(); + return this; + } + + /** + * ECS launch type. + * + * @return launchType + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_LAUNCH_TYPE) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public RemediationLaunchType getLaunchType() { + return launchType; + } + + public void setLaunchType(RemediationLaunchType launchType) { + if (!launchType.isValid()) { + this.unparsed = true; + } + this.launchType = launchType; + } + + public RemediationEcsMetadata region(String region) { + this.region = region; + return this; + } + + /** + * AWS region. + * + * @return region + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_REGION) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public String getRegion() { + return region; + } + + public void setRegion(String region) { + this.region = region; + } + + public RemediationEcsMetadata taskArns(List taskArns) { + this.taskArns = taskArns; + return this; + } + + public RemediationEcsMetadata addTaskArnsItem(String taskArnsItem) { + if (this.taskArns == null) { + this.taskArns = new ArrayList<>(); + } + this.taskArns.add(taskArnsItem); + return this; + } + + /** + * All affected task ARNs, for filtering. + * + * @return taskArns + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_TASK_ARNS) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public List getTaskArns() { + return taskArns; + } + + public void setTaskArns(List taskArns) { + this.taskArns = taskArns; + } + + public RemediationEcsMetadata taskDefinitionFamily(String taskDefinitionFamily) { + this.taskDefinitionFamily = taskDefinitionFamily; + return this; + } + + /** + * Task definition family name. + * + * @return taskDefinitionFamily + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_TASK_DEFINITION_FAMILY) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public String getTaskDefinitionFamily() { + return taskDefinitionFamily; + } + + public void setTaskDefinitionFamily(String taskDefinitionFamily) { + this.taskDefinitionFamily = taskDefinitionFamily; + } + + public RemediationEcsMetadata taskDefinitionRevision(Long taskDefinitionRevision) { + this.taskDefinitionRevision = taskDefinitionRevision; + return this; + } + + /** + * Current task definition revision. + * + * @return taskDefinitionRevision + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_TASK_DEFINITION_REVISION) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public Long getTaskDefinitionRevision() { + return taskDefinitionRevision; + } + + public void setTaskDefinitionRevision(Long taskDefinitionRevision) { + this.taskDefinitionRevision = taskDefinitionRevision; + } + + public RemediationEcsMetadata tasks(List tasks) { + this.tasks = tasks; + for (RemediationProblemTask item : tasks) { + this.unparsed |= item.unparsed; + } + return this; + } + + public RemediationEcsMetadata addTasksItem(RemediationProblemTask tasksItem) { + if (this.tasks == null) { + this.tasks = new ArrayList<>(); + } + this.tasks.add(tasksItem); + this.unparsed |= tasksItem.unparsed; + return this; + } + + /** + * Individual tasks exhibiting issues. Capped at 50 most recent. + * + * @return tasks + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_TASKS) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public List getTasks() { + return tasks; + } + + public void setTasks(List tasks) { + this.tasks = tasks; + } + + public RemediationEcsMetadata totalCpuUnits(String totalCpuUnits) { + this.totalCpuUnits = totalCpuUnits; + return this; + } + + /** + * Sum of CPU units across affected tasks (64-bit integer encoded as a string). + * + * @return totalCpuUnits + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_TOTAL_CPU_UNITS) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public String getTotalCpuUnits() { + return totalCpuUnits; + } + + public void setTotalCpuUnits(String totalCpuUnits) { + this.totalCpuUnits = totalCpuUnits; + } + + public RemediationEcsMetadata totalMemoryMib(String totalMemoryMib) { + this.totalMemoryMib = totalMemoryMib; + return this; + } + + /** + * Sum of memory (MiB) across affected tasks (64-bit integer encoded as a string). + * + * @return totalMemoryMib + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_TOTAL_MEMORY_MIB) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public String getTotalMemoryMib() { + return totalMemoryMib; + } + + public void setTotalMemoryMib(String totalMemoryMib) { + this.totalMemoryMib = totalMemoryMib; + } + + public RemediationEcsMetadata updateTimestamp(String updateTimestamp) { + this.updateTimestamp = updateTimestamp; + return this; + } + + /** + * When this metadata was last updated, epoch milliseconds (64-bit integer encoded as a string). + * + * @return updateTimestamp + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_UPDATE_TIMESTAMP) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public String getUpdateTimestamp() { + return updateTimestamp; + } + + public void setUpdateTimestamp(String updateTimestamp) { + this.updateTimestamp = updateTimestamp; + } + + public RemediationEcsMetadata workloadSummary(RemediationWorkloadSummary workloadSummary) { + this.workloadSummary = workloadSummary; + this.unparsed |= workloadSummary.unparsed; + return this; + } + + /** + * Aggregated health across all tasks in a workload (service or daemon). + * + * @return workloadSummary + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_WORKLOAD_SUMMARY) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public RemediationWorkloadSummary getWorkloadSummary() { + return workloadSummary; + } + + public void setWorkloadSummary(RemediationWorkloadSummary workloadSummary) { + this.workloadSummary = workloadSummary; + } + + public RemediationEcsMetadata workloadType(RemediationWorkloadType workloadType) { + this.workloadType = workloadType; + this.unparsed |= !workloadType.isValid(); + return this; + } + + /** + * The kind of ECS workload that owns the problematic tasks. + * + * @return workloadType + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_WORKLOAD_TYPE) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public RemediationWorkloadType getWorkloadType() { + return workloadType; + } + + public void setWorkloadType(RemediationWorkloadType workloadType) { + if (!workloadType.isValid()) { + this.unparsed = true; + } + this.workloadType = workloadType; + } + + /** + * A container for additional, undeclared properties. This is a holder for any undeclared + * properties as specified with the 'additionalProperties' keyword in the OAS document. + */ + private Map additionalProperties; + + /** + * Set the additional (undeclared) property with the specified name and value. If the property + * does not already exist, create it otherwise replace it. + * + * @param key The arbitrary key to set + * @param value The associated value + * @return RemediationEcsMetadata + */ + @JsonAnySetter + public RemediationEcsMetadata putAdditionalProperty(String key, Object value) { + if (this.additionalProperties == null) { + this.additionalProperties = new HashMap(); + } + this.additionalProperties.put(key, value); + return this; + } + + /** + * Return the additional (undeclared) property. + * + * @return The additional properties + */ + @JsonAnyGetter + public Map getAdditionalProperties() { + return additionalProperties; + } + + /** + * Return the additional (undeclared) property with the specified name. + * + * @param key The arbitrary key to get + * @return The specific additional property for the given key + */ + public Object getAdditionalProperty(String key) { + if (this.additionalProperties == null) { + return null; + } + return this.additionalProperties.get(key); + } + + /** Return true if this RemediationEcsMetadata object is equal to o. */ + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + RemediationEcsMetadata remediationEcsMetadata = (RemediationEcsMetadata) o; + return Objects.equals(this.accountId, remediationEcsMetadata.accountId) + && Objects.equals(this.capacityProviders, remediationEcsMetadata.capacityProviders) + && Objects.equals(this.clusterArn, remediationEcsMetadata.clusterArn) + && Objects.equals(this.clusterName, remediationEcsMetadata.clusterName) + && Objects.equals(this.impactScore, remediationEcsMetadata.impactScore) + && Objects.equals(this.issueStartTime, remediationEcsMetadata.issueStartTime) + && Objects.equals(this.launchType, remediationEcsMetadata.launchType) + && Objects.equals(this.region, remediationEcsMetadata.region) + && Objects.equals(this.taskArns, remediationEcsMetadata.taskArns) + && Objects.equals(this.taskDefinitionFamily, remediationEcsMetadata.taskDefinitionFamily) + && Objects.equals( + this.taskDefinitionRevision, remediationEcsMetadata.taskDefinitionRevision) + && Objects.equals(this.tasks, remediationEcsMetadata.tasks) + && Objects.equals(this.totalCpuUnits, remediationEcsMetadata.totalCpuUnits) + && Objects.equals(this.totalMemoryMib, remediationEcsMetadata.totalMemoryMib) + && Objects.equals(this.updateTimestamp, remediationEcsMetadata.updateTimestamp) + && Objects.equals(this.workloadSummary, remediationEcsMetadata.workloadSummary) + && Objects.equals(this.workloadType, remediationEcsMetadata.workloadType) + && Objects.equals(this.additionalProperties, remediationEcsMetadata.additionalProperties); + } + + @Override + public int hashCode() { + return Objects.hash( + accountId, + capacityProviders, + clusterArn, + clusterName, + impactScore, + issueStartTime, + launchType, + region, + taskArns, + taskDefinitionFamily, + taskDefinitionRevision, + tasks, + totalCpuUnits, + totalMemoryMib, + updateTimestamp, + workloadSummary, + workloadType, + additionalProperties); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class RemediationEcsMetadata {\n"); + sb.append(" accountId: ").append(toIndentedString(accountId)).append("\n"); + sb.append(" capacityProviders: ").append(toIndentedString(capacityProviders)).append("\n"); + sb.append(" clusterArn: ").append(toIndentedString(clusterArn)).append("\n"); + sb.append(" clusterName: ").append(toIndentedString(clusterName)).append("\n"); + sb.append(" impactScore: ").append(toIndentedString(impactScore)).append("\n"); + sb.append(" issueStartTime: ").append(toIndentedString(issueStartTime)).append("\n"); + sb.append(" launchType: ").append(toIndentedString(launchType)).append("\n"); + sb.append(" region: ").append(toIndentedString(region)).append("\n"); + sb.append(" taskArns: ").append(toIndentedString(taskArns)).append("\n"); + sb.append(" taskDefinitionFamily: ") + .append(toIndentedString(taskDefinitionFamily)) + .append("\n"); + sb.append(" taskDefinitionRevision: ") + .append(toIndentedString(taskDefinitionRevision)) + .append("\n"); + sb.append(" tasks: ").append(toIndentedString(tasks)).append("\n"); + sb.append(" totalCpuUnits: ").append(toIndentedString(totalCpuUnits)).append("\n"); + sb.append(" totalMemoryMib: ").append(toIndentedString(totalMemoryMib)).append("\n"); + sb.append(" updateTimestamp: ").append(toIndentedString(updateTimestamp)).append("\n"); + sb.append(" workloadSummary: ").append(toIndentedString(workloadSummary)).append("\n"); + sb.append(" workloadType: ").append(toIndentedString(workloadType)).append("\n"); + sb.append(" additionalProperties: ") + .append(toIndentedString(additionalProperties)) + .append("\n"); + sb.append('}'); + return sb.toString(); + } + + /** + * Convert the given object to string with each line indented by 4 spaces (except the first line). + */ + private String toIndentedString(Object o) { + if (o == null) { + return "null"; + } + return o.toString().replace("\n", "\n "); + } +} diff --git a/src/main/java/com/datadog/api/client/v2/model/RemediationExecuteRequest.java b/src/main/java/com/datadog/api/client/v2/model/RemediationExecuteRequest.java new file mode 100644 index 00000000000..929f675a4ff --- /dev/null +++ b/src/main/java/com/datadog/api/client/v2/model/RemediationExecuteRequest.java @@ -0,0 +1,176 @@ +/* + * 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. + */ + +package com.datadog.api.client.v2.model; + +import com.fasterxml.jackson.annotation.JsonAnyGetter; +import com.fasterxml.jackson.annotation.JsonAnySetter; +import com.fasterxml.jackson.annotation.JsonCreator; +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; +import java.util.HashMap; +import java.util.Map; +import java.util.Objects; + +/** Request payload for executing a remediation. */ +@JsonPropertyOrder({ + RemediationExecuteRequest.JSON_PROPERTY_CONNECTION_ID, + RemediationExecuteRequest.JSON_PROPERTY_INVESTIGATION_ID +}) +@jakarta.annotation.Generated( + value = "https://github.com/DataDog/datadog-api-client-java/blob/master/.generator") +public class RemediationExecuteRequest { + @JsonIgnore public boolean unparsed = false; + public static final String JSON_PROPERTY_CONNECTION_ID = "connection_id"; + private String connectionId; + + public static final String JSON_PROPERTY_INVESTIGATION_ID = "investigation_id"; + private String investigationId; + + public RemediationExecuteRequest() {} + + @JsonCreator + public RemediationExecuteRequest( + @JsonProperty(required = true, value = JSON_PROPERTY_CONNECTION_ID) String connectionId, + @JsonProperty(required = true, value = JSON_PROPERTY_INVESTIGATION_ID) + String investigationId) { + this.connectionId = connectionId; + this.investigationId = investigationId; + } + + public RemediationExecuteRequest connectionId(String connectionId) { + this.connectionId = connectionId; + return this; + } + + /** + * The Action Platform AWS connection ID to execute through. Must carry the integration_aws + * connection prefix. + * + * @return connectionId + */ + @JsonProperty(JSON_PROPERTY_CONNECTION_ID) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public String getConnectionId() { + return connectionId; + } + + public void setConnectionId(String connectionId) { + this.connectionId = connectionId; + } + + public RemediationExecuteRequest investigationId(String investigationId) { + this.investigationId = investigationId; + return this; + } + + /** + * The ID of the investigation to remediate. + * + * @return investigationId + */ + @JsonProperty(JSON_PROPERTY_INVESTIGATION_ID) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public String getInvestigationId() { + return investigationId; + } + + public void setInvestigationId(String investigationId) { + this.investigationId = investigationId; + } + + /** + * A container for additional, undeclared properties. This is a holder for any undeclared + * properties as specified with the 'additionalProperties' keyword in the OAS document. + */ + private Map additionalProperties; + + /** + * Set the additional (undeclared) property with the specified name and value. If the property + * does not already exist, create it otherwise replace it. + * + * @param key The arbitrary key to set + * @param value The associated value + * @return RemediationExecuteRequest + */ + @JsonAnySetter + public RemediationExecuteRequest putAdditionalProperty(String key, Object value) { + if (this.additionalProperties == null) { + this.additionalProperties = new HashMap(); + } + this.additionalProperties.put(key, value); + return this; + } + + /** + * Return the additional (undeclared) property. + * + * @return The additional properties + */ + @JsonAnyGetter + public Map getAdditionalProperties() { + return additionalProperties; + } + + /** + * Return the additional (undeclared) property with the specified name. + * + * @param key The arbitrary key to get + * @return The specific additional property for the given key + */ + public Object getAdditionalProperty(String key) { + if (this.additionalProperties == null) { + return null; + } + return this.additionalProperties.get(key); + } + + /** Return true if this RemediationExecuteRequest object is equal to o. */ + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + RemediationExecuteRequest remediationExecuteRequest = (RemediationExecuteRequest) o; + return Objects.equals(this.connectionId, remediationExecuteRequest.connectionId) + && Objects.equals(this.investigationId, remediationExecuteRequest.investigationId) + && Objects.equals( + this.additionalProperties, remediationExecuteRequest.additionalProperties); + } + + @Override + public int hashCode() { + return Objects.hash(connectionId, investigationId, additionalProperties); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class RemediationExecuteRequest {\n"); + sb.append(" connectionId: ").append(toIndentedString(connectionId)).append("\n"); + sb.append(" investigationId: ").append(toIndentedString(investigationId)).append("\n"); + sb.append(" additionalProperties: ") + .append(toIndentedString(additionalProperties)) + .append("\n"); + sb.append('}'); + return sb.toString(); + } + + /** + * Convert the given object to string with each line indented by 4 spaces (except the first line). + */ + private String toIndentedString(Object o) { + if (o == null) { + return "null"; + } + return o.toString().replace("\n", "\n "); + } +} diff --git a/src/main/java/com/datadog/api/client/v2/model/RemediationExecuteResponse.java b/src/main/java/com/datadog/api/client/v2/model/RemediationExecuteResponse.java new file mode 100644 index 00000000000..101b95d39b6 --- /dev/null +++ b/src/main/java/com/datadog/api/client/v2/model/RemediationExecuteResponse.java @@ -0,0 +1,145 @@ +/* + * 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. + */ + +package com.datadog.api.client.v2.model; + +import com.fasterxml.jackson.annotation.JsonAnyGetter; +import com.fasterxml.jackson.annotation.JsonAnySetter; +import com.fasterxml.jackson.annotation.JsonCreator; +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; +import java.util.HashMap; +import java.util.Map; +import java.util.Objects; + +/** Response payload for executing a remediation. */ +@JsonPropertyOrder({RemediationExecuteResponse.JSON_PROPERTY_INVESTIGATION_ID}) +@jakarta.annotation.Generated( + value = "https://github.com/DataDog/datadog-api-client-java/blob/master/.generator") +public class RemediationExecuteResponse { + @JsonIgnore public boolean unparsed = false; + public static final String JSON_PROPERTY_INVESTIGATION_ID = "investigation_id"; + private String investigationId; + + public RemediationExecuteResponse() {} + + @JsonCreator + public RemediationExecuteResponse( + @JsonProperty(required = true, value = JSON_PROPERTY_INVESTIGATION_ID) + String investigationId) { + this.investigationId = investigationId; + } + + public RemediationExecuteResponse investigationId(String investigationId) { + this.investigationId = investigationId; + return this; + } + + /** + * Echoes the investigation ID that the remediation runs against. + * + * @return investigationId + */ + @JsonProperty(JSON_PROPERTY_INVESTIGATION_ID) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public String getInvestigationId() { + return investigationId; + } + + public void setInvestigationId(String investigationId) { + this.investigationId = investigationId; + } + + /** + * A container for additional, undeclared properties. This is a holder for any undeclared + * properties as specified with the 'additionalProperties' keyword in the OAS document. + */ + private Map additionalProperties; + + /** + * Set the additional (undeclared) property with the specified name and value. If the property + * does not already exist, create it otherwise replace it. + * + * @param key The arbitrary key to set + * @param value The associated value + * @return RemediationExecuteResponse + */ + @JsonAnySetter + public RemediationExecuteResponse putAdditionalProperty(String key, Object value) { + if (this.additionalProperties == null) { + this.additionalProperties = new HashMap(); + } + this.additionalProperties.put(key, value); + return this; + } + + /** + * Return the additional (undeclared) property. + * + * @return The additional properties + */ + @JsonAnyGetter + public Map getAdditionalProperties() { + return additionalProperties; + } + + /** + * Return the additional (undeclared) property with the specified name. + * + * @param key The arbitrary key to get + * @return The specific additional property for the given key + */ + public Object getAdditionalProperty(String key) { + if (this.additionalProperties == null) { + return null; + } + return this.additionalProperties.get(key); + } + + /** Return true if this RemediationExecuteResponse object is equal to o. */ + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + RemediationExecuteResponse remediationExecuteResponse = (RemediationExecuteResponse) o; + return Objects.equals(this.investigationId, remediationExecuteResponse.investigationId) + && Objects.equals( + this.additionalProperties, remediationExecuteResponse.additionalProperties); + } + + @Override + public int hashCode() { + return Objects.hash(investigationId, additionalProperties); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class RemediationExecuteResponse {\n"); + sb.append(" investigationId: ").append(toIndentedString(investigationId)).append("\n"); + sb.append(" additionalProperties: ") + .append(toIndentedString(additionalProperties)) + .append("\n"); + sb.append('}'); + return sb.toString(); + } + + /** + * Convert the given object to string with each line indented by 4 spaces (except the first line). + */ + private String toIndentedString(Object o) { + if (o == null) { + return "null"; + } + return o.toString().replace("\n", "\n "); + } +} diff --git a/src/main/java/com/datadog/api/client/v2/model/RemediationGetInvestigationResponse.java b/src/main/java/com/datadog/api/client/v2/model/RemediationGetInvestigationResponse.java new file mode 100644 index 00000000000..4dc3f42d1c9 --- /dev/null +++ b/src/main/java/com/datadog/api/client/v2/model/RemediationGetInvestigationResponse.java @@ -0,0 +1,149 @@ +/* + * 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. + */ + +package com.datadog.api.client.v2.model; + +import com.fasterxml.jackson.annotation.JsonAnyGetter; +import com.fasterxml.jackson.annotation.JsonAnySetter; +import com.fasterxml.jackson.annotation.JsonCreator; +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; +import java.util.HashMap; +import java.util.Map; +import java.util.Objects; + +/** Response payload for getting a single investigation. */ +@JsonPropertyOrder({RemediationGetInvestigationResponse.JSON_PROPERTY_INVESTIGATION}) +@jakarta.annotation.Generated( + value = "https://github.com/DataDog/datadog-api-client-java/blob/master/.generator") +public class RemediationGetInvestigationResponse { + @JsonIgnore public boolean unparsed = false; + public static final String JSON_PROPERTY_INVESTIGATION = "investigation"; + private RemediationInvestigation investigation; + + public RemediationGetInvestigationResponse() {} + + @JsonCreator + public RemediationGetInvestigationResponse( + @JsonProperty(required = true, value = JSON_PROPERTY_INVESTIGATION) + RemediationInvestigation investigation) { + this.investigation = investigation; + this.unparsed |= investigation.unparsed; + } + + public RemediationGetInvestigationResponse investigation(RemediationInvestigation investigation) { + this.investigation = investigation; + this.unparsed |= investigation.unparsed; + return this; + } + + /** + * A single ECS remediation investigation: a detected issue together with its proposed plan, + * history, and ECS workload metadata. + * + * @return investigation + */ + @JsonProperty(JSON_PROPERTY_INVESTIGATION) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public RemediationInvestigation getInvestigation() { + return investigation; + } + + public void setInvestigation(RemediationInvestigation investigation) { + this.investigation = investigation; + } + + /** + * A container for additional, undeclared properties. This is a holder for any undeclared + * properties as specified with the 'additionalProperties' keyword in the OAS document. + */ + private Map additionalProperties; + + /** + * Set the additional (undeclared) property with the specified name and value. If the property + * does not already exist, create it otherwise replace it. + * + * @param key The arbitrary key to set + * @param value The associated value + * @return RemediationGetInvestigationResponse + */ + @JsonAnySetter + public RemediationGetInvestigationResponse putAdditionalProperty(String key, Object value) { + if (this.additionalProperties == null) { + this.additionalProperties = new HashMap(); + } + this.additionalProperties.put(key, value); + return this; + } + + /** + * Return the additional (undeclared) property. + * + * @return The additional properties + */ + @JsonAnyGetter + public Map getAdditionalProperties() { + return additionalProperties; + } + + /** + * Return the additional (undeclared) property with the specified name. + * + * @param key The arbitrary key to get + * @return The specific additional property for the given key + */ + public Object getAdditionalProperty(String key) { + if (this.additionalProperties == null) { + return null; + } + return this.additionalProperties.get(key); + } + + /** Return true if this RemediationGetInvestigationResponse object is equal to o. */ + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + RemediationGetInvestigationResponse remediationGetInvestigationResponse = + (RemediationGetInvestigationResponse) o; + return Objects.equals(this.investigation, remediationGetInvestigationResponse.investigation) + && Objects.equals( + this.additionalProperties, remediationGetInvestigationResponse.additionalProperties); + } + + @Override + public int hashCode() { + return Objects.hash(investigation, additionalProperties); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class RemediationGetInvestigationResponse {\n"); + sb.append(" investigation: ").append(toIndentedString(investigation)).append("\n"); + sb.append(" additionalProperties: ") + .append(toIndentedString(additionalProperties)) + .append("\n"); + sb.append('}'); + return sb.toString(); + } + + /** + * Convert the given object to string with each line indented by 4 spaces (except the first line). + */ + private String toIndentedString(Object o) { + if (o == null) { + return "null"; + } + return o.toString().replace("\n", "\n "); + } +} diff --git a/src/main/java/com/datadog/api/client/v2/model/RemediationGuardrailDecision.java b/src/main/java/com/datadog/api/client/v2/model/RemediationGuardrailDecision.java new file mode 100644 index 00000000000..e5e10e3072d --- /dev/null +++ b/src/main/java/com/datadog/api/client/v2/model/RemediationGuardrailDecision.java @@ -0,0 +1,170 @@ +/* + * 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. + */ + +package com.datadog.api.client.v2.model; + +import com.fasterxml.jackson.annotation.JsonAnyGetter; +import com.fasterxml.jackson.annotation.JsonAnySetter; +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; +import java.util.HashMap; +import java.util.Map; +import java.util.Objects; + +/** The guardrail decision applied to a plan or investigation. */ +@JsonPropertyOrder({ + RemediationGuardrailDecision.JSON_PROPERTY_DECISION, + RemediationGuardrailDecision.JSON_PROPERTY_GUARDRAIL_ID +}) +@jakarta.annotation.Generated( + value = "https://github.com/DataDog/datadog-api-client-java/blob/master/.generator") +public class RemediationGuardrailDecision { + @JsonIgnore public boolean unparsed = false; + public static final String JSON_PROPERTY_DECISION = "decision"; + private RemediationGuardrailVerdict decision; + + public static final String JSON_PROPERTY_GUARDRAIL_ID = "guardrail_id"; + private String guardrailId; + + public RemediationGuardrailDecision decision(RemediationGuardrailVerdict decision) { + this.decision = decision; + this.unparsed |= !decision.isValid(); + return this; + } + + /** + * The verdict a guardrail applied to a plan or investigation. + * + * @return decision + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_DECISION) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public RemediationGuardrailVerdict getDecision() { + return decision; + } + + public void setDecision(RemediationGuardrailVerdict decision) { + if (!decision.isValid()) { + this.unparsed = true; + } + this.decision = decision; + } + + public RemediationGuardrailDecision guardrailId(String guardrailId) { + this.guardrailId = guardrailId; + return this; + } + + /** + * ID of the matching guardrail. Set when the decision is not denied; may be empty when denied + * because no rule matched. + * + * @return guardrailId + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_GUARDRAIL_ID) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public String getGuardrailId() { + return guardrailId; + } + + public void setGuardrailId(String guardrailId) { + this.guardrailId = guardrailId; + } + + /** + * A container for additional, undeclared properties. This is a holder for any undeclared + * properties as specified with the 'additionalProperties' keyword in the OAS document. + */ + private Map additionalProperties; + + /** + * Set the additional (undeclared) property with the specified name and value. If the property + * does not already exist, create it otherwise replace it. + * + * @param key The arbitrary key to set + * @param value The associated value + * @return RemediationGuardrailDecision + */ + @JsonAnySetter + public RemediationGuardrailDecision putAdditionalProperty(String key, Object value) { + if (this.additionalProperties == null) { + this.additionalProperties = new HashMap(); + } + this.additionalProperties.put(key, value); + return this; + } + + /** + * Return the additional (undeclared) property. + * + * @return The additional properties + */ + @JsonAnyGetter + public Map getAdditionalProperties() { + return additionalProperties; + } + + /** + * Return the additional (undeclared) property with the specified name. + * + * @param key The arbitrary key to get + * @return The specific additional property for the given key + */ + public Object getAdditionalProperty(String key) { + if (this.additionalProperties == null) { + return null; + } + return this.additionalProperties.get(key); + } + + /** Return true if this RemediationGuardrailDecision object is equal to o. */ + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + RemediationGuardrailDecision remediationGuardrailDecision = (RemediationGuardrailDecision) o; + return Objects.equals(this.decision, remediationGuardrailDecision.decision) + && Objects.equals(this.guardrailId, remediationGuardrailDecision.guardrailId) + && Objects.equals( + this.additionalProperties, remediationGuardrailDecision.additionalProperties); + } + + @Override + public int hashCode() { + return Objects.hash(decision, guardrailId, additionalProperties); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class RemediationGuardrailDecision {\n"); + sb.append(" decision: ").append(toIndentedString(decision)).append("\n"); + sb.append(" guardrailId: ").append(toIndentedString(guardrailId)).append("\n"); + sb.append(" additionalProperties: ") + .append(toIndentedString(additionalProperties)) + .append("\n"); + sb.append('}'); + return sb.toString(); + } + + /** + * Convert the given object to string with each line indented by 4 spaces (except the first line). + */ + private String toIndentedString(Object o) { + if (o == null) { + return "null"; + } + return o.toString().replace("\n", "\n "); + } +} diff --git a/src/main/java/com/datadog/api/client/v2/model/RemediationGuardrailVerdict.java b/src/main/java/com/datadog/api/client/v2/model/RemediationGuardrailVerdict.java new file mode 100644 index 00000000000..f908430d693 --- /dev/null +++ b/src/main/java/com/datadog/api/client/v2/model/RemediationGuardrailVerdict.java @@ -0,0 +1,61 @@ +/* + * 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. + */ + +package com.datadog.api.client.v2.model; + +import com.datadog.api.client.ModelEnum; +import com.fasterxml.jackson.annotation.JsonCreator; +import com.fasterxml.jackson.core.JsonGenerator; +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.SerializerProvider; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.StdSerializer; +import java.io.IOException; +import java.util.Arrays; +import java.util.HashSet; +import java.util.Set; + +/** The verdict a guardrail applied to a plan or investigation. */ +@JsonSerialize(using = RemediationGuardrailVerdict.RemediationGuardrailVerdictSerializer.class) +public class RemediationGuardrailVerdict extends ModelEnum { + + private static final Set allowedValues = + new HashSet(Arrays.asList("allowed", "approval_required", "denied")); + + public static final RemediationGuardrailVerdict ALLOWED = + new RemediationGuardrailVerdict("allowed"); + public static final RemediationGuardrailVerdict APPROVAL_REQUIRED = + new RemediationGuardrailVerdict("approval_required"); + public static final RemediationGuardrailVerdict DENIED = + new RemediationGuardrailVerdict("denied"); + + RemediationGuardrailVerdict(String value) { + super(value, allowedValues); + } + + public static class RemediationGuardrailVerdictSerializer + extends StdSerializer { + public RemediationGuardrailVerdictSerializer(Class t) { + super(t); + } + + public RemediationGuardrailVerdictSerializer() { + this(null); + } + + @Override + public void serialize( + RemediationGuardrailVerdict value, JsonGenerator jgen, SerializerProvider provider) + throws IOException, JsonProcessingException { + jgen.writeObject(value.value); + } + } + + @JsonCreator + public static RemediationGuardrailVerdict fromValue(String value) { + return new RemediationGuardrailVerdict(value); + } +} diff --git a/src/main/java/com/datadog/api/client/v2/model/RemediationHistoryEvent.java b/src/main/java/com/datadog/api/client/v2/model/RemediationHistoryEvent.java new file mode 100644 index 00000000000..b87d7f7ad5e --- /dev/null +++ b/src/main/java/com/datadog/api/client/v2/model/RemediationHistoryEvent.java @@ -0,0 +1,218 @@ +/* + * 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. + */ + +package com.datadog.api.client.v2.model; + +import com.fasterxml.jackson.annotation.JsonAnyGetter; +import com.fasterxml.jackson.annotation.JsonAnySetter; +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; +import java.util.HashMap; +import java.util.Map; +import java.util.Objects; + +/** A single event in the investigation history. */ +@JsonPropertyOrder({ + RemediationHistoryEvent.JSON_PROPERTY_EVENT_TYPE, + RemediationHistoryEvent.JSON_PROPERTY_ID, + RemediationHistoryEvent.JSON_PROPERTY_PAYLOAD, + RemediationHistoryEvent.JSON_PROPERTY_TIMESTAMP_MS +}) +@jakarta.annotation.Generated( + value = "https://github.com/DataDog/datadog-api-client-java/blob/master/.generator") +public class RemediationHistoryEvent { + @JsonIgnore public boolean unparsed = false; + public static final String JSON_PROPERTY_EVENT_TYPE = "event_type"; + private String eventType; + + public static final String JSON_PROPERTY_ID = "id"; + private String id; + + public static final String JSON_PROPERTY_PAYLOAD = "payload"; + private String payload; + + public static final String JSON_PROPERTY_TIMESTAMP_MS = "timestamp_ms"; + private String timestampMs; + + public RemediationHistoryEvent eventType(String eventType) { + this.eventType = eventType; + return this; + } + + /** + * The type of event. + * + * @return eventType + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_EVENT_TYPE) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public String getEventType() { + return eventType; + } + + public void setEventType(String eventType) { + this.eventType = eventType; + } + + public RemediationHistoryEvent id(String id) { + this.id = id; + return this; + } + + /** + * History event ID. + * + * @return id + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_ID) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public RemediationHistoryEvent payload(String payload) { + this.payload = payload; + return this; + } + + /** + * Opaque JSON event body, base64-encoded. Decode and parse according to event_type. + * + * @return payload + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_PAYLOAD) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public String getPayload() { + return payload; + } + + public void setPayload(String payload) { + this.payload = payload; + } + + public RemediationHistoryEvent timestampMs(String timestampMs) { + this.timestampMs = timestampMs; + return this; + } + + /** + * Event time in epoch milliseconds (64-bit integer encoded as a string). + * + * @return timestampMs + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_TIMESTAMP_MS) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public String getTimestampMs() { + return timestampMs; + } + + public void setTimestampMs(String timestampMs) { + this.timestampMs = timestampMs; + } + + /** + * A container for additional, undeclared properties. This is a holder for any undeclared + * properties as specified with the 'additionalProperties' keyword in the OAS document. + */ + private Map additionalProperties; + + /** + * Set the additional (undeclared) property with the specified name and value. If the property + * does not already exist, create it otherwise replace it. + * + * @param key The arbitrary key to set + * @param value The associated value + * @return RemediationHistoryEvent + */ + @JsonAnySetter + public RemediationHistoryEvent putAdditionalProperty(String key, Object value) { + if (this.additionalProperties == null) { + this.additionalProperties = new HashMap(); + } + this.additionalProperties.put(key, value); + return this; + } + + /** + * Return the additional (undeclared) property. + * + * @return The additional properties + */ + @JsonAnyGetter + public Map getAdditionalProperties() { + return additionalProperties; + } + + /** + * Return the additional (undeclared) property with the specified name. + * + * @param key The arbitrary key to get + * @return The specific additional property for the given key + */ + public Object getAdditionalProperty(String key) { + if (this.additionalProperties == null) { + return null; + } + return this.additionalProperties.get(key); + } + + /** Return true if this RemediationHistoryEvent object is equal to o. */ + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + RemediationHistoryEvent remediationHistoryEvent = (RemediationHistoryEvent) o; + return Objects.equals(this.eventType, remediationHistoryEvent.eventType) + && Objects.equals(this.id, remediationHistoryEvent.id) + && Objects.equals(this.payload, remediationHistoryEvent.payload) + && Objects.equals(this.timestampMs, remediationHistoryEvent.timestampMs) + && Objects.equals(this.additionalProperties, remediationHistoryEvent.additionalProperties); + } + + @Override + public int hashCode() { + return Objects.hash(eventType, id, payload, timestampMs, additionalProperties); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class RemediationHistoryEvent {\n"); + sb.append(" eventType: ").append(toIndentedString(eventType)).append("\n"); + sb.append(" id: ").append(toIndentedString(id)).append("\n"); + sb.append(" payload: ").append(toIndentedString(payload)).append("\n"); + sb.append(" timestampMs: ").append(toIndentedString(timestampMs)).append("\n"); + sb.append(" additionalProperties: ") + .append(toIndentedString(additionalProperties)) + .append("\n"); + sb.append('}'); + return sb.toString(); + } + + /** + * Convert the given object to string with each line indented by 4 spaces (except the first line). + */ + private String toIndentedString(Object o) { + if (o == null) { + return "null"; + } + return o.toString().replace("\n", "\n "); + } +} diff --git a/src/main/java/com/datadog/api/client/v2/model/RemediationInvestigation.java b/src/main/java/com/datadog/api/client/v2/model/RemediationInvestigation.java new file mode 100644 index 00000000000..f3563d7b540 --- /dev/null +++ b/src/main/java/com/datadog/api/client/v2/model/RemediationInvestigation.java @@ -0,0 +1,501 @@ +/* + * 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. + */ + +package com.datadog.api.client.v2.model; + +import com.fasterxml.jackson.annotation.JsonAnyGetter; +import com.fasterxml.jackson.annotation.JsonAnySetter; +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Objects; + +/** + * A single ECS remediation investigation: a detected issue together with its proposed plan, + * history, and ECS workload metadata. + */ +@JsonPropertyOrder({ + RemediationInvestigation.JSON_PROPERTY_CODE_SESSION, + RemediationInvestigation.JSON_PROPERTY_CREATED_AT_MS, + RemediationInvestigation.JSON_PROPERTY_GUARDRAIL_DECISION, + RemediationInvestigation.JSON_PROPERTY_HISTORY, + RemediationInvestigation.JSON_PROPERTY_ID, + RemediationInvestigation.JSON_PROPERTY_ISSUE_TYPE, + RemediationInvestigation.JSON_PROPERTY_LAST_ACTION_AT_MS, + RemediationInvestigation.JSON_PROPERTY_METADATA, + RemediationInvestigation.JSON_PROPERTY_ORG_ID, + RemediationInvestigation.JSON_PROPERTY_PLAN, + RemediationInvestigation.JSON_PROPERTY_RESOURCE_ARN, + RemediationInvestigation.JSON_PROPERTY_STATUS, + RemediationInvestigation.JSON_PROPERTY_UPDATED_AT_MS +}) +@jakarta.annotation.Generated( + value = "https://github.com/DataDog/datadog-api-client-java/blob/master/.generator") +public class RemediationInvestigation { + @JsonIgnore public boolean unparsed = false; + public static final String JSON_PROPERTY_CODE_SESSION = "code_session"; + private RemediationCodeSession codeSession; + + public static final String JSON_PROPERTY_CREATED_AT_MS = "created_at_ms"; + private String createdAtMs; + + public static final String JSON_PROPERTY_GUARDRAIL_DECISION = "guardrail_decision"; + private RemediationGuardrailDecision guardrailDecision; + + public static final String JSON_PROPERTY_HISTORY = "history"; + private List history = null; + + public static final String JSON_PROPERTY_ID = "id"; + private String id; + + public static final String JSON_PROPERTY_ISSUE_TYPE = "issue_type"; + private String issueType; + + public static final String JSON_PROPERTY_LAST_ACTION_AT_MS = "last_action_at_ms"; + private String lastActionAtMs; + + public static final String JSON_PROPERTY_METADATA = "metadata"; + private RemediationEcsMetadata metadata; + + public static final String JSON_PROPERTY_ORG_ID = "org_id"; + private String orgId; + + public static final String JSON_PROPERTY_PLAN = "plan"; + private RemediationPlan plan; + + public static final String JSON_PROPERTY_RESOURCE_ARN = "resource_arn"; + private String resourceArn; + + public static final String JSON_PROPERTY_STATUS = "status"; + private RemediationInvestigationStatus status; + + public static final String JSON_PROPERTY_UPDATED_AT_MS = "updated_at_ms"; + private String updatedAtMs; + + public RemediationInvestigation codeSession(RemediationCodeSession codeSession) { + this.codeSession = codeSession; + this.unparsed |= codeSession.unparsed; + return this; + } + + /** + * A linked code session (for example, a pull request) for the investigation. + * + * @return codeSession + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_CODE_SESSION) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public RemediationCodeSession getCodeSession() { + return codeSession; + } + + public void setCodeSession(RemediationCodeSession codeSession) { + this.codeSession = codeSession; + } + + public RemediationInvestigation createdAtMs(String createdAtMs) { + this.createdAtMs = createdAtMs; + return this; + } + + /** + * Creation time in epoch milliseconds (64-bit integer encoded as a string). + * + * @return createdAtMs + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_CREATED_AT_MS) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public String getCreatedAtMs() { + return createdAtMs; + } + + public void setCreatedAtMs(String createdAtMs) { + this.createdAtMs = createdAtMs; + } + + public RemediationInvestigation guardrailDecision( + RemediationGuardrailDecision guardrailDecision) { + this.guardrailDecision = guardrailDecision; + this.unparsed |= guardrailDecision.unparsed; + return this; + } + + /** + * The guardrail decision applied to a plan or investigation. + * + * @return guardrailDecision + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_GUARDRAIL_DECISION) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public RemediationGuardrailDecision getGuardrailDecision() { + return guardrailDecision; + } + + public void setGuardrailDecision(RemediationGuardrailDecision guardrailDecision) { + this.guardrailDecision = guardrailDecision; + } + + public RemediationInvestigation history(List history) { + this.history = history; + for (RemediationHistoryEvent item : history) { + this.unparsed |= item.unparsed; + } + return this; + } + + public RemediationInvestigation addHistoryItem(RemediationHistoryEvent historyItem) { + if (this.history == null) { + this.history = new ArrayList<>(); + } + this.history.add(historyItem); + this.unparsed |= historyItem.unparsed; + return this; + } + + /** + * Ordered list of history events for the investigation. + * + * @return history + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_HISTORY) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public List getHistory() { + return history; + } + + public void setHistory(List history) { + this.history = history; + } + + public RemediationInvestigation id(String id) { + this.id = id; + return this; + } + + /** + * Unique investigation ID. + * + * @return id + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_ID) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public RemediationInvestigation issueType(String issueType) { + this.issueType = issueType; + return this; + } + + /** + * The detected issue type. + * + * @return issueType + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_ISSUE_TYPE) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public String getIssueType() { + return issueType; + } + + public void setIssueType(String issueType) { + this.issueType = issueType; + } + + public RemediationInvestigation lastActionAtMs(String lastActionAtMs) { + this.lastActionAtMs = lastActionAtMs; + return this; + } + + /** + * Time of the last action in epoch milliseconds (64-bit integer encoded as a string). + * + * @return lastActionAtMs + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_LAST_ACTION_AT_MS) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public String getLastActionAtMs() { + return lastActionAtMs; + } + + public void setLastActionAtMs(String lastActionAtMs) { + this.lastActionAtMs = lastActionAtMs; + } + + public RemediationInvestigation metadata(RemediationEcsMetadata metadata) { + this.metadata = metadata; + this.unparsed |= metadata.unparsed; + return this; + } + + /** + * ECS-specific context for the investigation. + * + * @return metadata + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_METADATA) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public RemediationEcsMetadata getMetadata() { + return metadata; + } + + public void setMetadata(RemediationEcsMetadata metadata) { + this.metadata = metadata; + } + + public RemediationInvestigation orgId(String orgId) { + this.orgId = orgId; + return this; + } + + /** + * Datadog organization ID that owns the investigation (64-bit integer encoded as a string). + * + * @return orgId + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_ORG_ID) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public String getOrgId() { + return orgId; + } + + public void setOrgId(String orgId) { + this.orgId = orgId; + } + + public RemediationInvestigation plan(RemediationPlan plan) { + this.plan = plan; + this.unparsed |= plan.unparsed; + return this; + } + + /** + * The remediation plan proposed by the ECS remediation agent. + * + * @return plan + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_PLAN) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public RemediationPlan getPlan() { + return plan; + } + + public void setPlan(RemediationPlan plan) { + this.plan = plan; + } + + public RemediationInvestigation resourceArn(String resourceArn) { + this.resourceArn = resourceArn; + return this; + } + + /** + * ARN of the ECS resource the investigation is about. + * + * @return resourceArn + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_RESOURCE_ARN) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public String getResourceArn() { + return resourceArn; + } + + public void setResourceArn(String resourceArn) { + this.resourceArn = resourceArn; + } + + public RemediationInvestigation status(RemediationInvestigationStatus status) { + this.status = status; + this.unparsed |= !status.isValid(); + return this; + } + + /** + * Investigation status. + * + * @return status + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_STATUS) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public RemediationInvestigationStatus getStatus() { + return status; + } + + public void setStatus(RemediationInvestigationStatus status) { + if (!status.isValid()) { + this.unparsed = true; + } + this.status = status; + } + + public RemediationInvestigation updatedAtMs(String updatedAtMs) { + this.updatedAtMs = updatedAtMs; + return this; + } + + /** + * Last update time in epoch milliseconds (64-bit integer encoded as a string). + * + * @return updatedAtMs + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_UPDATED_AT_MS) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public String getUpdatedAtMs() { + return updatedAtMs; + } + + public void setUpdatedAtMs(String updatedAtMs) { + this.updatedAtMs = updatedAtMs; + } + + /** + * A container for additional, undeclared properties. This is a holder for any undeclared + * properties as specified with the 'additionalProperties' keyword in the OAS document. + */ + private Map additionalProperties; + + /** + * Set the additional (undeclared) property with the specified name and value. If the property + * does not already exist, create it otherwise replace it. + * + * @param key The arbitrary key to set + * @param value The associated value + * @return RemediationInvestigation + */ + @JsonAnySetter + public RemediationInvestigation putAdditionalProperty(String key, Object value) { + if (this.additionalProperties == null) { + this.additionalProperties = new HashMap(); + } + this.additionalProperties.put(key, value); + return this; + } + + /** + * Return the additional (undeclared) property. + * + * @return The additional properties + */ + @JsonAnyGetter + public Map getAdditionalProperties() { + return additionalProperties; + } + + /** + * Return the additional (undeclared) property with the specified name. + * + * @param key The arbitrary key to get + * @return The specific additional property for the given key + */ + public Object getAdditionalProperty(String key) { + if (this.additionalProperties == null) { + return null; + } + return this.additionalProperties.get(key); + } + + /** Return true if this RemediationInvestigation object is equal to o. */ + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + RemediationInvestigation remediationInvestigation = (RemediationInvestigation) o; + return Objects.equals(this.codeSession, remediationInvestigation.codeSession) + && Objects.equals(this.createdAtMs, remediationInvestigation.createdAtMs) + && Objects.equals(this.guardrailDecision, remediationInvestigation.guardrailDecision) + && Objects.equals(this.history, remediationInvestigation.history) + && Objects.equals(this.id, remediationInvestigation.id) + && Objects.equals(this.issueType, remediationInvestigation.issueType) + && Objects.equals(this.lastActionAtMs, remediationInvestigation.lastActionAtMs) + && Objects.equals(this.metadata, remediationInvestigation.metadata) + && Objects.equals(this.orgId, remediationInvestigation.orgId) + && Objects.equals(this.plan, remediationInvestigation.plan) + && Objects.equals(this.resourceArn, remediationInvestigation.resourceArn) + && Objects.equals(this.status, remediationInvestigation.status) + && Objects.equals(this.updatedAtMs, remediationInvestigation.updatedAtMs) + && Objects.equals(this.additionalProperties, remediationInvestigation.additionalProperties); + } + + @Override + public int hashCode() { + return Objects.hash( + codeSession, + createdAtMs, + guardrailDecision, + history, + id, + issueType, + lastActionAtMs, + metadata, + orgId, + plan, + resourceArn, + status, + updatedAtMs, + additionalProperties); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class RemediationInvestigation {\n"); + sb.append(" codeSession: ").append(toIndentedString(codeSession)).append("\n"); + sb.append(" createdAtMs: ").append(toIndentedString(createdAtMs)).append("\n"); + sb.append(" guardrailDecision: ").append(toIndentedString(guardrailDecision)).append("\n"); + sb.append(" history: ").append(toIndentedString(history)).append("\n"); + sb.append(" id: ").append(toIndentedString(id)).append("\n"); + sb.append(" issueType: ").append(toIndentedString(issueType)).append("\n"); + sb.append(" lastActionAtMs: ").append(toIndentedString(lastActionAtMs)).append("\n"); + sb.append(" metadata: ").append(toIndentedString(metadata)).append("\n"); + sb.append(" orgId: ").append(toIndentedString(orgId)).append("\n"); + sb.append(" plan: ").append(toIndentedString(plan)).append("\n"); + sb.append(" resourceArn: ").append(toIndentedString(resourceArn)).append("\n"); + sb.append(" status: ").append(toIndentedString(status)).append("\n"); + sb.append(" updatedAtMs: ").append(toIndentedString(updatedAtMs)).append("\n"); + sb.append(" additionalProperties: ") + .append(toIndentedString(additionalProperties)) + .append("\n"); + sb.append('}'); + return sb.toString(); + } + + /** + * Convert the given object to string with each line indented by 4 spaces (except the first line). + */ + private String toIndentedString(Object o) { + if (o == null) { + return "null"; + } + return o.toString().replace("\n", "\n "); + } +} diff --git a/src/main/java/com/datadog/api/client/v2/model/RemediationInvestigationStatus.java b/src/main/java/com/datadog/api/client/v2/model/RemediationInvestigationStatus.java new file mode 100644 index 00000000000..c10d35e8cdd --- /dev/null +++ b/src/main/java/com/datadog/api/client/v2/model/RemediationInvestigationStatus.java @@ -0,0 +1,67 @@ +/* + * 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. + */ + +package com.datadog.api.client.v2.model; + +import com.datadog.api.client.ModelEnum; +import com.fasterxml.jackson.annotation.JsonCreator; +import com.fasterxml.jackson.core.JsonGenerator; +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.SerializerProvider; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.StdSerializer; +import java.io.IOException; +import java.util.Arrays; +import java.util.HashSet; +import java.util.Set; + +/** Investigation status. */ +@JsonSerialize( + using = RemediationInvestigationStatus.RemediationInvestigationStatusSerializer.class) +public class RemediationInvestigationStatus extends ModelEnum { + + private static final Set allowedValues = + new HashSet( + Arrays.asList("open", "approval_required", "executing", "succeeded", "failed")); + + public static final RemediationInvestigationStatus OPEN = + new RemediationInvestigationStatus("open"); + public static final RemediationInvestigationStatus APPROVAL_REQUIRED = + new RemediationInvestigationStatus("approval_required"); + public static final RemediationInvestigationStatus EXECUTING = + new RemediationInvestigationStatus("executing"); + public static final RemediationInvestigationStatus SUCCEEDED = + new RemediationInvestigationStatus("succeeded"); + public static final RemediationInvestigationStatus FAILED = + new RemediationInvestigationStatus("failed"); + + RemediationInvestigationStatus(String value) { + super(value, allowedValues); + } + + public static class RemediationInvestigationStatusSerializer + extends StdSerializer { + public RemediationInvestigationStatusSerializer(Class t) { + super(t); + } + + public RemediationInvestigationStatusSerializer() { + this(null); + } + + @Override + public void serialize( + RemediationInvestigationStatus value, JsonGenerator jgen, SerializerProvider provider) + throws IOException, JsonProcessingException { + jgen.writeObject(value.value); + } + } + + @JsonCreator + public static RemediationInvestigationStatus fromValue(String value) { + return new RemediationInvestigationStatus(value); + } +} diff --git a/src/main/java/com/datadog/api/client/v2/model/RemediationLaunchType.java b/src/main/java/com/datadog/api/client/v2/model/RemediationLaunchType.java new file mode 100644 index 00000000000..202a1927beb --- /dev/null +++ b/src/main/java/com/datadog/api/client/v2/model/RemediationLaunchType.java @@ -0,0 +1,56 @@ +/* + * 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. + */ + +package com.datadog.api.client.v2.model; + +import com.datadog.api.client.ModelEnum; +import com.fasterxml.jackson.annotation.JsonCreator; +import com.fasterxml.jackson.core.JsonGenerator; +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.SerializerProvider; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.StdSerializer; +import java.io.IOException; +import java.util.Arrays; +import java.util.HashSet; +import java.util.Set; + +/** ECS launch type. */ +@JsonSerialize(using = RemediationLaunchType.RemediationLaunchTypeSerializer.class) +public class RemediationLaunchType extends ModelEnum { + + private static final Set allowedValues = + new HashSet(Arrays.asList("EC2", "FARGATE")); + + public static final RemediationLaunchType EC2 = new RemediationLaunchType("EC2"); + public static final RemediationLaunchType FARGATE = new RemediationLaunchType("FARGATE"); + + RemediationLaunchType(String value) { + super(value, allowedValues); + } + + public static class RemediationLaunchTypeSerializer extends StdSerializer { + public RemediationLaunchTypeSerializer(Class t) { + super(t); + } + + public RemediationLaunchTypeSerializer() { + this(null); + } + + @Override + public void serialize( + RemediationLaunchType value, JsonGenerator jgen, SerializerProvider provider) + throws IOException, JsonProcessingException { + jgen.writeObject(value.value); + } + } + + @JsonCreator + public static RemediationLaunchType fromValue(String value) { + return new RemediationLaunchType(value); + } +} diff --git a/src/main/java/com/datadog/api/client/v2/model/RemediationListInvestigationsResponse.java b/src/main/java/com/datadog/api/client/v2/model/RemediationListInvestigationsResponse.java new file mode 100644 index 00000000000..7e3701f66e7 --- /dev/null +++ b/src/main/java/com/datadog/api/client/v2/model/RemediationListInvestigationsResponse.java @@ -0,0 +1,182 @@ +/* + * 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. + */ + +package com.datadog.api.client.v2.model; + +import com.fasterxml.jackson.annotation.JsonAnyGetter; +import com.fasterxml.jackson.annotation.JsonAnySetter; +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Objects; + +/** Response payload for listing investigations. */ +@JsonPropertyOrder({ + RemediationListInvestigationsResponse.JSON_PROPERTY_INVESTIGATIONS, + RemediationListInvestigationsResponse.JSON_PROPERTY_NEXT_PAGE_TOKEN +}) +@jakarta.annotation.Generated( + value = "https://github.com/DataDog/datadog-api-client-java/blob/master/.generator") +public class RemediationListInvestigationsResponse { + @JsonIgnore public boolean unparsed = false; + public static final String JSON_PROPERTY_INVESTIGATIONS = "investigations"; + private List investigations = null; + + public static final String JSON_PROPERTY_NEXT_PAGE_TOKEN = "next_page_token"; + private String nextPageToken; + + public RemediationListInvestigationsResponse investigations( + List investigations) { + this.investigations = investigations; + for (RemediationInvestigation item : investigations) { + this.unparsed |= item.unparsed; + } + return this; + } + + public RemediationListInvestigationsResponse addInvestigationsItem( + RemediationInvestigation investigationsItem) { + if (this.investigations == null) { + this.investigations = new ArrayList<>(); + } + this.investigations.add(investigationsItem); + this.unparsed |= investigationsItem.unparsed; + return this; + } + + /** + * The matching investigations. + * + * @return investigations + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_INVESTIGATIONS) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public List getInvestigations() { + return investigations; + } + + public void setInvestigations(List investigations) { + this.investigations = investigations; + } + + public RemediationListInvestigationsResponse nextPageToken(String nextPageToken) { + this.nextPageToken = nextPageToken; + return this; + } + + /** + * Token to pass as page_token on the next call. Empty when there are no further pages. + * + * @return nextPageToken + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_NEXT_PAGE_TOKEN) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public String getNextPageToken() { + return nextPageToken; + } + + public void setNextPageToken(String nextPageToken) { + this.nextPageToken = nextPageToken; + } + + /** + * A container for additional, undeclared properties. This is a holder for any undeclared + * properties as specified with the 'additionalProperties' keyword in the OAS document. + */ + private Map additionalProperties; + + /** + * Set the additional (undeclared) property with the specified name and value. If the property + * does not already exist, create it otherwise replace it. + * + * @param key The arbitrary key to set + * @param value The associated value + * @return RemediationListInvestigationsResponse + */ + @JsonAnySetter + public RemediationListInvestigationsResponse putAdditionalProperty(String key, Object value) { + if (this.additionalProperties == null) { + this.additionalProperties = new HashMap(); + } + this.additionalProperties.put(key, value); + return this; + } + + /** + * Return the additional (undeclared) property. + * + * @return The additional properties + */ + @JsonAnyGetter + public Map getAdditionalProperties() { + return additionalProperties; + } + + /** + * Return the additional (undeclared) property with the specified name. + * + * @param key The arbitrary key to get + * @return The specific additional property for the given key + */ + public Object getAdditionalProperty(String key) { + if (this.additionalProperties == null) { + return null; + } + return this.additionalProperties.get(key); + } + + /** Return true if this RemediationListInvestigationsResponse object is equal to o. */ + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + RemediationListInvestigationsResponse remediationListInvestigationsResponse = + (RemediationListInvestigationsResponse) o; + return Objects.equals(this.investigations, remediationListInvestigationsResponse.investigations) + && Objects.equals(this.nextPageToken, remediationListInvestigationsResponse.nextPageToken) + && Objects.equals( + this.additionalProperties, remediationListInvestigationsResponse.additionalProperties); + } + + @Override + public int hashCode() { + return Objects.hash(investigations, nextPageToken, additionalProperties); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class RemediationListInvestigationsResponse {\n"); + sb.append(" investigations: ").append(toIndentedString(investigations)).append("\n"); + sb.append(" nextPageToken: ").append(toIndentedString(nextPageToken)).append("\n"); + sb.append(" additionalProperties: ") + .append(toIndentedString(additionalProperties)) + .append("\n"); + sb.append('}'); + return sb.toString(); + } + + /** + * Convert the given object to string with each line indented by 4 spaces (except the first line). + */ + private String toIndentedString(Object o) { + if (o == null) { + return "null"; + } + return o.toString().replace("\n", "\n "); + } +} diff --git a/src/main/java/com/datadog/api/client/v2/model/RemediationPlan.java b/src/main/java/com/datadog/api/client/v2/model/RemediationPlan.java new file mode 100644 index 00000000000..92dda55b2ab --- /dev/null +++ b/src/main/java/com/datadog/api/client/v2/model/RemediationPlan.java @@ -0,0 +1,376 @@ +/* + * 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. + */ + +package com.datadog.api.client.v2.model; + +import com.fasterxml.jackson.annotation.JsonAnyGetter; +import com.fasterxml.jackson.annotation.JsonAnySetter; +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Objects; + +/** The remediation plan proposed by the ECS remediation agent. */ +@JsonPropertyOrder({ + RemediationPlan.JSON_PROPERTY_CONFIDENCE, + RemediationPlan.JSON_PROPERTY_EVIDENCE, + RemediationPlan.JSON_PROPERTY_EXPLANATION, + RemediationPlan.JSON_PROPERTY_GUARDRAIL_DECISION, + RemediationPlan.JSON_PROPERTY_PLAN_SOURCE, + RemediationPlan.JSON_PROPERTY_PROPOSED_FIX, + RemediationPlan.JSON_PROPERTY_STATUS, + RemediationPlan.JSON_PROPERTY_STEPS +}) +@jakarta.annotation.Generated( + value = "https://github.com/DataDog/datadog-api-client-java/blob/master/.generator") +public class RemediationPlan { + @JsonIgnore public boolean unparsed = false; + public static final String JSON_PROPERTY_CONFIDENCE = "confidence"; + private RemediationConfidence confidence; + + public static final String JSON_PROPERTY_EVIDENCE = "evidence"; + private String evidence; + + public static final String JSON_PROPERTY_EXPLANATION = "explanation"; + private String explanation; + + public static final String JSON_PROPERTY_GUARDRAIL_DECISION = "guardrail_decision"; + private RemediationGuardrailDecision guardrailDecision; + + public static final String JSON_PROPERTY_PLAN_SOURCE = "plan_source"; + private RemediationPlanSource planSource; + + public static final String JSON_PROPERTY_PROPOSED_FIX = "proposed_fix"; + private List proposedFix = null; + + public static final String JSON_PROPERTY_STATUS = "status"; + private RemediationPlanStatus status; + + public static final String JSON_PROPERTY_STEPS = "steps"; + private List steps = null; + + public RemediationPlan confidence(RemediationConfidence confidence) { + this.confidence = confidence; + this.unparsed |= !confidence.isValid(); + return this; + } + + /** + * The agent's self-rated confidence in a plan. + * + * @return confidence + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_CONFIDENCE) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public RemediationConfidence getConfidence() { + return confidence; + } + + public void setConfidence(RemediationConfidence confidence) { + if (!confidence.isValid()) { + this.unparsed = true; + } + this.confidence = confidence; + } + + public RemediationPlan evidence(String evidence) { + this.evidence = evidence; + return this; + } + + /** + * Evidence supporting the diagnosis. Treat as user-provided content and escape before display. + * + * @return evidence + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_EVIDENCE) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public String getEvidence() { + return evidence; + } + + public void setEvidence(String evidence) { + this.evidence = evidence; + } + + public RemediationPlan explanation(String explanation) { + this.explanation = explanation; + return this; + } + + /** + * Human-readable summary of why the plan was proposed. Treat as user-provided content and escape + * before display. + * + * @return explanation + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_EXPLANATION) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public String getExplanation() { + return explanation; + } + + public void setExplanation(String explanation) { + this.explanation = explanation; + } + + public RemediationPlan guardrailDecision(RemediationGuardrailDecision guardrailDecision) { + this.guardrailDecision = guardrailDecision; + this.unparsed |= guardrailDecision.unparsed; + return this; + } + + /** + * The guardrail decision applied to a plan or investigation. + * + * @return guardrailDecision + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_GUARDRAIL_DECISION) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public RemediationGuardrailDecision getGuardrailDecision() { + return guardrailDecision; + } + + public void setGuardrailDecision(RemediationGuardrailDecision guardrailDecision) { + this.guardrailDecision = guardrailDecision; + } + + public RemediationPlan planSource(RemediationPlanSource planSource) { + this.planSource = planSource; + this.unparsed |= !planSource.isValid(); + return this; + } + + /** + * How the plan was produced. + * + * @return planSource + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_PLAN_SOURCE) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public RemediationPlanSource getPlanSource() { + return planSource; + } + + public void setPlanSource(RemediationPlanSource planSource) { + if (!planSource.isValid()) { + this.unparsed = true; + } + this.planSource = planSource; + } + + public RemediationPlan proposedFix(List proposedFix) { + this.proposedFix = proposedFix; + for (RemediationProposedFix item : proposedFix) { + this.unparsed |= item.unparsed; + } + return this; + } + + public RemediationPlan addProposedFixItem(RemediationProposedFix proposedFixItem) { + if (this.proposedFix == null) { + this.proposedFix = new ArrayList<>(); + } + this.proposedFix.add(proposedFixItem); + this.unparsed |= proposedFixItem.unparsed; + return this; + } + + /** + * Recommendation-oriented view of the candidate remediations, distinct from the + * execution-oriented steps. + * + * @return proposedFix + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_PROPOSED_FIX) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public List getProposedFix() { + return proposedFix; + } + + public void setProposedFix(List proposedFix) { + this.proposedFix = proposedFix; + } + + public RemediationPlan status(RemediationPlanStatus status) { + this.status = status; + this.unparsed |= !status.isValid(); + return this; + } + + /** + * Plan status. + * + * @return status + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_STATUS) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public RemediationPlanStatus getStatus() { + return status; + } + + public void setStatus(RemediationPlanStatus status) { + if (!status.isValid()) { + this.unparsed = true; + } + this.status = status; + } + + public RemediationPlan steps(List steps) { + this.steps = steps; + for (RemediationStep item : steps) { + this.unparsed |= item.unparsed; + } + return this; + } + + public RemediationPlan addStepsItem(RemediationStep stepsItem) { + if (this.steps == null) { + this.steps = new ArrayList<>(); + } + this.steps.add(stepsItem); + this.unparsed |= stepsItem.unparsed; + return this; + } + + /** + * Execution-oriented steps that make up the plan. + * + * @return steps + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_STEPS) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public List getSteps() { + return steps; + } + + public void setSteps(List steps) { + this.steps = steps; + } + + /** + * A container for additional, undeclared properties. This is a holder for any undeclared + * properties as specified with the 'additionalProperties' keyword in the OAS document. + */ + private Map additionalProperties; + + /** + * Set the additional (undeclared) property with the specified name and value. If the property + * does not already exist, create it otherwise replace it. + * + * @param key The arbitrary key to set + * @param value The associated value + * @return RemediationPlan + */ + @JsonAnySetter + public RemediationPlan putAdditionalProperty(String key, Object value) { + if (this.additionalProperties == null) { + this.additionalProperties = new HashMap(); + } + this.additionalProperties.put(key, value); + return this; + } + + /** + * Return the additional (undeclared) property. + * + * @return The additional properties + */ + @JsonAnyGetter + public Map getAdditionalProperties() { + return additionalProperties; + } + + /** + * Return the additional (undeclared) property with the specified name. + * + * @param key The arbitrary key to get + * @return The specific additional property for the given key + */ + public Object getAdditionalProperty(String key) { + if (this.additionalProperties == null) { + return null; + } + return this.additionalProperties.get(key); + } + + /** Return true if this RemediationPlan object is equal to o. */ + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + RemediationPlan remediationPlan = (RemediationPlan) o; + return Objects.equals(this.confidence, remediationPlan.confidence) + && Objects.equals(this.evidence, remediationPlan.evidence) + && Objects.equals(this.explanation, remediationPlan.explanation) + && Objects.equals(this.guardrailDecision, remediationPlan.guardrailDecision) + && Objects.equals(this.planSource, remediationPlan.planSource) + && Objects.equals(this.proposedFix, remediationPlan.proposedFix) + && Objects.equals(this.status, remediationPlan.status) + && Objects.equals(this.steps, remediationPlan.steps) + && Objects.equals(this.additionalProperties, remediationPlan.additionalProperties); + } + + @Override + public int hashCode() { + return Objects.hash( + confidence, + evidence, + explanation, + guardrailDecision, + planSource, + proposedFix, + status, + steps, + additionalProperties); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class RemediationPlan {\n"); + sb.append(" confidence: ").append(toIndentedString(confidence)).append("\n"); + sb.append(" evidence: ").append(toIndentedString(evidence)).append("\n"); + sb.append(" explanation: ").append(toIndentedString(explanation)).append("\n"); + sb.append(" guardrailDecision: ").append(toIndentedString(guardrailDecision)).append("\n"); + sb.append(" planSource: ").append(toIndentedString(planSource)).append("\n"); + sb.append(" proposedFix: ").append(toIndentedString(proposedFix)).append("\n"); + sb.append(" status: ").append(toIndentedString(status)).append("\n"); + sb.append(" steps: ").append(toIndentedString(steps)).append("\n"); + sb.append(" additionalProperties: ") + .append(toIndentedString(additionalProperties)) + .append("\n"); + sb.append('}'); + return sb.toString(); + } + + /** + * Convert the given object to string with each line indented by 4 spaces (except the first line). + */ + private String toIndentedString(Object o) { + if (o == null) { + return "null"; + } + return o.toString().replace("\n", "\n "); + } +} diff --git a/src/main/java/com/datadog/api/client/v2/model/RemediationPlanSource.java b/src/main/java/com/datadog/api/client/v2/model/RemediationPlanSource.java new file mode 100644 index 00000000000..13214b70187 --- /dev/null +++ b/src/main/java/com/datadog/api/client/v2/model/RemediationPlanSource.java @@ -0,0 +1,57 @@ +/* + * 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. + */ + +package com.datadog.api.client.v2.model; + +import com.datadog.api.client.ModelEnum; +import com.fasterxml.jackson.annotation.JsonCreator; +import com.fasterxml.jackson.core.JsonGenerator; +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.SerializerProvider; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.StdSerializer; +import java.io.IOException; +import java.util.Arrays; +import java.util.HashSet; +import java.util.Set; + +/** How the plan was produced. */ +@JsonSerialize(using = RemediationPlanSource.RemediationPlanSourceSerializer.class) +public class RemediationPlanSource extends ModelEnum { + + private static final Set allowedValues = + new HashSet(Arrays.asList("deterministic", "ai")); + + public static final RemediationPlanSource DETERMINISTIC = + new RemediationPlanSource("deterministic"); + public static final RemediationPlanSource AI = new RemediationPlanSource("ai"); + + RemediationPlanSource(String value) { + super(value, allowedValues); + } + + public static class RemediationPlanSourceSerializer extends StdSerializer { + public RemediationPlanSourceSerializer(Class t) { + super(t); + } + + public RemediationPlanSourceSerializer() { + this(null); + } + + @Override + public void serialize( + RemediationPlanSource value, JsonGenerator jgen, SerializerProvider provider) + throws IOException, JsonProcessingException { + jgen.writeObject(value.value); + } + } + + @JsonCreator + public static RemediationPlanSource fromValue(String value) { + return new RemediationPlanSource(value); + } +} diff --git a/src/main/java/com/datadog/api/client/v2/model/RemediationPlanStatus.java b/src/main/java/com/datadog/api/client/v2/model/RemediationPlanStatus.java new file mode 100644 index 00000000000..c2467ab7f37 --- /dev/null +++ b/src/main/java/com/datadog/api/client/v2/model/RemediationPlanStatus.java @@ -0,0 +1,58 @@ +/* + * 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. + */ + +package com.datadog.api.client.v2.model; + +import com.datadog.api.client.ModelEnum; +import com.fasterxml.jackson.annotation.JsonCreator; +import com.fasterxml.jackson.core.JsonGenerator; +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.SerializerProvider; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.StdSerializer; +import java.io.IOException; +import java.util.Arrays; +import java.util.HashSet; +import java.util.Set; + +/** Plan status. */ +@JsonSerialize(using = RemediationPlanStatus.RemediationPlanStatusSerializer.class) +public class RemediationPlanStatus extends ModelEnum { + + private static final Set allowedValues = + new HashSet(Arrays.asList("pending", "in_progress", "completed", "failed")); + + public static final RemediationPlanStatus PENDING = new RemediationPlanStatus("pending"); + public static final RemediationPlanStatus IN_PROGRESS = new RemediationPlanStatus("in_progress"); + public static final RemediationPlanStatus COMPLETED = new RemediationPlanStatus("completed"); + public static final RemediationPlanStatus FAILED = new RemediationPlanStatus("failed"); + + RemediationPlanStatus(String value) { + super(value, allowedValues); + } + + public static class RemediationPlanStatusSerializer extends StdSerializer { + public RemediationPlanStatusSerializer(Class t) { + super(t); + } + + public RemediationPlanStatusSerializer() { + this(null); + } + + @Override + public void serialize( + RemediationPlanStatus value, JsonGenerator jgen, SerializerProvider provider) + throws IOException, JsonProcessingException { + jgen.writeObject(value.value); + } + } + + @JsonCreator + public static RemediationPlanStatus fromValue(String value) { + return new RemediationPlanStatus(value); + } +} diff --git a/src/main/java/com/datadog/api/client/v2/model/RemediationProblemContainer.java b/src/main/java/com/datadog/api/client/v2/model/RemediationProblemContainer.java new file mode 100644 index 00000000000..46906687c39 --- /dev/null +++ b/src/main/java/com/datadog/api/client/v2/model/RemediationProblemContainer.java @@ -0,0 +1,336 @@ +/* + * 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. + */ + +package com.datadog.api.client.v2.model; + +import com.fasterxml.jackson.annotation.JsonAnyGetter; +import com.fasterxml.jackson.annotation.JsonAnySetter; +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; +import java.util.HashMap; +import java.util.Map; +import java.util.Objects; + +/** A container within a problematic task that is exhibiting issues. */ +@JsonPropertyOrder({ + RemediationProblemContainer.JSON_PROPERTY_CPU_LIMIT, + RemediationProblemContainer.JSON_PROPERTY_EXIT_CODE, + RemediationProblemContainer.JSON_PROPERTY_HEALTH_STATUS, + RemediationProblemContainer.JSON_PROPERTY_IMAGE, + RemediationProblemContainer.JSON_PROPERTY_LAST_STATUS, + RemediationProblemContainer.JSON_PROPERTY_MEMORY_LIMIT_MIB, + RemediationProblemContainer.JSON_PROPERTY_NAME, + RemediationProblemContainer.JSON_PROPERTY_REASON +}) +@jakarta.annotation.Generated( + value = "https://github.com/DataDog/datadog-api-client-java/blob/master/.generator") +public class RemediationProblemContainer { + @JsonIgnore public boolean unparsed = false; + public static final String JSON_PROPERTY_CPU_LIMIT = "cpu_limit"; + private Long cpuLimit; + + public static final String JSON_PROPERTY_EXIT_CODE = "exit_code"; + private Integer exitCode; + + public static final String JSON_PROPERTY_HEALTH_STATUS = "health_status"; + private String healthStatus; + + public static final String JSON_PROPERTY_IMAGE = "image"; + private String image; + + public static final String JSON_PROPERTY_LAST_STATUS = "last_status"; + private String lastStatus; + + public static final String JSON_PROPERTY_MEMORY_LIMIT_MIB = "memory_limit_mib"; + private Long memoryLimitMib; + + public static final String JSON_PROPERTY_NAME = "name"; + private String name; + + public static final String JSON_PROPERTY_REASON = "reason"; + private String reason; + + public RemediationProblemContainer cpuLimit(Long cpuLimit) { + this.cpuLimit = cpuLimit; + return this; + } + + /** + * CPU limit. + * + * @return cpuLimit + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_CPU_LIMIT) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public Long getCpuLimit() { + return cpuLimit; + } + + public void setCpuLimit(Long cpuLimit) { + this.cpuLimit = cpuLimit; + } + + public RemediationProblemContainer exitCode(Integer exitCode) { + this.exitCode = exitCode; + return this; + } + + /** + * Exit code if the container stopped. maximum: 255 + * + * @return exitCode + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_EXIT_CODE) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public Integer getExitCode() { + return exitCode; + } + + public void setExitCode(Integer exitCode) { + this.exitCode = exitCode; + } + + public RemediationProblemContainer healthStatus(String healthStatus) { + this.healthStatus = healthStatus; + return this; + } + + /** + * Container health status. + * + * @return healthStatus + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_HEALTH_STATUS) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public String getHealthStatus() { + return healthStatus; + } + + public void setHealthStatus(String healthStatus) { + this.healthStatus = healthStatus; + } + + public RemediationProblemContainer image(String image) { + this.image = image; + return this; + } + + /** + * Docker image URI. + * + * @return image + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_IMAGE) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public String getImage() { + return image; + } + + public void setImage(String image) { + this.image = image; + } + + public RemediationProblemContainer lastStatus(String lastStatus) { + this.lastStatus = lastStatus; + return this; + } + + /** + * Container status. + * + * @return lastStatus + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_LAST_STATUS) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public String getLastStatus() { + return lastStatus; + } + + public void setLastStatus(String lastStatus) { + this.lastStatus = lastStatus; + } + + public RemediationProblemContainer memoryLimitMib(Long memoryLimitMib) { + this.memoryLimitMib = memoryLimitMib; + return this; + } + + /** + * Memory limit in MiB. + * + * @return memoryLimitMib + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_MEMORY_LIMIT_MIB) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public Long getMemoryLimitMib() { + return memoryLimitMib; + } + + public void setMemoryLimitMib(Long memoryLimitMib) { + this.memoryLimitMib = memoryLimitMib; + } + + public RemediationProblemContainer name(String name) { + this.name = name; + return this; + } + + /** + * Container name from the task definition. + * + * @return name + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_NAME) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public RemediationProblemContainer reason(String reason) { + this.reason = reason; + return this; + } + + /** + * Stop reason. + * + * @return reason + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_REASON) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public String getReason() { + return reason; + } + + public void setReason(String reason) { + this.reason = reason; + } + + /** + * A container for additional, undeclared properties. This is a holder for any undeclared + * properties as specified with the 'additionalProperties' keyword in the OAS document. + */ + private Map additionalProperties; + + /** + * Set the additional (undeclared) property with the specified name and value. If the property + * does not already exist, create it otherwise replace it. + * + * @param key The arbitrary key to set + * @param value The associated value + * @return RemediationProblemContainer + */ + @JsonAnySetter + public RemediationProblemContainer putAdditionalProperty(String key, Object value) { + if (this.additionalProperties == null) { + this.additionalProperties = new HashMap(); + } + this.additionalProperties.put(key, value); + return this; + } + + /** + * Return the additional (undeclared) property. + * + * @return The additional properties + */ + @JsonAnyGetter + public Map getAdditionalProperties() { + return additionalProperties; + } + + /** + * Return the additional (undeclared) property with the specified name. + * + * @param key The arbitrary key to get + * @return The specific additional property for the given key + */ + public Object getAdditionalProperty(String key) { + if (this.additionalProperties == null) { + return null; + } + return this.additionalProperties.get(key); + } + + /** Return true if this RemediationProblemContainer object is equal to o. */ + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + RemediationProblemContainer remediationProblemContainer = (RemediationProblemContainer) o; + return Objects.equals(this.cpuLimit, remediationProblemContainer.cpuLimit) + && Objects.equals(this.exitCode, remediationProblemContainer.exitCode) + && Objects.equals(this.healthStatus, remediationProblemContainer.healthStatus) + && Objects.equals(this.image, remediationProblemContainer.image) + && Objects.equals(this.lastStatus, remediationProblemContainer.lastStatus) + && Objects.equals(this.memoryLimitMib, remediationProblemContainer.memoryLimitMib) + && Objects.equals(this.name, remediationProblemContainer.name) + && Objects.equals(this.reason, remediationProblemContainer.reason) + && Objects.equals( + this.additionalProperties, remediationProblemContainer.additionalProperties); + } + + @Override + public int hashCode() { + return Objects.hash( + cpuLimit, + exitCode, + healthStatus, + image, + lastStatus, + memoryLimitMib, + name, + reason, + additionalProperties); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class RemediationProblemContainer {\n"); + sb.append(" cpuLimit: ").append(toIndentedString(cpuLimit)).append("\n"); + sb.append(" exitCode: ").append(toIndentedString(exitCode)).append("\n"); + sb.append(" healthStatus: ").append(toIndentedString(healthStatus)).append("\n"); + sb.append(" image: ").append(toIndentedString(image)).append("\n"); + sb.append(" lastStatus: ").append(toIndentedString(lastStatus)).append("\n"); + sb.append(" memoryLimitMib: ").append(toIndentedString(memoryLimitMib)).append("\n"); + sb.append(" name: ").append(toIndentedString(name)).append("\n"); + sb.append(" reason: ").append(toIndentedString(reason)).append("\n"); + sb.append(" additionalProperties: ") + .append(toIndentedString(additionalProperties)) + .append("\n"); + sb.append('}'); + return sb.toString(); + } + + /** + * Convert the given object to string with each line indented by 4 spaces (except the first line). + */ + private String toIndentedString(Object o) { + if (o == null) { + return "null"; + } + return o.toString().replace("\n", "\n "); + } +} diff --git a/src/main/java/com/datadog/api/client/v2/model/RemediationProblemTask.java b/src/main/java/com/datadog/api/client/v2/model/RemediationProblemTask.java new file mode 100644 index 00000000000..89bfcedbf12 --- /dev/null +++ b/src/main/java/com/datadog/api/client/v2/model/RemediationProblemTask.java @@ -0,0 +1,643 @@ +/* + * 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. + */ + +package com.datadog.api.client.v2.model; + +import com.fasterxml.jackson.annotation.JsonAnyGetter; +import com.fasterxml.jackson.annotation.JsonAnySetter; +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Objects; + +/** An individual ECS task in a problematic state. */ +@JsonPropertyOrder({ + RemediationProblemTask.JSON_PROPERTY_AVAILABILITY_ZONE, + RemediationProblemTask.JSON_PROPERTY_CONTAINER_INSTANCE_ARN, + RemediationProblemTask.JSON_PROPERTY_CONTAINERS, + RemediationProblemTask.JSON_PROPERTY_CPU_UNITS, + RemediationProblemTask.JSON_PROPERTY_DESIRED_STATUS, + RemediationProblemTask.JSON_PROPERTY_EXECUTION_ROLE_ARN, + RemediationProblemTask.JSON_PROPERTY_HEALTH_STATUS, + RemediationProblemTask.JSON_PROPERTY_ISSUE_START_TIME, + RemediationProblemTask.JSON_PROPERTY_ISSUE_TYPE, + RemediationProblemTask.JSON_PROPERTY_LAST_STATUS, + RemediationProblemTask.JSON_PROPERTY_LAUNCH_TYPE, + RemediationProblemTask.JSON_PROPERTY_MEMORY_MIB, + RemediationProblemTask.JSON_PROPERTY_STOP_CODE, + RemediationProblemTask.JSON_PROPERTY_STOPPED_REASON, + RemediationProblemTask.JSON_PROPERTY_TAGS, + RemediationProblemTask.JSON_PROPERTY_TASK_ARN, + RemediationProblemTask.JSON_PROPERTY_TASK_DEFINITION_ARN, + RemediationProblemTask.JSON_PROPERTY_TASK_ROLE_ARN +}) +@jakarta.annotation.Generated( + value = "https://github.com/DataDog/datadog-api-client-java/blob/master/.generator") +public class RemediationProblemTask { + @JsonIgnore public boolean unparsed = false; + public static final String JSON_PROPERTY_AVAILABILITY_ZONE = "availability_zone"; + private String availabilityZone; + + public static final String JSON_PROPERTY_CONTAINER_INSTANCE_ARN = "container_instance_arn"; + private String containerInstanceArn; + + public static final String JSON_PROPERTY_CONTAINERS = "containers"; + private List containers = null; + + public static final String JSON_PROPERTY_CPU_UNITS = "cpu_units"; + private String cpuUnits; + + public static final String JSON_PROPERTY_DESIRED_STATUS = "desired_status"; + private String desiredStatus; + + public static final String JSON_PROPERTY_EXECUTION_ROLE_ARN = "execution_role_arn"; + private String executionRoleArn; + + public static final String JSON_PROPERTY_HEALTH_STATUS = "health_status"; + private String healthStatus; + + public static final String JSON_PROPERTY_ISSUE_START_TIME = "issue_start_time"; + private String issueStartTime; + + public static final String JSON_PROPERTY_ISSUE_TYPE = "issue_type"; + private String issueType; + + public static final String JSON_PROPERTY_LAST_STATUS = "last_status"; + private String lastStatus; + + public static final String JSON_PROPERTY_LAUNCH_TYPE = "launch_type"; + private RemediationLaunchType launchType; + + public static final String JSON_PROPERTY_MEMORY_MIB = "memory_mib"; + private String memoryMib; + + public static final String JSON_PROPERTY_STOP_CODE = "stop_code"; + private String stopCode; + + public static final String JSON_PROPERTY_STOPPED_REASON = "stopped_reason"; + private String stoppedReason; + + public static final String JSON_PROPERTY_TAGS = "tags"; + private List tags = null; + + public static final String JSON_PROPERTY_TASK_ARN = "task_arn"; + private String taskArn; + + public static final String JSON_PROPERTY_TASK_DEFINITION_ARN = "task_definition_arn"; + private String taskDefinitionArn; + + public static final String JSON_PROPERTY_TASK_ROLE_ARN = "task_role_arn"; + private String taskRoleArn; + + public RemediationProblemTask availabilityZone(String availabilityZone) { + this.availabilityZone = availabilityZone; + return this; + } + + /** + * Availability zone where the task is running. + * + * @return availabilityZone + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_AVAILABILITY_ZONE) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public String getAvailabilityZone() { + return availabilityZone; + } + + public void setAvailabilityZone(String availabilityZone) { + this.availabilityZone = availabilityZone; + } + + public RemediationProblemTask containerInstanceArn(String containerInstanceArn) { + this.containerInstanceArn = containerInstanceArn; + return this; + } + + /** + * Container instance ARN (EC2 launch type only). + * + * @return containerInstanceArn + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_CONTAINER_INSTANCE_ARN) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public String getContainerInstanceArn() { + return containerInstanceArn; + } + + public void setContainerInstanceArn(String containerInstanceArn) { + this.containerInstanceArn = containerInstanceArn; + } + + public RemediationProblemTask containers(List containers) { + this.containers = containers; + for (RemediationProblemContainer item : containers) { + this.unparsed |= item.unparsed; + } + return this; + } + + public RemediationProblemTask addContainersItem(RemediationProblemContainer containersItem) { + if (this.containers == null) { + this.containers = new ArrayList<>(); + } + this.containers.add(containersItem); + this.unparsed |= containersItem.unparsed; + return this; + } + + /** + * Problematic containers within the task. + * + * @return containers + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_CONTAINERS) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public List getContainers() { + return containers; + } + + public void setContainers(List containers) { + this.containers = containers; + } + + public RemediationProblemTask cpuUnits(String cpuUnits) { + this.cpuUnits = cpuUnits; + return this; + } + + /** + * CPU units allocated to the task (64-bit integer encoded as a string). + * + * @return cpuUnits + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_CPU_UNITS) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public String getCpuUnits() { + return cpuUnits; + } + + public void setCpuUnits(String cpuUnits) { + this.cpuUnits = cpuUnits; + } + + public RemediationProblemTask desiredStatus(String desiredStatus) { + this.desiredStatus = desiredStatus; + return this; + } + + /** + * Desired task status. + * + * @return desiredStatus + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_DESIRED_STATUS) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public String getDesiredStatus() { + return desiredStatus; + } + + public void setDesiredStatus(String desiredStatus) { + this.desiredStatus = desiredStatus; + } + + public RemediationProblemTask executionRoleArn(String executionRoleArn) { + this.executionRoleArn = executionRoleArn; + return this; + } + + /** + * IAM role used by ECS to pull images and fetch secrets. + * + * @return executionRoleArn + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_EXECUTION_ROLE_ARN) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public String getExecutionRoleArn() { + return executionRoleArn; + } + + public void setExecutionRoleArn(String executionRoleArn) { + this.executionRoleArn = executionRoleArn; + } + + public RemediationProblemTask healthStatus(String healthStatus) { + this.healthStatus = healthStatus; + return this; + } + + /** + * Task-level health status. + * + * @return healthStatus + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_HEALTH_STATUS) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public String getHealthStatus() { + return healthStatus; + } + + public void setHealthStatus(String healthStatus) { + this.healthStatus = healthStatus; + } + + public RemediationProblemTask issueStartTime(String issueStartTime) { + this.issueStartTime = issueStartTime; + return this; + } + + /** + * When this task's issue started, epoch milliseconds (64-bit integer encoded as a string). + * + * @return issueStartTime + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_ISSUE_START_TIME) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public String getIssueStartTime() { + return issueStartTime; + } + + public void setIssueStartTime(String issueStartTime) { + this.issueStartTime = issueStartTime; + } + + public RemediationProblemTask issueType(String issueType) { + this.issueType = issueType; + return this; + } + + /** + * Issue type for this specific task. + * + * @return issueType + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_ISSUE_TYPE) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public String getIssueType() { + return issueType; + } + + public void setIssueType(String issueType) { + this.issueType = issueType; + } + + public RemediationProblemTask lastStatus(String lastStatus) { + this.lastStatus = lastStatus; + return this; + } + + /** + * Current task status. + * + * @return lastStatus + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_LAST_STATUS) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public String getLastStatus() { + return lastStatus; + } + + public void setLastStatus(String lastStatus) { + this.lastStatus = lastStatus; + } + + public RemediationProblemTask launchType(RemediationLaunchType launchType) { + this.launchType = launchType; + this.unparsed |= !launchType.isValid(); + return this; + } + + /** + * ECS launch type. + * + * @return launchType + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_LAUNCH_TYPE) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public RemediationLaunchType getLaunchType() { + return launchType; + } + + public void setLaunchType(RemediationLaunchType launchType) { + if (!launchType.isValid()) { + this.unparsed = true; + } + this.launchType = launchType; + } + + public RemediationProblemTask memoryMib(String memoryMib) { + this.memoryMib = memoryMib; + return this; + } + + /** + * Memory in MiB allocated to the task (64-bit integer encoded as a string). + * + * @return memoryMib + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_MEMORY_MIB) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public String getMemoryMib() { + return memoryMib; + } + + public void setMemoryMib(String memoryMib) { + this.memoryMib = memoryMib; + } + + public RemediationProblemTask stopCode(String stopCode) { + this.stopCode = stopCode; + return this; + } + + /** + * Stop code if the task was stopped. + * + * @return stopCode + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_STOP_CODE) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public String getStopCode() { + return stopCode; + } + + public void setStopCode(String stopCode) { + this.stopCode = stopCode; + } + + public RemediationProblemTask stoppedReason(String stoppedReason) { + this.stoppedReason = stoppedReason; + return this; + } + + /** + * Stop reason if the task was stopped. + * + * @return stoppedReason + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_STOPPED_REASON) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public String getStoppedReason() { + return stoppedReason; + } + + public void setStoppedReason(String stoppedReason) { + this.stoppedReason = stoppedReason; + } + + public RemediationProblemTask tags(List tags) { + this.tags = tags; + return this; + } + + public RemediationProblemTask addTagsItem(String tagsItem) { + if (this.tags == null) { + this.tags = new ArrayList<>(); + } + this.tags.add(tagsItem); + return this; + } + + /** + * Task-level tags. + * + * @return tags + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_TAGS) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public List getTags() { + return tags; + } + + public void setTags(List tags) { + this.tags = tags; + } + + public RemediationProblemTask taskArn(String taskArn) { + this.taskArn = taskArn; + return this; + } + + /** + * Full task ARN. + * + * @return taskArn + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_TASK_ARN) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public String getTaskArn() { + return taskArn; + } + + public void setTaskArn(String taskArn) { + this.taskArn = taskArn; + } + + public RemediationProblemTask taskDefinitionArn(String taskDefinitionArn) { + this.taskDefinitionArn = taskDefinitionArn; + return this; + } + + /** + * Task definition ARN with revision. + * + * @return taskDefinitionArn + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_TASK_DEFINITION_ARN) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public String getTaskDefinitionArn() { + return taskDefinitionArn; + } + + public void setTaskDefinitionArn(String taskDefinitionArn) { + this.taskDefinitionArn = taskDefinitionArn; + } + + public RemediationProblemTask taskRoleArn(String taskRoleArn) { + this.taskRoleArn = taskRoleArn; + return this; + } + + /** + * IAM role used by the task at runtime. + * + * @return taskRoleArn + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_TASK_ROLE_ARN) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public String getTaskRoleArn() { + return taskRoleArn; + } + + public void setTaskRoleArn(String taskRoleArn) { + this.taskRoleArn = taskRoleArn; + } + + /** + * A container for additional, undeclared properties. This is a holder for any undeclared + * properties as specified with the 'additionalProperties' keyword in the OAS document. + */ + private Map additionalProperties; + + /** + * Set the additional (undeclared) property with the specified name and value. If the property + * does not already exist, create it otherwise replace it. + * + * @param key The arbitrary key to set + * @param value The associated value + * @return RemediationProblemTask + */ + @JsonAnySetter + public RemediationProblemTask putAdditionalProperty(String key, Object value) { + if (this.additionalProperties == null) { + this.additionalProperties = new HashMap(); + } + this.additionalProperties.put(key, value); + return this; + } + + /** + * Return the additional (undeclared) property. + * + * @return The additional properties + */ + @JsonAnyGetter + public Map getAdditionalProperties() { + return additionalProperties; + } + + /** + * Return the additional (undeclared) property with the specified name. + * + * @param key The arbitrary key to get + * @return The specific additional property for the given key + */ + public Object getAdditionalProperty(String key) { + if (this.additionalProperties == null) { + return null; + } + return this.additionalProperties.get(key); + } + + /** Return true if this RemediationProblemTask object is equal to o. */ + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + RemediationProblemTask remediationProblemTask = (RemediationProblemTask) o; + return Objects.equals(this.availabilityZone, remediationProblemTask.availabilityZone) + && Objects.equals(this.containerInstanceArn, remediationProblemTask.containerInstanceArn) + && Objects.equals(this.containers, remediationProblemTask.containers) + && Objects.equals(this.cpuUnits, remediationProblemTask.cpuUnits) + && Objects.equals(this.desiredStatus, remediationProblemTask.desiredStatus) + && Objects.equals(this.executionRoleArn, remediationProblemTask.executionRoleArn) + && Objects.equals(this.healthStatus, remediationProblemTask.healthStatus) + && Objects.equals(this.issueStartTime, remediationProblemTask.issueStartTime) + && Objects.equals(this.issueType, remediationProblemTask.issueType) + && Objects.equals(this.lastStatus, remediationProblemTask.lastStatus) + && Objects.equals(this.launchType, remediationProblemTask.launchType) + && Objects.equals(this.memoryMib, remediationProblemTask.memoryMib) + && Objects.equals(this.stopCode, remediationProblemTask.stopCode) + && Objects.equals(this.stoppedReason, remediationProblemTask.stoppedReason) + && Objects.equals(this.tags, remediationProblemTask.tags) + && Objects.equals(this.taskArn, remediationProblemTask.taskArn) + && Objects.equals(this.taskDefinitionArn, remediationProblemTask.taskDefinitionArn) + && Objects.equals(this.taskRoleArn, remediationProblemTask.taskRoleArn) + && Objects.equals(this.additionalProperties, remediationProblemTask.additionalProperties); + } + + @Override + public int hashCode() { + return Objects.hash( + availabilityZone, + containerInstanceArn, + containers, + cpuUnits, + desiredStatus, + executionRoleArn, + healthStatus, + issueStartTime, + issueType, + lastStatus, + launchType, + memoryMib, + stopCode, + stoppedReason, + tags, + taskArn, + taskDefinitionArn, + taskRoleArn, + additionalProperties); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class RemediationProblemTask {\n"); + sb.append(" availabilityZone: ").append(toIndentedString(availabilityZone)).append("\n"); + sb.append(" containerInstanceArn: ") + .append(toIndentedString(containerInstanceArn)) + .append("\n"); + sb.append(" containers: ").append(toIndentedString(containers)).append("\n"); + sb.append(" cpuUnits: ").append(toIndentedString(cpuUnits)).append("\n"); + sb.append(" desiredStatus: ").append(toIndentedString(desiredStatus)).append("\n"); + sb.append(" executionRoleArn: ").append(toIndentedString(executionRoleArn)).append("\n"); + sb.append(" healthStatus: ").append(toIndentedString(healthStatus)).append("\n"); + sb.append(" issueStartTime: ").append(toIndentedString(issueStartTime)).append("\n"); + sb.append(" issueType: ").append(toIndentedString(issueType)).append("\n"); + sb.append(" lastStatus: ").append(toIndentedString(lastStatus)).append("\n"); + sb.append(" launchType: ").append(toIndentedString(launchType)).append("\n"); + sb.append(" memoryMib: ").append(toIndentedString(memoryMib)).append("\n"); + sb.append(" stopCode: ").append(toIndentedString(stopCode)).append("\n"); + sb.append(" stoppedReason: ").append(toIndentedString(stoppedReason)).append("\n"); + sb.append(" tags: ").append(toIndentedString(tags)).append("\n"); + sb.append(" taskArn: ").append(toIndentedString(taskArn)).append("\n"); + sb.append(" taskDefinitionArn: ").append(toIndentedString(taskDefinitionArn)).append("\n"); + sb.append(" taskRoleArn: ").append(toIndentedString(taskRoleArn)).append("\n"); + sb.append(" additionalProperties: ") + .append(toIndentedString(additionalProperties)) + .append("\n"); + sb.append('}'); + return sb.toString(); + } + + /** + * Convert the given object to string with each line indented by 4 spaces (except the first line). + */ + private String toIndentedString(Object o) { + if (o == null) { + return "null"; + } + return o.toString().replace("\n", "\n "); + } +} diff --git a/src/main/java/com/datadog/api/client/v2/model/RemediationProposedFix.java b/src/main/java/com/datadog/api/client/v2/model/RemediationProposedFix.java new file mode 100644 index 00000000000..a8980d42091 --- /dev/null +++ b/src/main/java/com/datadog/api/client/v2/model/RemediationProposedFix.java @@ -0,0 +1,223 @@ +/* + * 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. + */ + +package com.datadog.api.client.v2.model; + +import com.fasterxml.jackson.annotation.JsonAnyGetter; +import com.fasterxml.jackson.annotation.JsonAnySetter; +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; +import java.util.HashMap; +import java.util.Map; +import java.util.Objects; + +/** A recommendation-oriented summary of a candidate remediation. */ +@JsonPropertyOrder({ + RemediationProposedFix.JSON_PROPERTY_DESCRIPTION, + RemediationProposedFix.JSON_PROPERTY_REVERSIBLE, + RemediationProposedFix.JSON_PROPERTY_RISK, + RemediationProposedFix.JSON_PROPERTY_TITLE +}) +@jakarta.annotation.Generated( + value = "https://github.com/DataDog/datadog-api-client-java/blob/master/.generator") +public class RemediationProposedFix { + @JsonIgnore public boolean unparsed = false; + public static final String JSON_PROPERTY_DESCRIPTION = "description"; + private String description; + + public static final String JSON_PROPERTY_REVERSIBLE = "reversible"; + private Boolean reversible; + + public static final String JSON_PROPERTY_RISK = "risk"; + private RemediationRiskLevel risk; + + public static final String JSON_PROPERTY_TITLE = "title"; + private String title; + + public RemediationProposedFix description(String description) { + this.description = description; + return this; + } + + /** + * Explanation of the proposed change and why it resolves the root cause. Treat as user-provided + * content and escape before display. + * + * @return description + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_DESCRIPTION) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public RemediationProposedFix reversible(Boolean reversible) { + this.reversible = reversible; + return this; + } + + /** + * Whether the proposed fix can be reversed after execution. + * + * @return reversible + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_REVERSIBLE) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public Boolean getReversible() { + return reversible; + } + + public void setReversible(Boolean reversible) { + this.reversible = reversible; + } + + public RemediationProposedFix risk(RemediationRiskLevel risk) { + this.risk = risk; + this.unparsed |= !risk.isValid(); + return this; + } + + /** + * Estimated risk of a remediation step or proposed fix. + * + * @return risk + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_RISK) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public RemediationRiskLevel getRisk() { + return risk; + } + + public void setRisk(RemediationRiskLevel risk) { + if (!risk.isValid()) { + this.unparsed = true; + } + this.risk = risk; + } + + public RemediationProposedFix title(String title) { + this.title = title; + return this; + } + + /** + * Short title for the proposed fix. + * + * @return title + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_TITLE) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public String getTitle() { + return title; + } + + public void setTitle(String title) { + this.title = title; + } + + /** + * A container for additional, undeclared properties. This is a holder for any undeclared + * properties as specified with the 'additionalProperties' keyword in the OAS document. + */ + private Map additionalProperties; + + /** + * Set the additional (undeclared) property with the specified name and value. If the property + * does not already exist, create it otherwise replace it. + * + * @param key The arbitrary key to set + * @param value The associated value + * @return RemediationProposedFix + */ + @JsonAnySetter + public RemediationProposedFix putAdditionalProperty(String key, Object value) { + if (this.additionalProperties == null) { + this.additionalProperties = new HashMap(); + } + this.additionalProperties.put(key, value); + return this; + } + + /** + * Return the additional (undeclared) property. + * + * @return The additional properties + */ + @JsonAnyGetter + public Map getAdditionalProperties() { + return additionalProperties; + } + + /** + * Return the additional (undeclared) property with the specified name. + * + * @param key The arbitrary key to get + * @return The specific additional property for the given key + */ + public Object getAdditionalProperty(String key) { + if (this.additionalProperties == null) { + return null; + } + return this.additionalProperties.get(key); + } + + /** Return true if this RemediationProposedFix object is equal to o. */ + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + RemediationProposedFix remediationProposedFix = (RemediationProposedFix) o; + return Objects.equals(this.description, remediationProposedFix.description) + && Objects.equals(this.reversible, remediationProposedFix.reversible) + && Objects.equals(this.risk, remediationProposedFix.risk) + && Objects.equals(this.title, remediationProposedFix.title) + && Objects.equals(this.additionalProperties, remediationProposedFix.additionalProperties); + } + + @Override + public int hashCode() { + return Objects.hash(description, reversible, risk, title, additionalProperties); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class RemediationProposedFix {\n"); + sb.append(" description: ").append(toIndentedString(description)).append("\n"); + sb.append(" reversible: ").append(toIndentedString(reversible)).append("\n"); + sb.append(" risk: ").append(toIndentedString(risk)).append("\n"); + sb.append(" title: ").append(toIndentedString(title)).append("\n"); + sb.append(" additionalProperties: ") + .append(toIndentedString(additionalProperties)) + .append("\n"); + sb.append('}'); + return sb.toString(); + } + + /** + * Convert the given object to string with each line indented by 4 spaces (except the first line). + */ + private String toIndentedString(Object o) { + if (o == null) { + return "null"; + } + return o.toString().replace("\n", "\n "); + } +} diff --git a/src/main/java/com/datadog/api/client/v2/model/RemediationPullRequestStatus.java b/src/main/java/com/datadog/api/client/v2/model/RemediationPullRequestStatus.java new file mode 100644 index 00000000000..a7fe74ada88 --- /dev/null +++ b/src/main/java/com/datadog/api/client/v2/model/RemediationPullRequestStatus.java @@ -0,0 +1,60 @@ +/* + * 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. + */ + +package com.datadog.api.client.v2.model; + +import com.datadog.api.client.ModelEnum; +import com.fasterxml.jackson.annotation.JsonCreator; +import com.fasterxml.jackson.core.JsonGenerator; +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.SerializerProvider; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.StdSerializer; +import java.io.IOException; +import java.util.Arrays; +import java.util.HashSet; +import java.util.Set; + +/** Pull request status for a linked code session. */ +@JsonSerialize(using = RemediationPullRequestStatus.RemediationPullRequestStatusSerializer.class) +public class RemediationPullRequestStatus extends ModelEnum { + + private static final Set allowedValues = + new HashSet(Arrays.asList("open", "closed", "merged")); + + public static final RemediationPullRequestStatus OPEN = new RemediationPullRequestStatus("open"); + public static final RemediationPullRequestStatus CLOSED = + new RemediationPullRequestStatus("closed"); + public static final RemediationPullRequestStatus MERGED = + new RemediationPullRequestStatus("merged"); + + RemediationPullRequestStatus(String value) { + super(value, allowedValues); + } + + public static class RemediationPullRequestStatusSerializer + extends StdSerializer { + public RemediationPullRequestStatusSerializer(Class t) { + super(t); + } + + public RemediationPullRequestStatusSerializer() { + this(null); + } + + @Override + public void serialize( + RemediationPullRequestStatus value, JsonGenerator jgen, SerializerProvider provider) + throws IOException, JsonProcessingException { + jgen.writeObject(value.value); + } + } + + @JsonCreator + public static RemediationPullRequestStatus fromValue(String value) { + return new RemediationPullRequestStatus(value); + } +} diff --git a/src/main/java/com/datadog/api/client/v2/model/RemediationRiskLevel.java b/src/main/java/com/datadog/api/client/v2/model/RemediationRiskLevel.java new file mode 100644 index 00000000000..0a2947c71e4 --- /dev/null +++ b/src/main/java/com/datadog/api/client/v2/model/RemediationRiskLevel.java @@ -0,0 +1,57 @@ +/* + * 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. + */ + +package com.datadog.api.client.v2.model; + +import com.datadog.api.client.ModelEnum; +import com.fasterxml.jackson.annotation.JsonCreator; +import com.fasterxml.jackson.core.JsonGenerator; +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.SerializerProvider; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.StdSerializer; +import java.io.IOException; +import java.util.Arrays; +import java.util.HashSet; +import java.util.Set; + +/** Estimated risk of a remediation step or proposed fix. */ +@JsonSerialize(using = RemediationRiskLevel.RemediationRiskLevelSerializer.class) +public class RemediationRiskLevel extends ModelEnum { + + private static final Set allowedValues = + new HashSet(Arrays.asList("low", "medium", "high")); + + public static final RemediationRiskLevel LOW = new RemediationRiskLevel("low"); + public static final RemediationRiskLevel MEDIUM = new RemediationRiskLevel("medium"); + public static final RemediationRiskLevel HIGH = new RemediationRiskLevel("high"); + + RemediationRiskLevel(String value) { + super(value, allowedValues); + } + + public static class RemediationRiskLevelSerializer extends StdSerializer { + public RemediationRiskLevelSerializer(Class t) { + super(t); + } + + public RemediationRiskLevelSerializer() { + this(null); + } + + @Override + public void serialize( + RemediationRiskLevel value, JsonGenerator jgen, SerializerProvider provider) + throws IOException, JsonProcessingException { + jgen.writeObject(value.value); + } + } + + @JsonCreator + public static RemediationRiskLevel fromValue(String value) { + return new RemediationRiskLevel(value); + } +} diff --git a/src/main/java/com/datadog/api/client/v2/model/RemediationStep.java b/src/main/java/com/datadog/api/client/v2/model/RemediationStep.java new file mode 100644 index 00000000000..583ea1fdef9 --- /dev/null +++ b/src/main/java/com/datadog/api/client/v2/model/RemediationStep.java @@ -0,0 +1,281 @@ +/* + * 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. + */ + +package com.datadog.api.client.v2.model; + +import com.fasterxml.jackson.annotation.JsonAnyGetter; +import com.fasterxml.jackson.annotation.JsonAnySetter; +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; +import java.util.HashMap; +import java.util.Map; +import java.util.Objects; + +/** A single execution-oriented step in a remediation plan. */ +@JsonPropertyOrder({ + RemediationStep.JSON_PROPERTY_ACTION_FQN, + RemediationStep.JSON_PROPERTY_APPROVAL_STATE, + RemediationStep.JSON_PROPERTY_DESCRIPTION, + RemediationStep.JSON_PROPERTY_REVERSIBLE, + RemediationStep.JSON_PROPERTY_RISK, + RemediationStep.JSON_PROPERTY_STEP_ID +}) +@jakarta.annotation.Generated( + value = "https://github.com/DataDog/datadog-api-client-java/blob/master/.generator") +public class RemediationStep { + @JsonIgnore public boolean unparsed = false; + public static final String JSON_PROPERTY_ACTION_FQN = "action_fqn"; + private String actionFqn; + + public static final String JSON_PROPERTY_APPROVAL_STATE = "approval_state"; + private RemediationStepApprovalState approvalState; + + public static final String JSON_PROPERTY_DESCRIPTION = "description"; + private String description; + + public static final String JSON_PROPERTY_REVERSIBLE = "reversible"; + private Boolean reversible; + + public static final String JSON_PROPERTY_RISK = "risk"; + private RemediationRiskLevel risk; + + public static final String JSON_PROPERTY_STEP_ID = "step_id"; + private String stepId; + + public RemediationStep actionFqn(String actionFqn) { + this.actionFqn = actionFqn; + return this; + } + + /** + * Fully qualified action type, for example ecs.update_service_memory. + * + * @return actionFqn + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_ACTION_FQN) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public String getActionFqn() { + return actionFqn; + } + + public void setActionFqn(String actionFqn) { + this.actionFqn = actionFqn; + } + + public RemediationStep approvalState(RemediationStepApprovalState approvalState) { + this.approvalState = approvalState; + this.unparsed |= !approvalState.isValid(); + return this; + } + + /** + * Approval state for a remediation step. + * + * @return approvalState + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_APPROVAL_STATE) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public RemediationStepApprovalState getApprovalState() { + return approvalState; + } + + public void setApprovalState(RemediationStepApprovalState approvalState) { + if (!approvalState.isValid()) { + this.unparsed = true; + } + this.approvalState = approvalState; + } + + public RemediationStep description(String description) { + this.description = description; + return this; + } + + /** + * Human-readable description of the step. + * + * @return description + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_DESCRIPTION) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public RemediationStep reversible(Boolean reversible) { + this.reversible = reversible; + return this; + } + + /** + * Whether the step can be reversed after execution. + * + * @return reversible + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_REVERSIBLE) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public Boolean getReversible() { + return reversible; + } + + public void setReversible(Boolean reversible) { + this.reversible = reversible; + } + + public RemediationStep risk(RemediationRiskLevel risk) { + this.risk = risk; + this.unparsed |= !risk.isValid(); + return this; + } + + /** + * Estimated risk of a remediation step or proposed fix. + * + * @return risk + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_RISK) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public RemediationRiskLevel getRisk() { + return risk; + } + + public void setRisk(RemediationRiskLevel risk) { + if (!risk.isValid()) { + this.unparsed = true; + } + this.risk = risk; + } + + public RemediationStep stepId(String stepId) { + this.stepId = stepId; + return this; + } + + /** + * Unique ID for the step within the plan. + * + * @return stepId + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_STEP_ID) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public String getStepId() { + return stepId; + } + + public void setStepId(String stepId) { + this.stepId = stepId; + } + + /** + * A container for additional, undeclared properties. This is a holder for any undeclared + * properties as specified with the 'additionalProperties' keyword in the OAS document. + */ + private Map additionalProperties; + + /** + * Set the additional (undeclared) property with the specified name and value. If the property + * does not already exist, create it otherwise replace it. + * + * @param key The arbitrary key to set + * @param value The associated value + * @return RemediationStep + */ + @JsonAnySetter + public RemediationStep putAdditionalProperty(String key, Object value) { + if (this.additionalProperties == null) { + this.additionalProperties = new HashMap(); + } + this.additionalProperties.put(key, value); + return this; + } + + /** + * Return the additional (undeclared) property. + * + * @return The additional properties + */ + @JsonAnyGetter + public Map getAdditionalProperties() { + return additionalProperties; + } + + /** + * Return the additional (undeclared) property with the specified name. + * + * @param key The arbitrary key to get + * @return The specific additional property for the given key + */ + public Object getAdditionalProperty(String key) { + if (this.additionalProperties == null) { + return null; + } + return this.additionalProperties.get(key); + } + + /** Return true if this RemediationStep object is equal to o. */ + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + RemediationStep remediationStep = (RemediationStep) o; + return Objects.equals(this.actionFqn, remediationStep.actionFqn) + && Objects.equals(this.approvalState, remediationStep.approvalState) + && Objects.equals(this.description, remediationStep.description) + && Objects.equals(this.reversible, remediationStep.reversible) + && Objects.equals(this.risk, remediationStep.risk) + && Objects.equals(this.stepId, remediationStep.stepId) + && Objects.equals(this.additionalProperties, remediationStep.additionalProperties); + } + + @Override + public int hashCode() { + return Objects.hash( + actionFqn, approvalState, description, reversible, risk, stepId, additionalProperties); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class RemediationStep {\n"); + sb.append(" actionFqn: ").append(toIndentedString(actionFqn)).append("\n"); + sb.append(" approvalState: ").append(toIndentedString(approvalState)).append("\n"); + sb.append(" description: ").append(toIndentedString(description)).append("\n"); + sb.append(" reversible: ").append(toIndentedString(reversible)).append("\n"); + sb.append(" risk: ").append(toIndentedString(risk)).append("\n"); + sb.append(" stepId: ").append(toIndentedString(stepId)).append("\n"); + sb.append(" additionalProperties: ") + .append(toIndentedString(additionalProperties)) + .append("\n"); + sb.append('}'); + return sb.toString(); + } + + /** + * Convert the given object to string with each line indented by 4 spaces (except the first line). + */ + private String toIndentedString(Object o) { + if (o == null) { + return "null"; + } + return o.toString().replace("\n", "\n "); + } +} diff --git a/src/main/java/com/datadog/api/client/v2/model/RemediationStepApprovalState.java b/src/main/java/com/datadog/api/client/v2/model/RemediationStepApprovalState.java new file mode 100644 index 00000000000..25a44900479 --- /dev/null +++ b/src/main/java/com/datadog/api/client/v2/model/RemediationStepApprovalState.java @@ -0,0 +1,61 @@ +/* + * 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. + */ + +package com.datadog.api.client.v2.model; + +import com.datadog.api.client.ModelEnum; +import com.fasterxml.jackson.annotation.JsonCreator; +import com.fasterxml.jackson.core.JsonGenerator; +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.SerializerProvider; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.StdSerializer; +import java.io.IOException; +import java.util.Arrays; +import java.util.HashSet; +import java.util.Set; + +/** Approval state for a remediation step. */ +@JsonSerialize(using = RemediationStepApprovalState.RemediationStepApprovalStateSerializer.class) +public class RemediationStepApprovalState extends ModelEnum { + + private static final Set allowedValues = + new HashSet(Arrays.asList("pending_approval", "approved", "rejected")); + + public static final RemediationStepApprovalState PENDING_APPROVAL = + new RemediationStepApprovalState("pending_approval"); + public static final RemediationStepApprovalState APPROVED = + new RemediationStepApprovalState("approved"); + public static final RemediationStepApprovalState REJECTED = + new RemediationStepApprovalState("rejected"); + + RemediationStepApprovalState(String value) { + super(value, allowedValues); + } + + public static class RemediationStepApprovalStateSerializer + extends StdSerializer { + public RemediationStepApprovalStateSerializer(Class t) { + super(t); + } + + public RemediationStepApprovalStateSerializer() { + this(null); + } + + @Override + public void serialize( + RemediationStepApprovalState value, JsonGenerator jgen, SerializerProvider provider) + throws IOException, JsonProcessingException { + jgen.writeObject(value.value); + } + } + + @JsonCreator + public static RemediationStepApprovalState fromValue(String value) { + return new RemediationStepApprovalState(value); + } +} diff --git a/src/main/java/com/datadog/api/client/v2/model/RemediationWorkloadSummary.java b/src/main/java/com/datadog/api/client/v2/model/RemediationWorkloadSummary.java new file mode 100644 index 00000000000..6f6115f9eb8 --- /dev/null +++ b/src/main/java/com/datadog/api/client/v2/model/RemediationWorkloadSummary.java @@ -0,0 +1,320 @@ +/* + * 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. + */ + +package com.datadog.api.client.v2.model; + +import com.fasterxml.jackson.annotation.JsonAnyGetter; +import com.fasterxml.jackson.annotation.JsonAnySetter; +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; +import java.util.HashMap; +import java.util.Map; +import java.util.Objects; + +/** Aggregated health across all tasks in a workload (service or daemon). */ +@JsonPropertyOrder({ + RemediationWorkloadSummary.JSON_PROPERTY_DEPLOYMENT_ROLLOUT_STATE, + RemediationWorkloadSummary.JSON_PROPERTY_DESIRED_COUNT, + RemediationWorkloadSummary.JSON_PROPERTY_FAILED_COUNT, + RemediationWorkloadSummary.JSON_PROPERTY_FAILED_PERCENT, + RemediationWorkloadSummary.JSON_PROPERTY_PENDING_COUNT, + RemediationWorkloadSummary.JSON_PROPERTY_PREVIOUS_TASK_DEFINITION, + RemediationWorkloadSummary.JSON_PROPERTY_RUNNING_COUNT +}) +@jakarta.annotation.Generated( + value = "https://github.com/DataDog/datadog-api-client-java/blob/master/.generator") +public class RemediationWorkloadSummary { + @JsonIgnore public boolean unparsed = false; + public static final String JSON_PROPERTY_DEPLOYMENT_ROLLOUT_STATE = "deployment_rollout_state"; + private RemediationDeploymentRolloutState deploymentRolloutState; + + public static final String JSON_PROPERTY_DESIRED_COUNT = "desired_count"; + private String desiredCount; + + public static final String JSON_PROPERTY_FAILED_COUNT = "failed_count"; + private String failedCount; + + public static final String JSON_PROPERTY_FAILED_PERCENT = "failed_percent"; + private String failedPercent; + + public static final String JSON_PROPERTY_PENDING_COUNT = "pending_count"; + private String pendingCount; + + public static final String JSON_PROPERTY_PREVIOUS_TASK_DEFINITION = "previous_task_definition"; + private String previousTaskDefinition; + + public static final String JSON_PROPERTY_RUNNING_COUNT = "running_count"; + private String runningCount; + + public RemediationWorkloadSummary deploymentRolloutState( + RemediationDeploymentRolloutState deploymentRolloutState) { + this.deploymentRolloutState = deploymentRolloutState; + this.unparsed |= !deploymentRolloutState.isValid(); + return this; + } + + /** + * ECS deployment state, populated only for deployment failures. + * + * @return deploymentRolloutState + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_DEPLOYMENT_ROLLOUT_STATE) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public RemediationDeploymentRolloutState getDeploymentRolloutState() { + return deploymentRolloutState; + } + + public void setDeploymentRolloutState(RemediationDeploymentRolloutState deploymentRolloutState) { + if (!deploymentRolloutState.isValid()) { + this.unparsed = true; + } + this.deploymentRolloutState = deploymentRolloutState; + } + + public RemediationWorkloadSummary desiredCount(String desiredCount) { + this.desiredCount = desiredCount; + return this; + } + + /** + * Expected task count (64-bit integer encoded as a string). + * + * @return desiredCount + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_DESIRED_COUNT) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public String getDesiredCount() { + return desiredCount; + } + + public void setDesiredCount(String desiredCount) { + this.desiredCount = desiredCount; + } + + public RemediationWorkloadSummary failedCount(String failedCount) { + this.failedCount = failedCount; + return this; + } + + /** + * Tasks in a problematic state (64-bit integer encoded as a string). + * + * @return failedCount + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_FAILED_COUNT) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public String getFailedCount() { + return failedCount; + } + + public void setFailedCount(String failedCount) { + this.failedCount = failedCount; + } + + public RemediationWorkloadSummary failedPercent(String failedPercent) { + this.failedPercent = failedPercent; + return this; + } + + /** + * Percentage of desired count that is failed (64-bit integer encoded as a string). + * + * @return failedPercent + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_FAILED_PERCENT) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public String getFailedPercent() { + return failedPercent; + } + + public void setFailedPercent(String failedPercent) { + this.failedPercent = failedPercent; + } + + public RemediationWorkloadSummary pendingCount(String pendingCount) { + this.pendingCount = pendingCount; + return this; + } + + /** + * Tasks currently pending (64-bit integer encoded as a string). + * + * @return pendingCount + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_PENDING_COUNT) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public String getPendingCount() { + return pendingCount; + } + + public void setPendingCount(String pendingCount) { + this.pendingCount = pendingCount; + } + + public RemediationWorkloadSummary previousTaskDefinition(String previousTaskDefinition) { + this.previousTaskDefinition = previousTaskDefinition; + return this; + } + + /** + * Previous deployment's task definition, as family:revision or a full task definition ARN. Empty + * when no rollback target is visible. + * + * @return previousTaskDefinition + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_PREVIOUS_TASK_DEFINITION) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public String getPreviousTaskDefinition() { + return previousTaskDefinition; + } + + public void setPreviousTaskDefinition(String previousTaskDefinition) { + this.previousTaskDefinition = previousTaskDefinition; + } + + public RemediationWorkloadSummary runningCount(String runningCount) { + this.runningCount = runningCount; + return this; + } + + /** + * Tasks currently running (64-bit integer encoded as a string). + * + * @return runningCount + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_RUNNING_COUNT) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public String getRunningCount() { + return runningCount; + } + + public void setRunningCount(String runningCount) { + this.runningCount = runningCount; + } + + /** + * A container for additional, undeclared properties. This is a holder for any undeclared + * properties as specified with the 'additionalProperties' keyword in the OAS document. + */ + private Map additionalProperties; + + /** + * Set the additional (undeclared) property with the specified name and value. If the property + * does not already exist, create it otherwise replace it. + * + * @param key The arbitrary key to set + * @param value The associated value + * @return RemediationWorkloadSummary + */ + @JsonAnySetter + public RemediationWorkloadSummary putAdditionalProperty(String key, Object value) { + if (this.additionalProperties == null) { + this.additionalProperties = new HashMap(); + } + this.additionalProperties.put(key, value); + return this; + } + + /** + * Return the additional (undeclared) property. + * + * @return The additional properties + */ + @JsonAnyGetter + public Map getAdditionalProperties() { + return additionalProperties; + } + + /** + * Return the additional (undeclared) property with the specified name. + * + * @param key The arbitrary key to get + * @return The specific additional property for the given key + */ + public Object getAdditionalProperty(String key) { + if (this.additionalProperties == null) { + return null; + } + return this.additionalProperties.get(key); + } + + /** Return true if this RemediationWorkloadSummary object is equal to o. */ + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + RemediationWorkloadSummary remediationWorkloadSummary = (RemediationWorkloadSummary) o; + return Objects.equals( + this.deploymentRolloutState, remediationWorkloadSummary.deploymentRolloutState) + && Objects.equals(this.desiredCount, remediationWorkloadSummary.desiredCount) + && Objects.equals(this.failedCount, remediationWorkloadSummary.failedCount) + && Objects.equals(this.failedPercent, remediationWorkloadSummary.failedPercent) + && Objects.equals(this.pendingCount, remediationWorkloadSummary.pendingCount) + && Objects.equals( + this.previousTaskDefinition, remediationWorkloadSummary.previousTaskDefinition) + && Objects.equals(this.runningCount, remediationWorkloadSummary.runningCount) + && Objects.equals( + this.additionalProperties, remediationWorkloadSummary.additionalProperties); + } + + @Override + public int hashCode() { + return Objects.hash( + deploymentRolloutState, + desiredCount, + failedCount, + failedPercent, + pendingCount, + previousTaskDefinition, + runningCount, + additionalProperties); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class RemediationWorkloadSummary {\n"); + sb.append(" deploymentRolloutState: ") + .append(toIndentedString(deploymentRolloutState)) + .append("\n"); + sb.append(" desiredCount: ").append(toIndentedString(desiredCount)).append("\n"); + sb.append(" failedCount: ").append(toIndentedString(failedCount)).append("\n"); + sb.append(" failedPercent: ").append(toIndentedString(failedPercent)).append("\n"); + sb.append(" pendingCount: ").append(toIndentedString(pendingCount)).append("\n"); + sb.append(" previousTaskDefinition: ") + .append(toIndentedString(previousTaskDefinition)) + .append("\n"); + sb.append(" runningCount: ").append(toIndentedString(runningCount)).append("\n"); + sb.append(" additionalProperties: ") + .append(toIndentedString(additionalProperties)) + .append("\n"); + sb.append('}'); + return sb.toString(); + } + + /** + * Convert the given object to string with each line indented by 4 spaces (except the first line). + */ + private String toIndentedString(Object o) { + if (o == null) { + return "null"; + } + return o.toString().replace("\n", "\n "); + } +} diff --git a/src/main/java/com/datadog/api/client/v2/model/RemediationWorkloadType.java b/src/main/java/com/datadog/api/client/v2/model/RemediationWorkloadType.java new file mode 100644 index 00000000000..a545807f302 --- /dev/null +++ b/src/main/java/com/datadog/api/client/v2/model/RemediationWorkloadType.java @@ -0,0 +1,62 @@ +/* + * 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. + */ + +package com.datadog.api.client.v2.model; + +import com.datadog.api.client.ModelEnum; +import com.fasterxml.jackson.annotation.JsonCreator; +import com.fasterxml.jackson.core.JsonGenerator; +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.SerializerProvider; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.StdSerializer; +import java.io.IOException; +import java.util.Arrays; +import java.util.HashSet; +import java.util.Set; + +/** The kind of ECS workload that owns the problematic tasks. */ +@JsonSerialize(using = RemediationWorkloadType.RemediationWorkloadTypeSerializer.class) +public class RemediationWorkloadType extends ModelEnum { + + private static final Set allowedValues = + new HashSet( + Arrays.asList("WORKLOAD_TYPE_UNSPECIFIED", "SERVICE", "STANDALONE_TASK", "DAEMON")); + + public static final RemediationWorkloadType WORKLOAD_TYPE_UNSPECIFIED = + new RemediationWorkloadType("WORKLOAD_TYPE_UNSPECIFIED"); + public static final RemediationWorkloadType SERVICE = new RemediationWorkloadType("SERVICE"); + public static final RemediationWorkloadType STANDALONE_TASK = + new RemediationWorkloadType("STANDALONE_TASK"); + public static final RemediationWorkloadType DAEMON = new RemediationWorkloadType("DAEMON"); + + RemediationWorkloadType(String value) { + super(value, allowedValues); + } + + public static class RemediationWorkloadTypeSerializer + extends StdSerializer { + public RemediationWorkloadTypeSerializer(Class t) { + super(t); + } + + public RemediationWorkloadTypeSerializer() { + this(null); + } + + @Override + public void serialize( + RemediationWorkloadType value, JsonGenerator jgen, SerializerProvider provider) + throws IOException, JsonProcessingException { + jgen.writeObject(value.value); + } + } + + @JsonCreator + public static RemediationWorkloadType fromValue(String value) { + return new RemediationWorkloadType(value); + } +}