<gh_stars>0// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
// *** Do not edit by hand unless you're certain you know what you are doing! ***

using System;
using System.Collections.Generic;
using System.Collections.Immutable;
using System.Threading.Tasks;
using Pulumi.Serialization;

namespace Pulumi.AliCloud.Hbr.Inputs
{

    public sealed class ServerBackupPlanDetailArgs : global::Pulumi.ResourceArgs
    {
        /// <summary>
        /// Whether to turn on application consistency. The application consistency snapshot backs up memory data and ongoing database transactions at the time of snapshot creation to ensure the consistency of application system data and database transactions. By applying consistent snapshots, there is no data damage or loss, so as to avoid log rollback during database startup and ensure that the application is in a consistent startup state. Valid values: `true`, `false`.
        /// </summary>
        [Input("appConsistent", required: true)]
        public Input<bool> AppConsistent { get; set; } = null!;

        /// <summary>
        /// Only vaild when DoCopy is true. The destination region ID when replicating to another region. **Note:** Once you set a value of this property, you cannot set it to an empty string anymore.
        /// </summary>
        [Input("destinationRegionId")]
        public Input<string>? DestinationRegionId { get; set; }

        /// <summary>
        /// Only vaild when DoCopy is true. The retention days of the destination backup. When not specified, the destination backup will be saved permanently. **Note:** Once you set a value of this property, you cannot set it to an empty string anymore.
        /// </summary>
        [Input("destinationRetention")]
        public Input<int>? DestinationRetention { get; set; }

        [Input("diskIdLists")]
        private InputList<string>? _diskIdLists;

        /// <summary>
        /// The list of cloud disks to be backed up in the ECS instance. When not specified, a snapshot is executed for all the disks on the ECS instance.
        /// </summary>
        public InputList<string> DiskIdLists
        {
            get => _diskIdLists ?? (_diskIdLists = new InputList<string>());
            set => _diskIdLists = value;
        }

        /// <summary>
        /// Whether replicate to another region. Valid values: `true`, `false`.
        /// </summary>
        [Input("doCopy")]
        public Input<bool>? DoCopy { get; set; }

        /// <summary>
        /// Only the Linux system is valid. Whether to use the Linux FsFreeze mechanism to ensure that the file system is read-only consistent before creating a storage snapshot. The default is True. Valid values: `true`, `false`.
        /// </summary>
        [Input("enableFsFreeze")]
        public Input<bool>? EnableFsFreeze { get; set; }

        /// <summary>
        /// Only vaild for the linux system when AppConsistent is true. The application thaw script path (e.g. /tmp/postscript.sh). The postscript.sh script must meet the following conditions: in terms of permissions, only the root user as the owner has read, write, and execute permissions, that is, 700 permissions. In terms of content, the script content needs to be customized according to the application itself. This indicates that this parameter must be set when creating an application consistency snapshot for a Linux instance. If the script is set incorrectly (for example, permissions, save path, or file name are set incorrectly), the resulting snapshot is a file system consistency snapshot.
        /// </summary>
        [Input("postScriptPath")]
        public Input<string>? PostScriptPath { get; set; }

        /// <summary>
        /// Only vaild for the linux system when AppConsistent is true. Apply the freeze script path (e.g. /tmp/prescript.sh). prescript.sh scripts must meet the following conditions: in terms of permissions, only root, as the owner, has read, write, and execute permissions, that is, 700 permissions. In terms of content, the script content needs to be customized according to the application itself. This indicates that this parameter must be set when creating an application consistency snapshot for a Linux instance. If the script is set incorrectly (for example, permissions, save path, or file name are set incorrectly), the resulting snapshot is a file system consistency snapshot.
        /// </summary>
        [Input("preScriptPath")]
        public Input<string>? PreScriptPath { get; set; }

        /// <summary>
        /// Whether to turn on file system consistency. If SnapshotGroup is true, when AppConsistent is true but the relevant conditions are not met or AppConsistent is false, the resulting snapshot will be a file system consistency snapshot. The file system consistency ensures that the file system memory and disk information are synchronized at the time of snapshot creation, and the file system write operation is frozen to make the file system in a consistent state. The file system consistency snapshot can prevent the operating system from performing disk inspection and repair operations such as CHKDSK or fsck after restart. Valid values: `true`, `false`.
        /// </summary>
        [Input("snapshotGroup", required: true)]
        public Input<bool> SnapshotGroup { get; set; } = null!;

        /// <summary>
        /// Only the Linux system is valid, and the IO freeze timeout period. The default is 30 seconds.
        /// </summary>
        [Input("timeoutInSeconds")]
        public Input<int>? TimeoutInSeconds { get; set; }

        public ServerBackupPlanDetailArgs()
        {
        }
        public static new ServerBackupPlanDetailArgs Empty => new ServerBackupPlanDetailArgs();
    }
}
