# 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 copy
import warnings
import pulumi
import pulumi.runtime
from typing import Any, Mapping, Optional, Sequence, Union, overload
from .. import _utilities

__all__ = [
    'FirewallIPSetCidr',
    'FirewallLogRatelimit',
    'FirewallRulesRule',
    'FirewallSecurityGroupRule',
]

@pulumi.output_type
class FirewallIPSetCidr(dict):
    def __init__(__self__, *,
                 name: str,
                 comment: Optional[str] = None,
                 nomatch: Optional[bool] = None):
        pulumi.set(__self__, "name", name)
        if comment is not None:
            pulumi.set(__self__, "comment", comment)
        if nomatch is not None:
            pulumi.set(__self__, "nomatch", nomatch)

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

    @property
    @pulumi.getter
    def comment(self) -> Optional[str]:
        return pulumi.get(self, "comment")

    @property
    @pulumi.getter
    def nomatch(self) -> Optional[bool]:
        return pulumi.get(self, "nomatch")


@pulumi.output_type
class FirewallLogRatelimit(dict):
    def __init__(__self__, *,
                 burst: Optional[int] = None,
                 enabled: Optional[bool] = None,
                 rate: Optional[str] = None):
        if burst is not None:
            pulumi.set(__self__, "burst", burst)
        if enabled is not None:
            pulumi.set(__self__, "enabled", enabled)
        if rate is not None:
            pulumi.set(__self__, "rate", rate)

    @property
    @pulumi.getter
    def burst(self) -> Optional[int]:
        return pulumi.get(self, "burst")

    @property
    @pulumi.getter
    def enabled(self) -> Optional[bool]:
        return pulumi.get(self, "enabled")

    @property
    @pulumi.getter
    def rate(self) -> Optional[str]:
        return pulumi.get(self, "rate")


@pulumi.output_type
class FirewallRulesRule(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "securityGroup":
            suggest = "security_group"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in FirewallRulesRule. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        FirewallRulesRule.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        FirewallRulesRule.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 action: Optional[str] = None,
                 comment: Optional[str] = None,
                 dest: Optional[str] = None,
                 dport: Optional[str] = None,
                 enabled: Optional[bool] = None,
                 iface: Optional[str] = None,
                 log: Optional[str] = None,
                 macro: Optional[str] = None,
                 pos: Optional[int] = None,
                 proto: Optional[str] = None,
                 security_group: Optional[str] = None,
                 source: Optional[str] = None,
                 sport: Optional[str] = None,
                 type: Optional[str] = None):
        if action is not None:
            pulumi.set(__self__, "action", action)
        if comment is not None:
            pulumi.set(__self__, "comment", comment)
        if dest is not None:
            pulumi.set(__self__, "dest", dest)
        if dport is not None:
            pulumi.set(__self__, "dport", dport)
        if enabled is not None:
            pulumi.set(__self__, "enabled", enabled)
        if iface is not None:
            pulumi.set(__self__, "iface", iface)
        if log is not None:
            pulumi.set(__self__, "log", log)
        if macro is not None:
            pulumi.set(__self__, "macro", macro)
        if pos is not None:
            pulumi.set(__self__, "pos", pos)
        if proto is not None:
            pulumi.set(__self__, "proto", proto)
        if security_group is not None:
            pulumi.set(__self__, "security_group", security_group)
        if source is not None:
            pulumi.set(__self__, "source", source)
        if sport is not None:
            pulumi.set(__self__, "sport", sport)
        if type is not None:
            pulumi.set(__self__, "type", type)

    @property
    @pulumi.getter
    def action(self) -> Optional[str]:
        return pulumi.get(self, "action")

    @property
    @pulumi.getter
    def comment(self) -> Optional[str]:
        return pulumi.get(self, "comment")

    @property
    @pulumi.getter
    def dest(self) -> Optional[str]:
        return pulumi.get(self, "dest")

    @property
    @pulumi.getter
    def dport(self) -> Optional[str]:
        return pulumi.get(self, "dport")

    @property
    @pulumi.getter
    def enabled(self) -> Optional[bool]:
        return pulumi.get(self, "enabled")

    @property
    @pulumi.getter
    def iface(self) -> Optional[str]:
        return pulumi.get(self, "iface")

    @property
    @pulumi.getter
    def log(self) -> Optional[str]:
        return pulumi.get(self, "log")

    @property
    @pulumi.getter
    def macro(self) -> Optional[str]:
        return pulumi.get(self, "macro")

    @property
    @pulumi.getter
    def pos(self) -> Optional[int]:
        return pulumi.get(self, "pos")

    @property
    @pulumi.getter
    def proto(self) -> Optional[str]:
        return pulumi.get(self, "proto")

    @property
    @pulumi.getter(name="securityGroup")
    def security_group(self) -> Optional[str]:
        return pulumi.get(self, "security_group")

    @property
    @pulumi.getter
    def source(self) -> Optional[str]:
        return pulumi.get(self, "source")

    @property
    @pulumi.getter
    def sport(self) -> Optional[str]:
        return pulumi.get(self, "sport")

    @property
    @pulumi.getter
    def type(self) -> Optional[str]:
        return pulumi.get(self, "type")


@pulumi.output_type
class FirewallSecurityGroupRule(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "securityGroup":
            suggest = "security_group"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in FirewallSecurityGroupRule. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        FirewallSecurityGroupRule.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        FirewallSecurityGroupRule.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 action: Optional[str] = None,
                 comment: Optional[str] = None,
                 dest: Optional[str] = None,
                 dport: Optional[str] = None,
                 enabled: Optional[bool] = None,
                 iface: Optional[str] = None,
                 log: Optional[str] = None,
                 macro: Optional[str] = None,
                 pos: Optional[int] = None,
                 proto: Optional[str] = None,
                 security_group: Optional[str] = None,
                 source: Optional[str] = None,
                 sport: Optional[str] = None,
                 type: Optional[str] = None):
        if action is not None:
            pulumi.set(__self__, "action", action)
        if comment is not None:
            pulumi.set(__self__, "comment", comment)
        if dest is not None:
            pulumi.set(__self__, "dest", dest)
        if dport is not None:
            pulumi.set(__self__, "dport", dport)
        if enabled is not None:
            pulumi.set(__self__, "enabled", enabled)
        if iface is not None:
            pulumi.set(__self__, "iface", iface)
        if log is not None:
            pulumi.set(__self__, "log", log)
        if macro is not None:
            pulumi.set(__self__, "macro", macro)
        if pos is not None:
            pulumi.set(__self__, "pos", pos)
        if proto is not None:
            pulumi.set(__self__, "proto", proto)
        if security_group is not None:
            pulumi.set(__self__, "security_group", security_group)
        if source is not None:
            pulumi.set(__self__, "source", source)
        if sport is not None:
            pulumi.set(__self__, "sport", sport)
        if type is not None:
            pulumi.set(__self__, "type", type)

    @property
    @pulumi.getter
    def action(self) -> Optional[str]:
        return pulumi.get(self, "action")

    @property
    @pulumi.getter
    def comment(self) -> Optional[str]:
        return pulumi.get(self, "comment")

    @property
    @pulumi.getter
    def dest(self) -> Optional[str]:
        return pulumi.get(self, "dest")

    @property
    @pulumi.getter
    def dport(self) -> Optional[str]:
        return pulumi.get(self, "dport")

    @property
    @pulumi.getter
    def enabled(self) -> Optional[bool]:
        return pulumi.get(self, "enabled")

    @property
    @pulumi.getter
    def iface(self) -> Optional[str]:
        return pulumi.get(self, "iface")

    @property
    @pulumi.getter
    def log(self) -> Optional[str]:
        return pulumi.get(self, "log")

    @property
    @pulumi.getter
    def macro(self) -> Optional[str]:
        return pulumi.get(self, "macro")

    @property
    @pulumi.getter
    def pos(self) -> Optional[int]:
        return pulumi.get(self, "pos")

    @property
    @pulumi.getter
    def proto(self) -> Optional[str]:
        return pulumi.get(self, "proto")

    @property
    @pulumi.getter(name="securityGroup")
    def security_group(self) -> Optional[str]:
        return pulumi.get(self, "security_group")

    @property
    @pulumi.getter
    def source(self) -> Optional[str]:
        return pulumi.get(self, "source")

    @property
    @pulumi.getter
    def sport(self) -> Optional[str]:
        return pulumi.get(self, "sport")

    @property
    @pulumi.getter
    def type(self) -> Optional[str]:
        return pulumi.get(self, "type")


