# coding=utf-8
# *** 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! ***

import warnings
import pulumi
import pulumi.runtime
from typing import Any, Dict, List, Mapping, Optional, Tuple, Union
from .. import _utilities, _tables

__all__ = [
    'PolicyFileShareBackup',
    'PolicyFileShareRetentionDaily',
    'PolicyVMBackup',
    'PolicyVMRetentionDaily',
    'PolicyVMRetentionMonthly',
    'PolicyVMRetentionWeekly',
    'PolicyVMRetentionYearly',
]

@pulumi.output_type
class PolicyFileShareBackup(dict):
    def __init__(__self__, *,
                 frequency: str,
                 time: str):
        """
        :param str frequency: Sets the backup frequency. Currently, only `Daily` is supported
        """
        pulumi.set(__self__, "frequency", frequency)
        pulumi.set(__self__, "time", time)

    @property
    @pulumi.getter
    def frequency(self) -> str:
        """
        Sets the backup frequency. Currently, only `Daily` is supported
        """
        return pulumi.get(self, "frequency")

    @property
    @pulumi.getter
    def time(self) -> str:
        return pulumi.get(self, "time")

    def _translate_property(self, prop):
        return _tables.CAMEL_TO_SNAKE_CASE_TABLE.get(prop) or prop


@pulumi.output_type
class PolicyFileShareRetentionDaily(dict):
    def __init__(__self__, *,
                 count: float):
        """
        :param float count: The number of daily backups to keep. Must be between `1` and `180` (inclusive)
        """
        pulumi.set(__self__, "count", count)

    @property
    @pulumi.getter
    def count(self) -> float:
        """
        The number of daily backups to keep. Must be between `1` and `180` (inclusive)
        """
        return pulumi.get(self, "count")

    def _translate_property(self, prop):
        return _tables.CAMEL_TO_SNAKE_CASE_TABLE.get(prop) or prop


@pulumi.output_type
class PolicyVMBackup(dict):
    def __init__(__self__, *,
                 frequency: str,
                 time: str,
                 weekdays: Optional[List[str]] = None):
        """
        :param str frequency: Sets the backup frequency. Must be either `Daily` or`Weekly`.
        :param str time: The time of day to perform the backup in 24hour format.
        :param List[str] weekdays: The weekday backups to retain . Must be one of `Sunday`, `Monday`, `Tuesday`, `Wednesday`, `Thursday`, `Friday` or `Saturday`.
        """
        pulumi.set(__self__, "frequency", frequency)
        pulumi.set(__self__, "time", time)
        if weekdays is not None:
            pulumi.set(__self__, "weekdays", weekdays)

    @property
    @pulumi.getter
    def frequency(self) -> str:
        """
        Sets the backup frequency. Must be either `Daily` or`Weekly`.
        """
        return pulumi.get(self, "frequency")

    @property
    @pulumi.getter
    def time(self) -> str:
        """
        The time of day to perform the backup in 24hour format.
        """
        return pulumi.get(self, "time")

    @property
    @pulumi.getter
    def weekdays(self) -> Optional[List[str]]:
        """
        The weekday backups to retain . Must be one of `Sunday`, `Monday`, `Tuesday`, `Wednesday`, `Thursday`, `Friday` or `Saturday`.
        """
        return pulumi.get(self, "weekdays")

    def _translate_property(self, prop):
        return _tables.CAMEL_TO_SNAKE_CASE_TABLE.get(prop) or prop


@pulumi.output_type
class PolicyVMRetentionDaily(dict):
    def __init__(__self__, *,
                 count: float):
        """
        :param float count: The number of yearly backups to keep. Must be between `1` and `9999`
        """
        pulumi.set(__self__, "count", count)

    @property
    @pulumi.getter
    def count(self) -> float:
        """
        The number of yearly backups to keep. Must be between `1` and `9999`
        """
        return pulumi.get(self, "count")

    def _translate_property(self, prop):
        return _tables.CAMEL_TO_SNAKE_CASE_TABLE.get(prop) or prop


@pulumi.output_type
class PolicyVMRetentionMonthly(dict):
    def __init__(__self__, *,
                 count: float,
                 weekdays: List[str],
                 weeks: List[str]):
        """
        :param float count: The number of yearly backups to keep. Must be between `1` and `9999`
        :param List[str] weekdays: The weekday backups to retain . Must be one of `Sunday`, `Monday`, `Tuesday`, `Wednesday`, `Thursday`, `Friday` or `Saturday`.
        :param List[str] weeks: The weeks of the month to retain backups of. Must be one of `First`, `Second`, `Third`, `Fourth`, `Last`.
        """
        pulumi.set(__self__, "count", count)
        pulumi.set(__self__, "weekdays", weekdays)
        pulumi.set(__self__, "weeks", weeks)

    @property
    @pulumi.getter
    def count(self) -> float:
        """
        The number of yearly backups to keep. Must be between `1` and `9999`
        """
        return pulumi.get(self, "count")

    @property
    @pulumi.getter
    def weekdays(self) -> List[str]:
        """
        The weekday backups to retain . Must be one of `Sunday`, `Monday`, `Tuesday`, `Wednesday`, `Thursday`, `Friday` or `Saturday`.
        """
        return pulumi.get(self, "weekdays")

    @property
    @pulumi.getter
    def weeks(self) -> List[str]:
        """
        The weeks of the month to retain backups of. Must be one of `First`, `Second`, `Third`, `Fourth`, `Last`.
        """
        return pulumi.get(self, "weeks")

    def _translate_property(self, prop):
        return _tables.CAMEL_TO_SNAKE_CASE_TABLE.get(prop) or prop


@pulumi.output_type
class PolicyVMRetentionWeekly(dict):
    def __init__(__self__, *,
                 count: float,
                 weekdays: List[str]):
        """
        :param float count: The number of yearly backups to keep. Must be between `1` and `9999`
        :param List[str] weekdays: The weekday backups to retain . Must be one of `Sunday`, `Monday`, `Tuesday`, `Wednesday`, `Thursday`, `Friday` or `Saturday`.
        """
        pulumi.set(__self__, "count", count)
        pulumi.set(__self__, "weekdays", weekdays)

    @property
    @pulumi.getter
    def count(self) -> float:
        """
        The number of yearly backups to keep. Must be between `1` and `9999`
        """
        return pulumi.get(self, "count")

    @property
    @pulumi.getter
    def weekdays(self) -> List[str]:
        """
        The weekday backups to retain . Must be one of `Sunday`, `Monday`, `Tuesday`, `Wednesday`, `Thursday`, `Friday` or `Saturday`.
        """
        return pulumi.get(self, "weekdays")

    def _translate_property(self, prop):
        return _tables.CAMEL_TO_SNAKE_CASE_TABLE.get(prop) or prop


@pulumi.output_type
class PolicyVMRetentionYearly(dict):
    def __init__(__self__, *,
                 count: float,
                 months: List[str],
                 weekdays: List[str],
                 weeks: List[str]):
        """
        :param float count: The number of yearly backups to keep. Must be between `1` and `9999`
        :param List[str] months: The months of the year to retain backups of. Must be one of `January`, `February`, `March`, `April`, `May`, `June`, `July`, `Augest`, `September`, `October`, `November` and `December`.
        :param List[str] weekdays: The weekday backups to retain . Must be one of `Sunday`, `Monday`, `Tuesday`, `Wednesday`, `Thursday`, `Friday` or `Saturday`.
        :param List[str] weeks: The weeks of the month to retain backups of. Must be one of `First`, `Second`, `Third`, `Fourth`, `Last`.
        """
        pulumi.set(__self__, "count", count)
        pulumi.set(__self__, "months", months)
        pulumi.set(__self__, "weekdays", weekdays)
        pulumi.set(__self__, "weeks", weeks)

    @property
    @pulumi.getter
    def count(self) -> float:
        """
        The number of yearly backups to keep. Must be between `1` and `9999`
        """
        return pulumi.get(self, "count")

    @property
    @pulumi.getter
    def months(self) -> List[str]:
        """
        The months of the year to retain backups of. Must be one of `January`, `February`, `March`, `April`, `May`, `June`, `July`, `Augest`, `September`, `October`, `November` and `December`.
        """
        return pulumi.get(self, "months")

    @property
    @pulumi.getter
    def weekdays(self) -> List[str]:
        """
        The weekday backups to retain . Must be one of `Sunday`, `Monday`, `Tuesday`, `Wednesday`, `Thursday`, `Friday` or `Saturday`.
        """
        return pulumi.get(self, "weekdays")

    @property
    @pulumi.getter
    def weeks(self) -> List[str]:
        """
        The weeks of the month to retain backups of. Must be one of `First`, `Second`, `Third`, `Fourth`, `Last`.
        """
        return pulumi.get(self, "weeks")

    def _translate_property(self, prop):
        return _tables.CAMEL_TO_SNAKE_CASE_TABLE.get(prop) or prop


