Nodes

The nodes defined by the load balancer are responsible for servicing the requests received through the load balancer’s virtual IP. By default, the load balancer employs a basic health check that ensures the node is listening on its defined port. The node is checked at the time of addition and at regular intervals as defined by the load balancer health check configuration. If a back-end node is not listening on its port or does not meet the conditions of the defined active health check for the load balancer, then the load balancer does not forward connections and its status is listed as OFFLINE. Only nodes with a status of ONLINE can receive and service traffic from the load balancer.

All nodes have an associated condition that indicates whether the node is ENABLED, DISABLED, or DRAINING. Nodes that are in an ENABLED condition receive and can service traffic from the load balancer. The DISABLED condition represents a node that cannot accept or service traffic. A node in the DRAINING condition represents a node that stops the traffic manager from sending any additional new connections to the node, but honors established sessions. If the traffic manager receives a request and session persistence requires that the node is used, the traffic manager uses it. As mentioned earlier, the status is determined by the passive or active health monitors.

Note

Do not confuse the condition of a node with its status. The condition attribute is mutable and gives the user control on how to manage requests to the node. The status attribute is immutable and is updated by the load balancing service based on whether or not the node can service requests.

Table. Load balancer node conditions

Name

Description

ENABLED

Node is permitted to accept new connections.

DISABLED

Node is not permitted to accept any new connections regardless of session persistence configuration. Existing connections are forcibly terminated.

DRAINING

Node is allowed to service existing established connections and connections that are being directed to it as a result of the session persistence configuration.

A load balancer can have an associated algorithm. If the WEIGHTED_ROUND_ROBIN load balancer algorithm is selected, then the caller should assign the relevant weights to the node as part of the weight attribute of the node element. When the algorithm of the load balancer is changed to WEIGHTED_ROUND_ROBIN and the nodes do not already have an assigned weight, the service automatically sets the weight to 1 for all nodes. If the WEIGHTED_LEAST_CONNECTIONS load balancer algorithm is selected, each request is assigned to a node based on the number of concurrent connections to the node and its weight. For additional information about the load balancer algorithms, see Algorithms.

One or more secondary nodes can be added to a specified load balancer so that if all the primary nodes fail, traffic can be redirected to secondary nodes. The type attribute allows configuring the node as either PRIMARY or SECONDARY.

Note

The node’s IP and port are immutable attributes and cannot be modified with a PUT request. Supplying an unsupported attribute results in a 400 badRequest fault. A load balancer supports a maximum of 25 nodes. The maximum weight of a node is 100.

Every node in the load balancer has an associated condition which determines its role within the load balancer.

The following table lists the optional attributes.

Note

At least one of the optional attributes is required for the Update nodes request.

Table. Optional attributes

Name

Description

Required

condition

Condition for the node, which determines its role within the load balancer.

No

type

Type of node:

PRIMARY – Nodes defined as PRIMARY are in the normal rotation to receive traffic from the load balancer.

SECONDARY – Nodes defined as SECONDARY are only in the rotation to receive traffic from the load balancer when all the primary nodes fail. This provides a failover feature that automatically routes traffic to the secondary node in the event that the primary node is disabled or in a failing state. Note that active health monitoring must be enabled on the load balancer to enable the failover feature to the secondary node.

No

weight

Weight of node. If the WEIGHTED_ROUND_ROBIN load balancer algorithm is selected, then the user should assign the relevant weight to the node using the weight attribute for the node. Must be an integer from 1 to 100.

No

List nodes

GET /v1.0/{account}/loadbalancers/{loadBalancerId}/nodes

Lists nodes that are configured for a specified load balancer.

Note

The weight attributes are only displayed for load balancers that use the WEIGHTED_LEAST_CONNECTIONS or WEIGHTED_ROUND_ROBIN algorithms.

The following table shows the possible response codes for this operation:

Response Code

Name

Description

200

Success

Request succeeded.

400

Bad Request

The request is missing one or more elements, or the values of some elements are invalid.

401

Unauthorized

You are not authorized to complete this operation. This error can occur if the request is submitted with an invalid authentication token.

404

Not Found

The requested item was not found.

413

Over Limit

The number of items returned is above the allowed limit.

422

ImmutableEntity

This fault is returned when a user attempts to modify an item that is not currently in a state that allows modification. For example, load balancers in a status of PENDING_UPDATE,BUILD, or DELETED may not be modified.

500

Load Balancer Fault

The load balancer has experienced a fault.

503

Service Unavailable

The service is not available.

Request

The following table shows the URI parameters for the request:

Name

Type

Description

{account}

String

The ID for the tenant or account in a multi- tenancy cloud.

{loadBalancerId}

String

The ID for the load balancer.

This operation does not accept a request body.

Response

Example List nodes: JSON response

{
    "nodes": [
        {
            "id":410,
            "address":"10.1.1.1",
            "port":80,
            "condition":"ENABLED",
            "status":"ONLINE",
            "weight":3,
            "type":"PRIMARY"
        },
        {
            "id":411,
            "address":"10.1.1.2",
            "port":80,
            "condition":"ENABLED",
            "status":"ONLINE",
            "weight":8,
            "type":"SECONDARY"
        },
        {
            "id":412,
            "address":"10.1.1.3",
            "port":80,
            "condition":"DISABLED",
            "status":"ONLINE",
            "weight":12,
            "type":"SECONDARY"
        }
    ]
}

Example List nodes: XML response

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<nodes xmlns="http://docs.openstack.org/loadbalancers/api/v1.0">
    <node
        id="410"
        address="10.1.1.1"
        port="80"
        condition="ENABLED"
        status="ONLINE"
        weight="3"
        type="PRIMARY"/>
    <node
        id="411"
        address="10.1.1.2"
        port="80"
        condition="ENABLED"
        status="ONLINE"
        weight="8"
        type="SECONDARY"/>
    <node
        id="412"
        address="10.1.1.3"
        port="80"
        condition="DISABLED"
        status="ONLINE"
        weight="12"
        type="SECONDARY"/>
</nodes>

Example List nodes: ATOM/XML response

<?xml version='1.0' encoding='UTF-8'?>
<feed xmlns="http://www.w3.org/2005/Atom">
    <link rel="next" href="https://localhost/atom/1234567/loadbalancers/35/nodes.atom?page=2"/>
    <title type="text">Nodes Feed</title>
    <id>1234567-loadbalancers-35-nodes</id>
    <author>
        <name>Rackspace Cloud</name>
    </author>
    <entry>
        <title type="text">Node Successfully Updated</title>
        <summary type="text">Node successfully updated with address: '10.1.1.12', port: '80', weight: '59', condition: 'DISABLED'</summary>
        <author>
            <name>RackspaceDocs</name>
        </author>
        <link href="https://localhost/atom/1234567/loadbalancers/35/nodes/59"/>
        <id>5806065-loadbalancers-35-nodes-59-2020981342390</id>
        <category term="UPDATE"/>
        <updated>2020-04-07T18:42:39.000Z</updated>
    </entry>
    <entry>
        <title type="text">Node Successfully Created</title>
        <summary type="text">Node successfully created with address: '10.1.1.12', port: '80', condition: 'ENABLED', weight: '1'</summary>
        <author>
            <name>RackspaceDocs</name>
        </author>
        <link href="https://localhost/atom/1234567/loadbalancers/35/nodes/59"/>
        <id>5806065-loadbalancers-35-nodes-59-202098133120</id>
        <category term="CREATE"/>
        <updated>2020-04-07T18:03:12.000Z</updated>
    </entry>
</feed>

Add node

POST /v1.0/{account}/loadbalancers/{loadBalancerId}/nodes

Adds a node to a specified load balancer.

When a node is added, it is assigned a unique ID that can be used for management operations such as changing the condition or removing it. Every load balancer is dual-homed on both the public Internet and ServiceNet. That is, you may add public or ServiceNet nodes. As a result, nodes can either be internal ServiceNet addresses or addresses on the public Internet. The Virtual IP (or Virtual IPs) of the load balancer, however, can only be either public or ServiceNet.

One or more secondary nodes can be added to a specified load balancer so that if all the primary nodes fail, traffic can be redirected to secondary nodes. The type attribute enables configuring the node as either PRIMARY or SECONDARY.

Domain names are also accepted with certain restrictions. Refer to the List allowed domains operation for information about how to list the allowed names. Suppose that you want to add nodes to the load balancer before the services on those nodes are ready to serve traffic. As of right now, the default status for added nodes is ONLINE. The node’s status is an immutable attribute, and only health monitoring can change this attribute. So in order to prevent traffic from going to the node, but still allowing the health monitor to perform checks, you can add a node with a DRAINING condition. Once the back-end node is ready to serve traffic, you can then change the condition to ENABLED.

The following table shows the possible response codes for this operation:

Response Code

Name

Description

202

Success

Request succeeded.

400

Bad Request

The request is missing one or more elements, or the values of some elements are invalid.

401

Unauthorized

You are not authorized to complete this operation. This error can occur if the request is submitted with an invalid authentication token.

404

Not Found

The requested item was not found.

413

Over Limit

The number of items returned is above the allowed limit.

422

ImmutableEntity

This fault is returned when a user attempts to modify an item that is not currently in a state that allows modification. For example, load balancers in a status of PENDING_UPDATE,BUILD, or DELETED may not be modified.

500

Load Balancer Fault

The load balancer has experienced a fault.

503

Service Unavailable

The service is not available.

Request

The following table shows the URI parameters for the request:

Name

Type

Description

{account}

String

The ID for the tenant or account in a multi- tenancy cloud.

{loadBalancerId}

String

The ID for the load balancer.

The following table shows the body parameters for the nodes object for the request:

Parameter

Type

Description

address

String

The address of the node.

port

Integer

The port for the node.

condition

String

Indicates if the node is ENABLED, DISABLED, or DRAINING. For more information, see Nodes.

weight (Optional)

Integer

Indicates the weight for the node. You can specify weight even when the load balancer is not using a weighted algorithm (WEIGHTED_LEAST_CONNECTIONS or WEIGHTED_ROUND_ROBIN). When a load balancer is not using a weighted algorithm, a node’s weight is stored and ignored. However, if the load balancer is changed to a weighted algorithm, the weight is used. For more information, see Nodes.

type (Optional)

String

The node type. For more information, see Nodes.

Example Add node: JSON request

{"nodes": [
        {
            "address": "10.2.2.3",
            "port": 80,
            "condition": "ENABLED",
            "type":"PRIMARY"
        },
        {
            "address": "10.2.2.4",
            "port": 81,
            "condition": "ENABLED",
            "type":"SECONDARY"
        },
        {
            "address": "www.myrackspace.com",
            "port": 88,
            "condition": "ENABLED",
            "weight": 10,
            "type":"SECONDARY"
        }
    ]
}

Example Add node: XML request

<nodes xmlns="http://docs.openstack.org/loadbalancers/api/v1.0">
    <node address="10.1.1.1" port="80" condition="ENABLED" type="PRIMARY"/>
    <node address="10.2.2.1" port="80" condition="ENABLED" type="SECONDARY"/>
    <node address="www.myrackspace.com" port="88" condition="ENABLED" type="SECONDARY" weight="10"/>
</nodes>

Response

Example Add node: JSON response

{"nodes": [
    {
        "address": "10.2.2.3",
        "id": 185,
        "port": 80,
        "status": "ONLINE",
        "condition": "ENABLED",
        "weight": 1,
        "type":"PRIMARY"
    },
    {
        "address": "10.2.2.4",
        "id": 186,
        "port": 81,
        "status": "ONLINE",
        "condition": "ENABLED",
        "weight": 1,
        "type":"SECONDARY"
    },
    {
        "address": "www.myrackspace.com",
        "id": 186,
        "port": 88,
        "status": "ONLINE",
        "condition": "ENABLED",
        "weight": 10,
        "type":"SECONDARY"
    }
]
}

Example Add node: XML response

<nodes xmlns="http://docs.openstack.org/loadbalancers/api/v1.0">
    <node
        address="10.1.1.1"
        id="185"
        port="80"
        condition="ENABLED"
        status="ONLINE"
        weight="1"
        type="PRIMARY"/>
    <node
        address="10.2.2.1"
        id="186"
        port="80"
        condition="ENABLED"
        status="ONLINE"
        weight="1"
        type="SECONDARY"/>
    <node
        address="www.myrackspace.com"
        id="186"
        port="80"
        condition="ENABLED"
        status="ONLINE"
        weight="10"
        type="SECONDARY"/>
</nodes>

Bulk-delete nodes

DELETE /v1.0/{account}/loadbalancers/{loadBalancerId}/nodes

Bulk-deletes the specified nodes from a specified load balancer.

To bulk-delete nodes, provide a query parameter list of node IDs (for example: /nodes?id= nodeId & id= nodeId ). The current default limit is ten IDs per request. Any and all configuration data is immediately purged and is not recoverable.

This operation is an all or nothing proposition. If one or more of the items in the list cannot be removed due to their current status, a badRequest (400) is returned along with the IDs of the items the system identified as potential failures for this request. In this case, no nodes are deleted, and the user is notified with the specified ID(s) and related error message. Refer to the error response example shown below.

The following table shows the possible response codes for this operation:

Response Code

Name

Description

202

Success

Request succeeded.

400

Bad Request

The request is missing one or more elements, or the values of some elements are invalid.

401

Unauthorized

You are not authorized to complete this operation. This error can occur if the request is submitted with an invalid authentication token.

404

Not Found

The requested item was not found.

413

Over Limit

The number of items returned is above the allowed limit.

422

ImmutableEntity

This fault is returned when a user attempts to modify an item that is not currently in a state that allows modification. For example, load balancers in a status of PENDING_UPDATE,BUILD, or DELETED may not be modified.

500

Load Balancer Fault

The load balancer has experienced a fault.

503

Service Unavailable

The service is not available.

Request

The following table shows the URI parameters for the request:

Name

Type

Description

{account}

String

The ID for the tenant or account in a multi- tenancy cloud.

{loadBalancerId}

String

The ID for the load balancer.

The following table shows the query parameters for the request:

Name

Type

Description

nodeId

String

The ID for the specified node.

This operation does not accept a request body.

Response

Example Bulk-delete Nodes Error: JSON response

{
   "validationErrors":{
      "messages":[
         "Node ids 100 are not a part of your loadbalancer"
      ]
   },
   "message":"Validation Failure",
   "code":400,
   "details":"The object is not valid"
}

Show node details

GET /v1.0/{account}/loadbalancers/{loadBalancerId}/nodes/{nodeId}

Show details for a specified node.

Note

The weight attributes are only displayed for load balancers that use the WEIGHTED_LEAST_CONNECTIONS or WEIGHTED_ROUND_ROBIN algorithms.

The following table shows the possible response codes for this operation:

Response Code

Name

Description

200

Success

Request succeeded.

400

Bad Request

The request is missing one or more elements, or the values of some elements are invalid.

401

Unauthorized

You are not authorized to complete this operation. This error can occur if the request is submitted with an invalid authentication token.

404

Not Found

The requested item was not found.

413

Over Limit

The number of items returned is above the allowed limit.

422

ImmutableEntity

This fault is returned when a user attempts to modify an item that is not currently in a state that allows modification. For example, load balancers in a status of PENDING_UPDATE,BUILD, or DELETED may not be modified.

500

Load Balancer Fault

The load balancer has experienced a fault.

503

Service Unavailable

The service is not available.

Request

The following table shows the URI parameters for the request:

Name

Type

Description

{account}

String

The ID for the tenant or account in a multi- tenancy cloud.

{loadBalancerId}

String

The ID for the load balancer.

{nodeId}

String

The ID for the node.

This operation does not accept a request body.

Response

Example Show node details: JSON response

{"node": {
        "id":410,
        "address":"10.1.1.1",
        "port":80,
        "condition":"ENABLED",
        "status":"ONLINE",
        "weight":12,
        "type":"PRIMARY"
    }
}

Example Show node details: XML response

<node
    id="410"
    address="10.1.1.1"
    port="80"
    condition="ENABLED"
    status="ONLINE"
    weight="12"
    type="PRIMARY"/>

Example Show atom node details: ATOM/XML response

<?xml version='1.0' encoding='UTF-8'?>
<feed xmlns="http://www.w3.org/2005/Atom">
    <link rel="next"
          href="https://ord.loadbalancers.api.rackspacecloud.com/v1.0/1234/loadbalancers/141/nodes/18536.atom?page=2"/>
    <title type="text">Node Feed</title>
    <id>1234-loadbalancers-141-nodes-18536</id>
    <author>
        <name>Rackspace Cloud</name>
    </author>
    <entry>
        <title type="text">Node Status Updated</title>
        <summary type="text">Node '18536' status changed to 'OFFLINE' for load balancer '141'</summary>
        <author>
            <name>Rackspace Cloud</name>
        </author>
        <link href="https://ord.loadbalancers.api.rackspacecloud.com/v1.0/1234/loadbalancers/141/nodes/18536"/>
        <id>1234-loadbalancers-141-nodes-18536-201195217490</id>
        <category term="UPDATE"/>
        <updated>2011-04-05T21:07:49.000Z</updated>
    </entry>
</feed>

Update node

PUT /v1.0/{account}/loadbalancers/{loadBalancerId}/nodes/{nodeId}

Updates the configuration for a specified node on a specified load balancer.

Note

The node’s IP, port, and status are immutable attributes and cannot be modified with a PUT request. Supplying an unsupported attribute results in a 400 (badRequest) fault. A load balancer supports a maximum of 25 nodes; the maximum weight of a node is 100.

Suppose you want to add nodes to the load balancer before the services on those nodes are ready to serve traffic. As of right now, the default status for added nodes is ONLINE. To get the nodes added without having them serve traffic, you can add a node with a DRAINING condition, which will prevent traffic from going to the node, but still allow the health monitor to perform checks. Once the backend node is ready to serve traffic, you can change the condition to ENABLED.

Every node in the load balancer has an associated condition which determines its role within the load balancer.

The following table shows the possible response codes for this operation:

Response Code

Name

Description

202

Success

Request succeeded.

400

Bad Request

The request is missing one or more elements, or the values of some elements are invalid.

401

Unauthorized

You are not authorized to complete this operation. This error can occur if the request is submitted with an invalid authentication token.

404

Not Found

The requested item was not found.

413

Over Limit

The number of items returned is above the allowed limit.

422

ImmutableEntity

This fault is returned when a user attempts to modify an item that is not currently in a state that allows modification. For example, load balancers in a status of PENDING_UPDATE,BUILD, or DELETED may not be modified.

500

Load Balancer Fault

The load balancer has experienced a fault.

503

Service Unavailable

The service is not available.

Request

The following table shows the URI parameters for the request:

Name

Type

Description

{account}

String

The ID for the tenant or account in a multi- tenancy cloud.

{loadBalancerId}

String

The ID for the load balancer.

{nodeId}

String

The ID for the node.

The following table shows the body parameters for the node object for the request.

Note

At least one* of the optional parameters listed in the table is required.

Parameter

Type

Description

condition (Optional)

String

Indicates if the node is ENABLED, DISABLED, or DRAINING. For more information, see Nodes.

weight (Optional)

Integer

Indicates the weight for the node. You can specify weight or change weight for an existing node even when the load balancer is not using a weighted algorithm (WEIGHTED_LEAST_CONNECTIONS or WEIGHTED_ROUND_ROBIN). When a load balancer is not using a weighted algorithm, a node’s weight is stored and ignored. However, if the load balancer is changed to a weighted algorithm, the weight is used. For more information, see Nodes.

type (Optional)

String

The node type. For more information, see Nodes.

Example Update node: JSON request

{"node":{
        "condition": "ENABLED",
        "weight": 59
    }
}

Example Update node: XML request

<node xmlns="http://docs.openstack.org/loadbalancers/api/v1.0" condition="ENABLED" weight="12"/>

Response

This operation does not return a response body.

Delete node

DELETE /v1.0/{account}/loadbalancers/{loadBalancerId}/nodes/{nodeId}

Deletes a node from a specified load balancer.

To bulk-delete nodes, provide a query parameter list of node IDs, for example: /nodes?id= nodeId & id= nodeId ). The current default limit is ten IDs per request. Any and all configuration data is immediately purged and is not recoverable. If one of the items in the list cannot be removed due to its current status a 400:BadRequest is returned along with the IDs of the ones the system identified as potential failures for this request.

The following table shows the possible response codes for this operation:

Response Code

Name

Description

202

Success

Request succeeded.

400

Bad Request

The request is missing one or more elements, or the values of some elements are invalid.

401

Unauthorized

You are not authorized to complete this operation. This error can occur if the request is submitted with an invalid authentication token.

404

Not Found

The requested item was not found.

413

Over Limit

The number of items returned is above the allowed limit.

422

ImmutableEntity

This fault is returned when a user attempts to modify an item that is not currently in a state that allows modification. For example, load balancers in a status of PENDING_UPDATE,BUILD, or DELETED may not be modified.

500

Load Balancer Fault

The load balancer has experienced a fault.

503

Service Unavailable

The service is not available.

Request

The following table shows the URI parameters for the request:

Name

Type

Description

{account}

String

The ID for the tenant or account in a multi- tenancy cloud.

{loadBalancerId}

String

The ID for the load balancer.

{nodeId}

String

The ID for the node.

This operation does not accept a request body.

Response

This operation does not return a response body.

List node service events

GET /v1.0/{account}/loadbalancers/{loadBalancerId}/nodes/events

Lists node service events.

Lists events associated with the activity between the node and the load balancer. The events report errors found with the node. The detailedMessage provides the detailed reason for the error. The events can be processed as JSON, XML, and ATOM. This call has pagination and a list limit of 100 events. Events are stored for 90 days.

The following table shows the possible response codes for this operation:

Response Code

Name

Description

200

Success

Request succeeded.

400

Bad Request

The request is missing one or more elements, or the values of some elements are invalid.

401

Unauthorized

You are not authorized to complete this operation. This error can occur if the request is submitted with an invalid authentication token.

404

Not Found

The requested item was not found.

413

Over Limit

The number of items returned is above the allowed limit.

422

ImmutableEntity

This fault is returned when a user attempts to modify an item that is not currently in a state that allows modification. For example, load balancers in a status of PENDING_UPDATE,BUILD, or DELETED may not be modified.

500

Load Balancer Fault

The load balancer has experienced a fault.

503

Service Unavailable

The service is not available.

Request

The following table shows the URI parameters for the request:

Name

Type

Description

{account}

String

The ID for the tenant or account in a multi- tenancy cloud.

{loadBalancerId}

String

The ID for the load balancer.

This operation does not accept a request body.

Response

Example List node service events: JSON response

{"nodeServiceEvents":[
    {
        "nodeId": 489709,
        "detailedMessage": "Response didn't match before 'max_response_len' limit was met (2048 bytes)",
        "callbackHost": "ztm-n03.staging1.lbaas.rackspace.net",
        "accountId": 6242798,
        "loadbalancerId": 315115,
        "severity": "INFO",
        "author": "Rackspace Cloud",
        "created": "2019-10-25T17:50:10Z",
        "category": "UPDATE",
        "relativeUri": "/6242798/loadbalancers/315115/nodes/489709/events",
        "description": "Node '489709' status changed to 'OFFLINE' for load balancer '315115'",
        "title": "Node Status Updated",
        "id": 81679,
        "type": "UPDATE_NODE"
    },
    {
        "nodeId": 489709,
        "detailedMessage": "Response didn't match before 'max_response_len' limit was met (2048 bytes)",
        "callbackHost": "ztm-n03.staging1.lbaas.rackspace.net",
        "accountId": 6242798,
        "loadbalancerId": 315115,
        "severity": "INFO",
        "author": "Rackspace Cloud",
        "created": "2019-10-25T20:43:17Z",
        "category": "UPDATE",
        "relativeUri": "/6242798/loadbalancers/315115/nodes/489709/events",
        "description": "Node '489709' status changed to 'OFFLINE' for load balancer '315115'",
        "title": "Node Status Updated",
        "id": 81721,
        "type": "UPDATE_NODE"
    }
],
"links": []
}

Example List node service events: XML response

<nodeServiceEvents xmlns="http://docs.openstack.org/loadbalancers/api/v1.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <nodeServiceEvent nodeId="489709" detailedMessage="Invalid HTTP response received; premature end of headers" callbackHost="ztm-n03.staging1.lbaas.rackspace.net"
    id="81013" loadbalancerId="315115" accountId="6242798" author="Rackspace Cloud" title="Node Status Updated" description="Node '489709' status changed to 'OFFLINE'
    for load balancer '315115'" type="UPDATE_NODE" category="UPDATE" severity="INFO" relativeUri="/6242798/loadbalancers/315115/nodes/489709/events" created="2019-10-17T17:04:42Z"/>
    <nodeServiceEvent nodeId="489709" detailedMessage="Node is working" callbackHost="ztm-n03.staging1.lbaas.rackspace.net" id="81016" loadbalancerId="315115"
    accountId="6242798" author="Rackspace Cloud" title="Node Status Updated" description="Node '489709' status changed to 'ONLINE' for load balancer '315115'"
    type="UPDATE_NODE" category="UPDATE" severity="INFO" relativeUri="/6242798/loadbalancers/315115/nodes/489709/events" created="2019-10-17T17:08:50Z"/>
</nodeServiceEvents>

Example List node service events: ATOM response

<feed xmlns="http://www.w3.org/2005/Atom">
    <link rel="next" href="https://staging.ord.loadbalancers.api.rackspacecloud.com/v1.0/6242798/loadbalancers/315115/nodes/events.atom?page=2"/>
    <title type="text">Node Service Feed</title>
    <id>6242798-loadbalancers-315115-nodeservice</id>
    <author>
        <name>Rackspace Cloud</name>
    </author>
    <entry>
        <title type="text">Node Status Updated</title>
        <summary type="text">Node '489709' status changed to 'OFFLINE' for load balancer '315115'</summary>
        <author>
            <name>Rackspace Cloud</name>
        </author>
        <link href="https://staging.ord.loadbalancers.api.rackspacecloud.com/v1.0/6242798/loadbalancers/315115/nodes/489709/events"/>
        <id>6242798-loadbalancers-315115-nodes-489709-events-2019290174420</id>
        <category term="UPDATE"/>
        <updated>2019-10-17T17:04:42.000Z</updated>
        <content type="text">Details: Invalid HTTP response received; premature end of headers
Callback Host: ztm-n03.staging1.lbaas.rackspace.net</content>
    </entry>
    <entry>
        <title type="text">Node Status Updated</title>
        <summary type="text">Node '489709' status changed to 'ONLINE' for load balancer '315115'</summary>
        <author>
            <name>Rackspace Cloud</name>
        </author>
        <link href="https://staging.ord.loadbalancers.api.rackspacecloud.com/v1.0/6242798/loadbalancers/315115/nodes/489709/events"/>
        <id>6242798-loadbalancers-315115-nodes-489709-events-2019290178500</id>
        <category term="UPDATE"/>
        <updated>2019-10-17T17:08:50.000Z</updated>
        <content type="text">Details: Node is working
Callback Host: ztm-n03.staging1.lbaas.rackspace.net</content>
    </entry>
</feed>