Skip to main content

BGP Routing Configuration Object

Manages BGP routing singleton configuration for controlling global routing preferences in Palo Alto Networks Strata Cloud Manager.

Class Overview

The BGPRouting class inherits from BaseObject and provides methods for retrieving, creating, updating, and resetting the BGP routing configuration. BGP routing is a singleton configuration object that controls global routing preferences and behaviors for Service Connections.

Methods

MethodDescriptionParametersReturn Type
get()Retrieves current BGP routing settingsNoneBGPRoutingResponseModel
create()Creates a new BGP routing configurationdata: Dict[str, Any]BGPRoutingResponseModel
update()Updates existing BGP routing configurationdata: Dict[str, Any]BGPRoutingResponseModel
delete()Resets BGP routing configuration to defaultsNoneNone

Model Attributes

AttributeTypeRequiredDefaultDescription
routing_preferenceUnion[DefaultRoutingModel, HotPotatoRoutingModel]NoNoneRouting preference (default or hot potato)
backbone_routingBackboneRoutingEnumNoNoneControls asymmetric routing options
accept_route_over_SCboolNoNoneWhether to accept routes over service connections
outbound_routes_for_servicesList[str]No[]Outbound routes for services in CIDR format
add_host_route_to_ike_peerboolNoNoneWhether to add host route to IKE peer
withdraw_static_routeboolNoNoneWhether to withdraw static routes
note

All fields are optional. For update operations, at least one field must be specified.

Exceptions

ExceptionHTTP CodeDescription
InvalidObjectError400/500Invalid routing configuration or format
MissingQueryParameterError400Empty configuration data provided

Basic Configuration

from scm.client import Scm

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

bgp_routing = client.bgp_routing

Methods

Get BGP Routing Settings

current_settings = client.bgp_routing.get()

print(f"Backbone routing: {current_settings.backbone_routing}")
print(f"Accept route over SC: {current_settings.accept_route_over_SC}")

if hasattr(current_settings.routing_preference, "default"):
print("Routing preference: Default")
elif hasattr(current_settings.routing_preference, "hot_potato_routing"):
print("Routing preference: Hot Potato")

if current_settings.outbound_routes_for_services:
print(f"Outbound routes: {', '.join(current_settings.outbound_routes_for_services)}")

Create a BGP Routing Configuration

from scm.models.deployment import BackboneRoutingEnum

# Since BGP routing is a singleton, this replaces any existing configuration
bgp_config = {
"routing_preference": {"hot_potato_routing": {}},
"backbone_routing": BackboneRoutingEnum.ASYMMETRIC_ROUTING_WITH_LOAD_SHARE,
"accept_route_over_SC": True,
"outbound_routes_for_services": ["10.0.0.0/8", "172.16.0.0/12"],
"add_host_route_to_ike_peer": True,
"withdraw_static_route": False
}
new_settings = client.bgp_routing.create(bgp_config)

Update a BGP Routing Configuration

from scm.models.deployment import BackboneRoutingEnum

# Update using dictionary
update_config = {
"routing_preference": {"default": {}},
"backbone_routing": BackboneRoutingEnum.NO_ASYMMETRIC_ROUTING,
"accept_route_over_SC": False,
"outbound_routes_for_services": ["192.168.0.0/16"],
"add_host_route_to_ike_peer": False,
"withdraw_static_route": True
}
updated_settings = client.bgp_routing.update(update_config)

# Update using Pydantic model
from scm.models.deployment import BGPRoutingUpdateModel, HotPotatoRoutingModel

update_model = BGPRoutingUpdateModel(
routing_preference=HotPotatoRoutingModel(),
backbone_routing=BackboneRoutingEnum.ASYMMETRIC_ROUTING_ONLY,
accept_route_over_SC=True
)
model_dict = update_model.model_dump(exclude_unset=True)
updated_settings = client.bgp_routing.update(model_dict)

Delete (Reset) BGP Routing Configuration

# Reset BGP routing configuration to default values
client.bgp_routing.delete()

# Verify reset
reset_settings = client.bgp_routing.get()
print(f"Backbone routing: {reset_settings.backbone_routing}")

Use Cases

Committing Changes

result = client.commit(
folders=["All"],
description="Updated BGP routing configuration",
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
)

try:
routing_config = {
"routing_preference": {"default": {}},
"backbone_routing": "invalid-value",
"accept_route_over_SC": False
}
new_routing = client.bgp_routing.create(routing_config)

except InvalidObjectError as e:
print(f"Invalid BGP routing configuration: {e.message}")
except MissingQueryParameterError as e:
print(f"Missing required parameter: {e.message}")