// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License.
// Code generated by Microsoft (R) AutoRest Code Generator.

package com.azure.resourcemanager.securityinsights.models;

import com.azure.core.annotation.Fluent;
import com.fasterxml.jackson.annotation.JsonProperty;
import java.time.OffsetDateTime;

/** Description about a deployment. */
@Fluent
public final class Deployment {
    /*
     * Deployment identifier.
     */
    @JsonProperty(value = "deploymentId")
    private String deploymentId;

    /*
     * Current status of the deployment.
     */
    @JsonProperty(value = "deploymentState")
    private DeploymentState deploymentState;

    /*
     * The outcome of the deployment.
     */
    @JsonProperty(value = "deploymentResult")
    private DeploymentResult deploymentResult;

    /*
     * The time when the deployment finished.
     */
    @JsonProperty(value = "deploymentTime")
    private OffsetDateTime deploymentTime;

    /*
     * Url to access repository action logs.
     */
    @JsonProperty(value = "deploymentLogsUrl")
    private String deploymentLogsUrl;

    /**
     * Get the deploymentId property: Deployment identifier.
     *
     * @return the deploymentId value.
     */
    public String deploymentId() {
        return this.deploymentId;
    }

    /**
     * Set the deploymentId property: Deployment identifier.
     *
     * @param deploymentId the deploymentId value to set.
     * @return the Deployment object itself.
     */
    public Deployment withDeploymentId(String deploymentId) {
        this.deploymentId = deploymentId;
        return this;
    }

    /**
     * Get the deploymentState property: Current status of the deployment.
     *
     * @return the deploymentState value.
     */
    public DeploymentState deploymentState() {
        return this.deploymentState;
    }

    /**
     * Set the deploymentState property: Current status of the deployment.
     *
     * @param deploymentState the deploymentState value to set.
     * @return the Deployment object itself.
     */
    public Deployment withDeploymentState(DeploymentState deploymentState) {
        this.deploymentState = deploymentState;
        return this;
    }

    /**
     * Get the deploymentResult property: The outcome of the deployment.
     *
     * @return the deploymentResult value.
     */
    public DeploymentResult deploymentResult() {
        return this.deploymentResult;
    }

    /**
     * Set the deploymentResult property: The outcome of the deployment.
     *
     * @param deploymentResult the deploymentResult value to set.
     * @return the Deployment object itself.
     */
    public Deployment withDeploymentResult(DeploymentResult deploymentResult) {
        this.deploymentResult = deploymentResult;
        return this;
    }

    /**
     * Get the deploymentTime property: The time when the deployment finished.
     *
     * @return the deploymentTime value.
     */
    public OffsetDateTime deploymentTime() {
        return this.deploymentTime;
    }

    /**
     * Set the deploymentTime property: The time when the deployment finished.
     *
     * @param deploymentTime the deploymentTime value to set.
     * @return the Deployment object itself.
     */
    public Deployment withDeploymentTime(OffsetDateTime deploymentTime) {
        this.deploymentTime = deploymentTime;
        return this;
    }

    /**
     * Get the deploymentLogsUrl property: Url to access repository action logs.
     *
     * @return the deploymentLogsUrl value.
     */
    public String deploymentLogsUrl() {
        return this.deploymentLogsUrl;
    }

    /**
     * Set the deploymentLogsUrl property: Url to access repository action logs.
     *
     * @param deploymentLogsUrl the deploymentLogsUrl value to set.
     * @return the Deployment object itself.
     */
    public Deployment withDeploymentLogsUrl(String deploymentLogsUrl) {
        this.deploymentLogsUrl = deploymentLogsUrl;
        return this;
    }

    /**
     * Validates the instance.
     *
     * @throws IllegalArgumentException thrown if the instance is not valid.
     */
    public void validate() {
    }
}
