from a10sdk.common.A10BaseClass import A10BaseClass


class Inside(A10BaseClass):
    
    """Class Description::
    Fixed NAT Inside Users.

    Class inside supports CRUD Operations and inherits from `common/A10BaseClass`.
    This class is the `"PARENT"` class for this module.`

    :param iplist_list: {"minItems": 1, "items": {"type": "iplist"}, "uniqueItems": true, "array": [{"required": ["inside-ip-list", "partition"], "properties": {"ports-per-user": {"description": "Configure Ports per Inside User (ports-per-user)", "format": "number", "type": "number", "maximum": 64512, "minimum": 1, "optional": true}, "vrid": {"description": "VRRP-A vrid (Specify ha VRRP-A vrid)", "format": "number", "type": "number", "maximum": 31, "minimum": 1, "optional": true}, "nat-end-address": {"optional": true, "type": "string", "description": "IPv4 End NAT Address", "format": "ipv4-address"}, "partition": {"description": "Inside User Partition (Partition Name)", "partition-visibility": "shared", "minLength": 1, "format": "string", "optional": false, "maxLength": 63, "type": "string"}, "nat-netmask": {"optional": true, "type": "string", "description": "NAT Addresses IP Netmask", "format": "ipv4-netmask"}, "inside-ip-list": {"description": "Name of IP List used to specify Inside Users", "format": "string-rlx", "minLength": 1, "optional": false, "maxLength": 63, "type": "string"}, "session-quota": {"description": "Configure per user quota on sessions", "format": "number", "type": "number", "maximum": 2147483647, "minimum": 1, "optional": true}, "usable-nat-ports": {"type": "object", "properties": {"usable-start-port": {"description": "Start Port of Usable NAT Ports", "minimum": 1024, "type": "number", "maximum": 65535, "format": "number"}, "usable-end-port": {"description": "End Port of Usable NAT Ports", "minimum": 1024, "type": "number", "maximum": 65535, "format": "number"}}}, "nat-start-address": {"optional": true, "type": "string", "description": "Start NAT Address", "format": "ipv4-address"}, "nat-ip-list": {"description": "Name of IP List used to specify NAT addresses", "format": "string-rlx", "minLength": 1, "optional": true, "maxLength": 63, "type": "string"}, "offset": {"type": "object", "properties": {"numeric-offset": {"description": "Configure a numeric offset to the first NAT IP address", "format": "number", "default": 0, "maximum": 1024000, "minimum": 0, "not": "random", "type": "number"}, "random": {"default": 0, "not": "numeric-offset", "type": "number", "description": "Randomly choose the first NAT IP address", "format": "flag"}}}, "respond-to-user-mac": {"default": 0, "optional": true, "type": "number", "description": "Use the user's source MAC for the next hop rather than the routing table (Default: off)", "format": "flag"}, "method": {"description": "'use-all-nat-ips': Use all the NAT IP addresses configured; 'use-least-nat-ips': Use the least number of NAT IP addresses required (default); ", "format": "enum", "default": "use-least-nat-ips", "type": "string", "enum": ["use-all-nat-ips", "use-least-nat-ips"], "optional": true}, "dest-rule-list": {"description": "Bind destination based Rule-List (Fixed NAT Rule-List Name)", "format": "string", "minLength": 1, "optional": true, "maxLength": 63, "type": "string"}, "dynamic-pool-size": {"description": "Configure size of Dynamic pool (Default: 0)", "format": "number", "default": 0, "optional": true, "maximum": 64511, "minimum": 0, "type": "number"}}}], "type": "array", "$ref": "/axapi/v3/cgnv6/fixed-nat/inside/iplist/{inside-ip-list}+{partition}"}
    :param ipv4address_list: {"minItems": 1, "items": {"type": "ipv4address"}, "uniqueItems": true, "array": [{"required": ["inside-start-address", "inside-end-address", "inside-netmask", "partition"], "properties": {"ports-per-user": {"description": "Configure Ports per Inside User (ports-per-user)", "format": "number", "type": "number", "maximum": 64512, "minimum": 1, "optional": true}, "vrid": {"description": "VRRP-A vrid (Specify ha VRRP-A vrid)", "format": "number", "type": "number", "maximum": 31, "minimum": 1, "optional": true}, "inside-netmask": {"optional": false, "type": "string", "description": "IPv4 Netmask", "format": "ipv4-netmask-brief"}, "nat-end-address": {"optional": true, "type": "string", "description": "IPv4 End NAT Address", "format": "ipv4-address"}, "usable-nat-ports": {"type": "object", "properties": {"usable-start-port": {"description": "Start Port of Usable NAT Ports", "minimum": 1024, "type": "number", "maximum": 65535, "format": "number"}, "usable-end-port": {"description": "End Port of Usable NAT Ports", "minimum": 1024, "type": "number", "maximum": 65535, "format": "number"}}}, "partition": {"description": "Inside User Partition (Partition Name)", "partition-visibility": "shared", "minLength": 1, "format": "string", "optional": false, "maxLength": 63, "type": "string"}, "nat-netmask": {"optional": true, "type": "string", "description": "NAT Addresses IP Netmask", "format": "ipv4-netmask-brief"}, "session-quota": {"description": "Configure per user quota on sessions", "format": "number", "type": "number", "maximum": 2147483647, "minimum": 1, "optional": true}, "method": {"description": "'use-all-nat-ips': Use all the NAT IP addresses configured; 'use-least-nat-ips': Use the least number of NAT IP addresses required (default); ", "format": "enum", "default": "use-least-nat-ips", "type": "string", "enum": ["use-all-nat-ips", "use-least-nat-ips"], "optional": true}, "inside-start-address": {"optional": false, "type": "string", "description": "IPv4 Inside User Start Address", "format": "ipv4-address"}, "nat-start-address": {"optional": true, "type": "string", "description": "Start NAT Address", "format": "ipv4-address"}, "nat-ip-list": {"description": "Name of IP List used to specify NAT addresses", "format": "string-rlx", "minLength": 1, "optional": true, "maxLength": 63, "type": "string"}, "offset": {"type": "object", "properties": {"numeric-offset": {"description": "Configure a numeric offset to the first NAT IP address", "format": "number", "default": 0, "maximum": 1024000, "minimum": 0, "not": "random", "type": "number"}, "random": {"default": 0, "not": "numeric-offset", "type": "number", "description": "Randomly choose the first NAT IP address", "format": "flag"}}}, "respond-to-user-mac": {"default": 0, "optional": true, "type": "number", "description": "Use the user's source MAC for the next hop rather than the routing table (Default: off)", "format": "flag"}, "inside-end-address": {"optional": false, "type": "string", "description": "IPv4 Inside User End Address", "format": "ipv4-address"}, "dest-rule-list": {"description": "Bind destination based Rule-List (Fixed NAT Rule-List Name)", "format": "string", "minLength": 1, "optional": true, "maxLength": 63, "type": "string"}, "dynamic-pool-size": {"description": "Configure size of Dynamic pool (Default: 0)", "format": "number", "default": 0, "optional": true, "maximum": 64511, "minimum": 0, "type": "number"}}}], "type": "array", "$ref": "/axapi/v3/cgnv6/fixed-nat/inside/ipv4address/{inside-start-address}+{inside-end-address}+{inside-netmask}+{partition}"}
    :param ipv6address_list: {"minItems": 1, "items": {"type": "ipv6address"}, "uniqueItems": true, "array": [{"required": ["inside-start-address", "inside-end-address", "inside-netmask", "partition"], "properties": {"ports-per-user": {"description": "Configure Ports per Inside User (ports-per-user)", "format": "number", "type": "number", "maximum": 64512, "minimum": 1, "optional": true}, "vrid": {"description": "VRRP-A vrid (Specify ha VRRP-A vrid)", "format": "number", "type": "number", "maximum": 31, "minimum": 1, "optional": true}, "inside-netmask": {"description": "Inside User IPv6 Netmask", "format": "number", "type": "number", "maximum": 128, "minimum": 64, "optional": false}, "nat-end-address": {"optional": true, "type": "string", "description": "IPv6 End NAT Address", "format": "ipv4-address"}, "usable-nat-ports": {"type": "object", "properties": {"usable-start-port": {"description": "Start Port of Usable NAT Ports", "minimum": 1024, "type": "number", "maximum": 65535, "format": "number"}, "usable-end-port": {"description": "End Port of Usable NAT Ports", "minimum": 1024, "type": "number", "maximum": 65535, "format": "number"}}}, "partition": {"description": "Inside User Partition (Partition Name)", "partition-visibility": "shared", "minLength": 1, "format": "string", "optional": false, "maxLength": 63, "type": "string"}, "nat-netmask": {"optional": true, "type": "string", "description": "NAT Addresses IP Netmask", "format": "ipv4-netmask-brief"}, "session-quota": {"description": "Configure per user quota on sessions", "format": "number", "type": "number", "maximum": 2147483647, "minimum": 1, "optional": true}, "method": {"description": "'use-all-nat-ips': Use all the NAT IP addresses configured; 'use-least-nat-ips': Use the least number of NAT IP addresses required (default); ", "format": "enum", "default": "use-least-nat-ips", "type": "string", "enum": ["use-all-nat-ips", "use-least-nat-ips"], "optional": true}, "inside-start-address": {"optional": false, "type": "string", "description": "IPv6 Inside User Start Address", "format": "ipv6-address"}, "nat-start-address": {"optional": true, "type": "string", "description": "Start NAT Address", "format": "ipv4-address"}, "nat-ip-list": {"description": "Name of IP List used to specify NAT addresses", "format": "string-rlx", "minLength": 1, "optional": true, "maxLength": 63, "type": "string"}, "offset": {"type": "object", "properties": {"numeric-offset": {"description": "Configure a numeric offset to the first NAT IP address", "format": "number", "default": 0, "maximum": 1024000, "minimum": 0, "not": "random", "type": "number"}, "random": {"default": 0, "not": "numeric-offset", "type": "number", "description": "Randomly choose the first NAT IP address", "format": "flag"}}}, "respond-to-user-mac": {"default": 0, "optional": true, "type": "number", "description": "Use the user's source MAC for the next hop rather than the routing table (Default: off)", "format": "flag"}, "inside-end-address": {"optional": false, "type": "string", "description": "IPv6 Inside User End Address", "format": "ipv6-address"}, "dest-rule-list": {"description": "Bind destination based Rule-List (Fixed NAT Rule-List Name)", "format": "string", "minLength": 1, "optional": true, "maxLength": 63, "type": "string"}, "dynamic-pool-size": {"description": "Configure size of Dynamic pool (Default: 0)", "format": "number", "default": 0, "optional": true, "maximum": 64511, "minimum": 0, "type": "number"}}}], "type": "array", "$ref": "/axapi/v3/cgnv6/fixed-nat/inside/ipv6address/{inside-start-address}+{inside-end-address}+{inside-netmask}+{partition}"}
    :param DeviceProxy: The device proxy for REST operations and session handling. Refer to `common/device_proxy.py`

    

    URL for this object::
    `https://<Hostname|Ip address>//axapi/v3/cgnv6/fixed-nat/inside`.

    

    
    """
    def __init__(self, **kwargs):
        self.ERROR_MSG = ""
        self.required=[]
        self.b_key = "inside"
        self.a10_url="/axapi/v3/cgnv6/fixed-nat/inside"
        self.DeviceProxy = ""
        self.iplist_list = []
        self.ipv4address_list = []
        self.ipv6address_list = []

        for keys, value in kwargs.items():
            setattr(self,keys, value)


