Skip to content

Internal DNS Servers Configuration Object

Manages internal DNS server objects for domain name resolution in Palo Alto Networks Strata Cloud Manager.

Class Overview

The InternalDnsServers class inherits from BaseObject and provides CRUD operations for internal DNS server configurations.

Methods

Method Description Parameters Return Type
create() Creates a new internal DNS server object data: Dict[str, Any] InternalDnsServersResponseModel
get() Retrieves a DNS server by ID object_id: str InternalDnsServersResponseModel
update() Updates an existing DNS server dns_server: InternalDnsServersUpdateModel InternalDnsServersResponseModel
delete() Deletes a DNS server object_id: str None
list() Lists DNS servers with filtering name: str, **filters List[InternalDnsServersResponseModel]
fetch() Gets DNS server by name name: str InternalDnsServersResponseModel

Model Attributes

Attribute Type Required Default Description
name str Yes None Name of the DNS server (max 63 chars)
id UUID Yes* None Unique identifier (*response only)
domain_name List[str] Yes None List of DNS domain names
primary IPvAnyAddress Yes None IP address of the primary DNS server
secondary IPvAnyAddress No None IP address of the secondary DNS server

* Only required for response models

Exceptions

Exception HTTP Code Description
InvalidObjectError 400 Invalid DNS server data or format
MissingQueryParameterError 400 Missing required parameters
ObjectNotPresentError 404 DNS server not found
AuthenticationError 401 Authentication failed
ServerError 500 Internal server error

Basic Configuration

from scm.client import Scm

client = Scm(
    client_id="your_client_id",
    client_secret="your_client_secret",
    tsg_id="your_tsg_id"
)

dns_servers = client.internal_dns_server

Methods

List Internal DNS Servers

all_dns_servers = client.internal_dns_server.list()

for dns in all_dns_servers:
    print(f"Name: {dns.name}, Primary DNS: {dns.primary}")

Filtering responses:

# Filter by name
filtered_dns_servers = client.internal_dns_server.list(name="main")

# Filter by primary IP address
primary_ip_filter = client.internal_dns_server.list(primary="192.168.1.10")

# Combine multiple filters
combined_filter = client.internal_dns_server.list(
    primary="192.168.1.10",
    domain_name="example"
)

Controlling pagination with max_limit:

client.internal_dns_server.max_limit = 4000

all_dns_servers = client.internal_dns_server.list()

Fetch an Internal DNS Server

dns_server = client.internal_dns_server.fetch(name="main-dns-server")
print(f"Found DNS server: {dns_server.name}")
print(f"Domain names: {dns_server.domain_name}")

Create an Internal DNS Server

dns_server_config = {
    "name": "main-dns-server",
    "domain_name": ["example.com", "internal.example.com"],
    "primary": "192.168.1.10",
    "secondary": "192.168.1.11"
}
dns_server = client.internal_dns_server.create(dns_server_config)
print(f"Created DNS server: {dns_server.name} with ID: {dns_server.id}")

Update an Internal DNS Server

existing_dns_server = client.internal_dns_server.fetch(name="main-dns-server")

existing_dns_server.domain_name = ["example.com", "internal.example.com", "new-domain.example.com"]
existing_dns_server.secondary = "192.168.1.12"

updated_dns_server = client.internal_dns_server.update(existing_dns_server)

Delete an Internal DNS Server

client.internal_dns_server.delete("123e4567-e89b-12d3-a456-426655440000")

Get an Internal DNS Server by ID

dns_server_by_id = client.internal_dns_server.get("123e4567-e89b-12d3-a456-426655440000")
print(f"Retrieved DNS server: {dns_server_by_id.name}")

Use Cases

Committing Changes

result = client.commit(
    description="Updated internal DNS servers",
    sync=True,
    timeout=300
)
print(f"Commit job ID: {result.job_id}")

Monitoring Jobs

job_status = client.get_job_status(result.job_id)
print(f"Job status: {job_status.data[0].status_str}")

recent_jobs = client.list_jobs(limit=10)
for job in recent_jobs.data:
    print(f"Job {job.id}: {job.type_str} - {job.status_str}")

Error Handling

from scm.exceptions import (
    InvalidObjectError,
    MissingQueryParameterError,
    ObjectNotPresentError
)

try:
    dns_config = {
        "name": "test-dns-server",
        "domain_name": ["example.com"],
        "primary": "192.168.1.10"
    }
    new_dns_server = client.internal_dns_server.create(dns_config)

except InvalidObjectError as e:
    print(f"Invalid DNS server data: {e.message}")
except ObjectNotPresentError as e:
    print(f"DNS server not found: {e.message}")
except MissingQueryParameterError as e:
    print(f"Missing parameter: {e.message}")