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}")