Pulp Nodes¶
Pulp Nodes management is performed using the platform REST API. This document identifies the specific APIs and defines the data values needed for each call. For more information on Nodes concepts, see the Pulp User Guide.
Activation¶
Activation is stored as a note on the consumer.
Activate¶
To activate a consumer as a child node, add a special note to the consumer using the consumer update API.
Notes:
- _child-node
The value
true
indicates the consumer is a child node.- _node-update-strategy
The value specifies the node-level synchronization strategy.
Sample POST body:
{
"delta": {
"notes": {
"_child-node": true,
"_node-update-strategy": "additive"
}
}
}
Deactivate¶
To deactivate a child node, remove the special notes from the consumer using the consumer update API.
Sample POST body:
{
"delta": {
"notes": {
"_child-node": null,
"_node-update-strategy": null
}
}
}
Repositories¶
Enabling¶
Repositories are enabled for use with child nodes by associating the Nodes distributor with
the repository using the distributor association API.
The distributor_type_id
is nodes_http_distributor
.
Sample POST body:
{
"distributor_id": "nodes_http_distributor",
"distributor_type_id": "nodes_http_distributor",
"distributor_config": {},
"auto_publish": true
}
Disabling¶
Repositories are disabled for use with child nodes by disassociating the Nodes distributor and
the repository using the distributor disassociation API.
The distributor_id
in the URL is nodes_http_distributor
.
Publishing¶
Manually publishing the Nodes data necessary for child node synchronization can be done using the repository publish API.
Sample POST body:
{"override_config": {}, "id": "nodes_http_distributor"}
Binding¶
Bind¶
Binding a child node to a repository can be done using the bind API. In the POST body,
the notify_agent
must be set to false
because node bindings do not require agent
participation. The binding_config
can be used to specify the repository-level
synchronization strategy. The default is additive
if not specified.
Sample POST body:
{
"notify_agent": false,
"binding_config": {"strategy": "additive"},
"repo_id": "elmer",
"distributor_id": "nodes_http_distributor"
}
Unbind¶
Unbinding a child node from a repository can be done using the unbind API.
The distributor_id
in the URL is nodes_http_distributor
.
Synchronization¶
The synchronization of a child node is seen by the parent server as a content update on a consumer. In this case, the consumer is a child node.
Run¶
An immediate synchronization of a child node can be initiated using the
content update API. In the POST body, an array of (1) unit with type_id
of
node
and unit_key
of null
is specified.
Sample POST body:
{
"units": [{"type_id": "node", "unit_key": null}],
"options": {}
}
To skip the repository synchronization phase of the update, specify the skip_content_update
option
with a value of true
.
Sample POST body:
{
"units": [{"type_id": "node", "unit_key": null}],
"options": {"skip_content_update": true}
}
To synchronize individual repositories, use the type_id
of repository
and specify the
repository ID using the repo_id
keyword in the unit_key
.
Sample POST body:
{
"units": [{"type_id": "repository", "unit_key": {"repo_id": "abc"}}],
"options": {}
}