Skip to main 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

MethodDescriptionParametersReturn Type
create()Creates a new internal DNS server objectdata: Dict[str, Any]InternalDnsServersResponseModel
get()Retrieves a DNS server by IDobject_id: strInternalDnsServersResponseModel
update()Updates an existing DNS serverdns_server: InternalDnsServersUpdateModelInternalDnsServersResponseModel
delete()Deletes a DNS serverobject_id: strNone
list()Lists DNS servers with filteringname: str, **filtersList[InternalDnsServersResponseModel]
fetch()Gets DNS server by namename: strInternalDnsServersResponseModel

Model Attributes

AttributeTypeRequiredDefaultDescription
namestrYesNoneName of the DNS server (max 63 chars)
idUUIDYes*NoneUnique identifier (*response only)
domain_nameList[str]YesNoneList of DNS domain names
primaryIPvAnyAddressYesNoneIP address of the primary DNS server
secondaryIPvAnyAddressNoNoneIP address of the secondary DNS server

* Only required for response models

Exceptions

ExceptionHTTP CodeDescription
InvalidObjectError400Invalid DNS server data or format
MissingQueryParameterError400Missing required parameters
ObjectNotPresentError404DNS server not found
AuthenticationError401Authentication failed
ServerError500Internal 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}")