Filtering conditions

Operator

Description

==

Case insensitive match with pattern.

!=

Does not match with pattern (case insensitive).

=@

Pattern found in object value (case insensitive).

!@

Pattern not found in object value (case insensitive).

<=

Value must be less than or equal to pattern.

<

Value must be less than pattern.

.>=

Value must be greater than or equal to pattern.

.>

Value must be greater than pattern.

Usage

"""Filtering conditions api/v2/cmdb/firewall/address

- Create addresses: `ADDRESS_0`, `ADDRESS_1`, `ADDRESS_2`
- Get all addresses without filtering
- Filter address that is equal to `ADDRESS_0`
- Filter addresses that are not equal to `ADDRESS_0`
- Filter addresses that start with `ADDRESS_`
- Filter addresses that do not start with `ADDRESS_`
- Delete addresses that start with `ADDRESS_`
- Check addresses have been deleted
"""

import logging

from fortigate_api import FortiOS

logging.getLogger().setLevel(logging.DEBUG)

HOST = "host"
USERNAME = "username"
PASSWORD = "password"

api = FortiOS(host=HOST, username=USERNAME, password=PASSWORD)

# Create addresses: `ADDRESS_0`, `ADDRESS_1`, `ADDRESS_2`
for idx in range(3):
    data = {
        "name": f"ADDRESS_{idx}",
        "obj-type": "ip",
        "subnet": f"127.0.0.10{idx} 255.255.255.255",
        "type": "ipmask",
    }
    response = api.cmdb.firewall.address.create(data=data)
    print("address.create", response)  # address.create <Response [200]>

# Get all addresses without filtering
items = api.cmdb.firewall.address.get()
print(f"addresses count={len(items)}")  # addresses count=16

# Filter address that is equal to `ADDRESS_0`
items = api.cmdb.firewall.address.get(filter="==ADDRESS_0")
print(f"addresses count={len(items)}")  # addresses count=1

# Filter addresses that are not equal to `ADDRESS_0`
items = api.cmdb.firewall.address.get(filter="!=ADDRESS_0")
print(f"addresses count={len(items)}")  # addresses count=15

# Filter addresses that start with `ADDRESS_`
items = api.cmdb.firewall.address.get(filter="=@ADDRESS_")
print(f"addresses count={len(items)}")  # addresses count=3

# Filter addresses that do not start with `ADDRESS_`
items = api.cmdb.firewall.address.get(filter="!@ADDRESS_")
print(f"addresses count={len(items)}")  # addresses count=13

# Delete addresses that start with `ADDRESS_`
response = api.cmdb.firewall.address.delete(filters=["=@ADDRESS_"])
print("address.delete", response)  # address.delete <Response [200]>

# Check addresses have been deleted
items = api.cmdb.firewall.address.get(filter="=@ADDRESS_")
print(f"addresses count={len(items)}")  # addresses count=0