DNS, DHCP & IP Address Management appliances
For Microsoft DNS & DHCP servers
For open source DNS & DHCP servers
Cloud-based visualization of analytics across DDI architecture
Manage multi-vendor cloud DNS servers centrally
RIR Declaration Management and Automation
Automated network device configuration and management
Centralized visibility over all your clouds
A single source of truth for your network automation
Why DDI is an Obvious Starting Point
DNS Threat Intelligence for proactive defense
Intelligence Insights for Threat Detection and Investigation
Adaptive DNS security for service continuity and data protection
Improve Application Access Control to prevent spread of attacks
Protect users and block DNS-based malware activity
Carrier-grade DNS DDoS attack protection
Optimize application delivery performance from the edge
for Proactive Network Security
Visibility, analytics and micro segmentation for effective Zero Trust strategy
Enable work from anywhere by controlling access, security and data privacy
Simplify management and control costs across AWS, Azure and GCP environments
Policy enforcement, risk management, and automation for simplifying compliance
Risk-free migration to reduce DDI complexity and cost
Move risk-free to improve performance, security and costs
Automate management, unify control and strengthen security of connected devices
Protect your network against all DNS attacks, data exfiltration and ransomware
Enable zero touch operations for network management and security
Improve resiliency, deployment velocity and user experience for SD-WAN projects
Integrated DNS, DHCP, IPAM services to simplify, automate and secure your network.
Simplify design, deployment and management of critical DDI services for telcos
Optimize administration and security of critical DDI services for healthcare
Simplify and automate management of critical DDI services for finance
Simplify and automate management of critical DDI services for higher education
Simplify and automate management of critical DDI services for retail
Simplify Management and Automation for Network Operations Teams
Elevate SecOps Efficiency by Simplifying Threat Response
Enable DevOps practices to deliver consistent network operations.
Open architecture for DDI integration
Technology partnerships for network security & management ecosystems
Extend security perimeters and strengthen network defenses
Submit requests for temporary licenses
Submit access requests for EfficientIP knowledge platforms
Submit membership requests for EfficientIP Community
Strengthen your network security with insights from the Forrester 2025 Study on DNS Security.
Customer-centric DDI project delivery and training
Acquire the skills needed to manage EfficientIP SOLIDserverâ„¢
Identify vulnerabilities with an assessment of your DNS traffic
Test your protection against data breaches via DNS
Dedicated representation for your organization inside EfficientIP
Explore content which helps manage and automate your network and cloud operations
Read content which strengthens protection of your network, apps, users and data
Learn how to enhance your app delivery performance to improve resilience and UX
See all your assets in one place
This enterprise-grade cloud platform allows you to improve visibility, enhance operational efficiency, and optimize network performance effortlessly.
Who we are and what we do
Meet the team of leaders guiding our global growth
Technology partnerships for network security and management ecosystems
Make your cloud projects successful with insights from the 2025 EMA Hybrid Multi-cloud Report.
Discover the benefits of the SmartPartner global channel program
Become a part of the innovation
The latest updates, release information, and global events
Python network automation should use objects when workflows depend on resource state, relationships, or lifecycle operations, and direct REST APIs for focused, stateless tasks. A hybrid architecture keeps both approaches available so each operation uses the clearer abstraction.
September 10, 2026 | Written by: Andreas Taudte | Network Automation
Summary
Tags
DDIInfrastructure as CodeNetDevOpsPythonREST APISOLIDserver
Python network automation often begins with a small script that sends a request, receives JSON, and applies a change. That model is effective for focused tasks. As automation expands into service portals, CI/CD pipelines, provisioning systems, and workflow engines, the code also has to coordinate state, relationships, policy, retries, and verification.In the real world, a maintainable network automation architecture must separate business intent from transport details. A Python API integration may begin with one API call, but larger automation workflows need reusable policy, predictable error handling, and a reliable view of network infrastructure.The important architectural question is therefore not whether objects or REST APIs are universally better. It is where each approach reduces complexity and makes the intended operation easier to understand.EfficientIP’s 2019 introduction to the SOLIDserver Python library described both direct service mapping and an advanced object model. This article focuses on the broader design decision. The object-oriented DDI automation solution note provides the detailed SOLIDserver implementation.
A REST API exposes operations offered by a remote system. A Python object represents a concept inside the automation application. Those are related, but they are not the same thing.REST API automation sends HTTP requests to an API endpoint and interprets the requests and responses. A client typically manages the base URL, authentication, query parameters or POST requests, each returned status code, and the retrieved data. This visibility is useful, but repeating the same transport logic across many workflows can obscure the operational intent.An API request may ask a platform to list interfaces, update a route, create an address object, or return utilization data. The request is explicit and usually maps closely to the platform’s service model. This makes direct calls easy to trace and useful when the application needs one well-defined operation.Object-oriented Python instead groups data and behavior around a resource such as a device, interface, network, zone, policy, or cloud segment. The object can retain an identifier and current state, expose validation, represent relationships, and provide lifecycle methods such as create, refresh, update, or delete.The object approach becomes valuable when a workflow performs several related actions. Without it, identifiers, validation rules, response parsing, and relationship logic can spread across many functions. With it, the application can reason about a resource rather than repeatedly reconstructing its context.Neither approach removes the underlying API. The choice concerns how much of the remote service model should be translated into the application’s domain model.
Simplify & Secure Your Network
Our goal is to help companies face the challenges of modern infrastructures and digital transformation.
Objects are usually the clearer choice when the automation needs to:
For example, a device object could retain the device identifier, load its current interfaces, validate a proposed change, and apply an update. The calling workflow does not need to pass the same identifiers and context through every function.
A direct call is often clearer when the automation needs to:
Direct API requests are particularly useful when a monitoring or reporting task needs fresh operational information in real time. Most network management web services already expose focused search, list, and reporting operations for that purpose.Creating an object for every row returned by a reporting query may add work without adding meaning. In that case, a single filtered request and a normalized response can be the simpler design.
Most mature integrations need both patterns. A workflow may use objects to manage resources with state and relationships, then use a direct API call to retrieve a filtered report or invoke a specialized function. A shared session can centralize authentication, TLS settings, timeouts, retries, and error handling for both.This principle applies whether the client is an open source library, a vendor SDK, or an internally developed service layer. The hybrid model avoids two unhelpful extremes: forcing every operation into an object hierarchy, or leaving all domain logic scattered across raw request functions.
Use these questions when deciding how to represent an operation.
Prefer an object when later actions depend on information loaded or created earlier. A resource instance provides a clear place for the identifier, current state, and relevant behavior.
Objects help when the workflow must express containment, ownership, dependencies, or hierarchy. Examples include a network inside a routing domain, an interface on a device, or a policy attached to a group.
A direct REST call is often sufficient for counts, search, inventory, reporting, and narrowly scoped actions. Wrapping the request may make the code longer without improving its intent.
Keep a direct-call escape hatch. It allows automation to use newly introduced or uncommon endpoints without waiting for a new object wrapper.
An object, service class, or reusable wrapper becomes valuable when multiple workflows repeat the same validation, state transitions, or error handling. Reuse—not the existence of an endpoint—is the stronger reason to add an abstraction.
A maintainable design separates four concerns:
The following illustrative pseudocode shows the separation:
api = ApiSession(configuration) resource = NetworkResource(api=api, resource_id=resource_id) resource.refresh() resource.apply(desired_state) report = api.query( "filtered_inventory", params=filters, )
The object handles a stateful resource operation. The direct query handles a filtered result set. Both use the same connection and transport controls.Well-designed automation solutions keep these layers observable without exposing transport details throughout the business logic. Validation and approval gates can reduce human error before a write reaches the target platform, while logs give network operations teams enough context to troubleshoot failures.This separation also improves automation testing. Domain behavior can be tested with mocked API responses, while a smaller set of integration tests verifies the actual service contracts. Workflow tests can then focus on policy and sequencing rather than low-level HTTP details.
An object method that simply renames an API operation may not provide a useful abstraction. Add a wrapper when it centralizes validation, state, relationships, error handling, or repeated logic.
Network automation still depends on distributed systems. Rate limits, asynchronous processing, partial failures, and API-specific errors do not disappear because the code uses objects. Preserve enough information for troubleshooting and audit.
A local object is a representation of remote state at a point in time. Long-running workflows should define when to refresh state, how to detect conflicts, and what to do when another process changes the resource.
Keep business rules in one deliberate layer. If both the workflow and every object independently implement the same selection or approval logic, behavior becomes harder to test and change.
DDI provides a useful example because network spaces, subnets, addresses, DNS zones, and records have identifiable state and relationships. An object model can represent those resources, while direct API calls remain useful for filtered inventory, reporting, verification, or specialized services.The SOLIDserver Python implementation uses this hybrid structure. The SOLIDserverRest project provides direct API mapping, while its advanced model adds resource-oriented classes.The detailed code, methods, provisioning sequence, and operational considerations belong in the object-oriented DDI automation solution note. The SOLIDserver Python automation demo shows the workflow in action, and the Python demonstration scripts on GitHub provide the corresponding reference code.More broadly, the SOLIDserver API for IT automation enables DDI operations to participate in service portals, orchestration, infrastructure provisioning, and other ecosystem workflows.
Python network automation does not need to choose between object-oriented code and direct REST APIs. Objects are well suited to resources whose state, relationships, and lifecycle matter. Direct calls remain efficient for focused, filtered, specialized, or newly introduced operations.The strongest architecture keeps both options available behind consistent transport and operational controls. Teams can then add abstractions where they improve reuse and clarity, while retaining direct API access where an additional object layer would add little value.
No. Object-oriented code is most useful when the workflow manages resource state, relationships, validation, or several lifecycle operations. A direct API request may be clearer for a small, focused, or infrequently used task.
Yes. A shared API session can support resource objects and direct service calls in the same workflow. This keeps authentication and transport controls consistent while allowing each operation to use the clearer abstraction.
Create an abstraction when several workflows repeat the same validation, policy, state handling, response normalization, or error logic. Repetition and domain meaning are stronger signals than the mere existence of an API endpoint.
Explore the product-specific implementation with SOLIDserverRest.adv, including resource objects, direct API access, and policy-controlled DDI workflows.
Talk to an expert
Summarize
Networks
Explore content highlighting the value EfficientIP solutions bring to your network