Endpoint¶
pynautobot.core.endpoint
¶
pynautobot.core.endpoint.DetailEndpoint
¶
Bases: object
Enables read/write Operations on detail endpoints.
Endpoints like available-ips
that are detail routes off
traditional endpoints are handled with this class.
create(data=None, api_version=None)
¶
The write operation for a detail endpoint.
Creates objects on a detail endpoint in Nautobot.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
data |
dict or list
|
A dictionary containing the key/value pairs of the items you're creating on the parent object. Defaults to an empty dict, which will create a single item with default values. |
None
|
api_version |
str
|
Override default or globally set Nautobot REST API version for this single request. |
None
|
Returns:
Type | Description |
---|---|
Union[Dict, List[Dict]]: A dictionary or list of dictionaries representing the items created in Nautobot. |
list(api_version=None, **kwargs)
¶
The view operation for a detail endpoint.
Returns the response from Nautobot for a detail endpoint.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
api_version |
str
|
Override default or globally set Nautobot REST API version for this single request. |
None
|
**kwargs |
Key/value pairs that get converted into URL parameters when passed to the endpoint.
E.g. |
{}
|
Returns:
Type | Description |
---|---|
Union[Dict, List[Dict]]: A dictionary or list of dictionaries retrieved from Nautobot. |
pynautobot.core.endpoint.Endpoint
¶
Bases: object
Represent actions available on endpoints in the Nautobot API.
Takes name
and app
passed from App()
and builds the correct
URL to make queries to and the proper Response object to return
results in.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
api |
object
|
Takes |
required |
app |
object
|
Takes |
required |
name |
str
|
Name of endpoint passed to |
required |
model |
object
|
Custom model for given app. |
None
|
Note
In order to call Nautobot endpoints with dashes in their
names you should convert the dash to an underscore.
(E.g. querying the ip-addresses endpoint is done with
nb.ipam.ip_addresses.all()
.)
all(api_version=None)
¶
Queries the 'ListView' of a given endpoint.
Returns all objects from an endpoint.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
api_version |
str
|
Override default or globally-set Nautobot REST API version for this single request. |
None
|
Returns:
Name | Type | Description |
---|---|---|
list |
List of :py:class: |
Examples:
bulk_update(objects)
¶
This method is called from the update() method if a bulk update is detected.
Allows for bulk updating of existing objects on an endpoint. Objects is a list which contain either JSON/dicts or Record derived objects, which contain the updates to apply. If JSON/dicts are used, then the id of the object must be included.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
objects |
list
|
A list of dicts or a list of Record. |
required |
choices(api_version=None)
¶
Returns all choices from the endpoint.
The returned dict is also saved in the endpoint object (in
_choices
attribute) so that later calls will return the same data
without recurring requests to Nautobot. When using .choices()
in
long-running applications, consider restarting them whenever Nautobot is
upgraded, to prevent using stale choices data.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
api_version |
str
|
Override default or globally-set Nautobot REST API version for this single request. |
None
|
Returns:
Name | Type | Description |
---|---|---|
dict |
Dict containing the available choices. |
Example (from Nautobot 2.8.x): >>> from pprint import pprint >>> pprint(nb.ipam.ip_addresses.choices()) {'role': [{'display_name': 'Loopback', 'value': 'loopback'}, {'display_name': 'Secondary', 'value': 'secondary'}, {'display_name': 'Anycast', 'value': 'anycast'}, {'display_name': 'VIP', 'value': 'vip'}, {'display_name': 'VRRP', 'value': 'vrrp'}, {'display_name': 'HSRP', 'value': 'hsrp'}, {'display_name': 'GLBP', 'value': 'glbp'}, {'display_name': 'CARP', 'value': 'carp'}], 'status': [{'display_name': 'Active', 'value': 'active'}, {'display_name': 'Reserved', 'value': 'reserved'}, {'display_name': 'Deprecated', 'value': 'deprecated'}, {'display_name': 'DHCP', 'value': 'dhcp'}]}
count(*args, api_version=None, **kwargs)
¶
Returns the count of objects in a query.
Takes named arguments that match the usable filters on a given endpoint. If an argument is passed then it's used as a freeform search argument if the endpoint supports it. If no arguments are passed the count for all objects on an endpoint are returned.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
*args |
str
|
Freeform search string that's accepted on given endpoint. |
()
|
**kwargs |
str
|
Any search argument the endpoint accepts can be added as a keyword arg. |
{}
|
api_version |
str
|
Override default or globally-set Nautobot REST API version for this single request. |
None
|
Returns:
Name | Type | Description |
---|---|---|
int |
Integer with count of objects returned by query. |
Examples:
To return a count of objects matching a named argument filter.
To return a count of objects on an entire endpoint.
create(*args, api_version=None, **kwargs)
¶
Creates an object on an endpoint.
Allows for the creation of new objects on an endpoint. Named arguments are converted to JSON properties, and a single object is created. Nautobot's bulk creation capabilities can be used by passing a list of dictionaries as the first argument.
Note
Any positional arguments will supersede named ones.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
*args |
list
|
A list of dictionaries containing the properties of the objects to be created. |
()
|
**kwargs |
str
|
Key/value strings representing properties on a JSON object. |
{}
|
api_version |
str
|
Override default or globally-set Nautobot REST API version for this single request. |
None
|
Returns:
Type | Description |
---|---|
Union[Record, List[Record]]: A list or single :py:class: |
Examples:
Creating an object on the devices
endpoint you can look up a
device_role's name with:
Use bulk creation by passing a list of dictionaries:
delete(objects)
¶
Bulk deletes objects on an endpoint.
Allows for batch deletion of multiple objects from a single endpoint.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
objects |
list
|
A list of either IDs or Records to delete. |
required |
Returns:
Name | Type | Description |
---|---|---|
bool |
True if bulk DELETE operation was successful. |
Examples:
Deleting all devices
:
Use bulk deletion by passing a list of IDs:
>>> pynautobot.dcim.devices.delete([
... "db8770c4-61e5-4999-8372-e7fa576a4f65",
... "e9b5f2e0-4f20-41ad-9179-90a4987f743e"
... ])
Use bulk deletion to delete objects e.g. when filtering
on a custom_field
:
filter(*args, api_version=None, **kwargs)
¶
Queries the 'ListView' of a given endpoint.
Takes named arguments that match the usable filters on a given endpoint. If an argument is passed then it's used as a freeform search argument if the endpoint supports it.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
*args |
str
|
Freeform search string that's accepted on given endpoint. |
()
|
**kwargs |
str
|
Any search argument the endpoint accepts can be added as a keyword arg. |
{}
|
api_version |
str
|
Override default or globally-set Nautobot REST API version for this single request. |
None
|
Returns:
Name | Type | Description |
---|---|---|
list |
A list of :py:class: |
Examples:
To return a list of objects matching a named argument filter.
>>> nb.dcim.devices.filter(role='leaf-switch')
[test1-a3-tor1b, test1-a3-tor1c, test1-a3-tor1d, test1-a3-tor2a]
Using a freeform query along with a named argument.
>>> nb.dcim.devices.filter('a3', role='leaf-switch')
[test1-a3-tor1b, test1-a3-tor1c, test1-a3-tor1d, test1-a3-tor2a]
Chaining multiple named arguments.
Passing a list as a named argument adds multiple filters of the same value.
get(*args, **kwargs)
¶
Queries the DetailsView of a given endpoint.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
key |
int
|
ID for the item to be retrieved. |
required |
**kwargs |
str
|
Accepts the same keyword args as filter(). Any search argument the endpoint accepts can be added as a keyword arg. |
{}
|
api_version |
str
|
Override default or globally-set Nautobot REST API version for this single request. |
required |
Returns:
Type | Description |
---|---|
Union[Record, None]: A single :py:class: |
Raises:
Type | Description |
---|---|
ValueError
|
If kwarg search returns more than one value. |
Examples:
Referencing with a kwarg that only returns one value.
Referencing with an id.
update(*args, **kwargs)
¶
Update a single resource with a dictionary or bulk update a list of objects.
Allows for bulk updating of existing objects on an endpoint. Objects is a list which contain either JSON/dicts or Record derived objects, which contain the updates to apply. If JSON/dicts are used, then the id of the object must be included.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
*args |
list
|
A list of dicts or a list of Record. |
()
|
**kwargs |
str
|
See Below. |
{}
|
Returns:
Type | Description |
---|---|
Union[Record, List[Record]]: A list or single :py:class: |
Examples:
Accepts the id of the object that needs to be updated as well as a dictionary of k/v pairs used to update an object.
>>> nb.dcim.devices.update(id="0238a4e3-66f2-455a-831f-5f177215de0f", data={
... "name": "test",
... "serial": "1234",
... "location": "9b1f53c7-89fa-4fb2-a89a-b97364fef50c",
... })
Use bulk update by passing a list of dicts:
>>> devices = nb.dcim.devices.update([
... {'id': "db8770c4-61e5-4999-8372-e7fa576a4f65", 'name': 'test'},
... {'id': "e9b5f2e0-4f20-41ad-9179-90a4987f743e", 'name': 'test2'},
... ])
Use bulk update by passing a list of Records:
pynautobot.core.endpoint.JobsEndpoint
¶
Bases: Endpoint
Extend Endpoint class to support run method only for jobs.
run(*args, api_version=None, **kwargs)
¶
Runs a job based on the class_path provided to the job.
Takes a kwarg of class_path
or job_id
to specify the job that should be run.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
*args |
str
|
Freeform search string that's accepted on given endpoint. |
()
|
**kwargs |
str
|
Any search argument the endpoint accepts can be added as a keyword arg. |
{}
|
api_version |
str
|
Override default or globally-set Nautobot REST API version for this single request. |
None
|
Returns:
Name | Type | Description |
---|---|---|
obj |
Job details: job_result object uuid found at |
Examples:
To run a job for verifying hostnames: