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": {}
}