Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Status: Complete

Sponsor User: IBM

Date of Submission:  

Submitted by: David Booz (booz@us.ibm.com)

Affiliation(s): IBM

<Please fill out the above fields, and the Overview, Design and User Experience sections below for an initial review of the proposed feature.>

Scope and Signoff: (to be filled out by Chair)

Overview

<Briefly describe the problem being solved, not how the problem is solved, just focus on the problem. Think about why the feature is needed, and what is the relevant context to understand the problem.>

...

To create, modify and delete HA Groups, use the following commands:

hzn exchange hagroup create <name> --nodeId node1 --nodeId node2 [ --nodeId node3 ]

hzn exchange hagroup update <name> --nodeId node1 --nodeId node2 [ --nodeId node3 ]

hzn exchange hagroup delete <name>

hzn exchange hagroup list [ <name> ]


To check if a service will be deployed to all nodes in an HA Group, we need a new flag on the command. This flag will cause the command to retrieve the list of nodes in the HA group and compare them all against the policy inputs:

hzn deploycheck --checkHA


External Components

<Describe any new or changed interactions with components that are not the agent or the management hub.>

...

The HA Group object schema:

{
"name": "hagroup name",
"members": [ "node1234", ... ],
}

...

    "updated": <update time stamp>
}


Create a new node group. The caller must have permission to modify all the nodes listed in the body (shown above). The Exchange will set a reference to this object onto all the node resources listed in the body. The Exchange will return an error (409) if one of the nodes is already in an hagroup. To remove a node from a group, use the PUT API to provide the list of nodes that should be in the group.

POST /org/<org>/hagrouphagroups


Modify the group membership of an existing group. All the desired members of the group MUST be listed in the body. This API behaves like a full replace.

PUT /org/<org>/hagrouphagroups


List all the hagroups.

GET /org/<org>/hagrouphagroups


List all members of an hagroup.

GET /org/<org>/hagrouphagroups/<name>


Delete an hagroup.

DELETE /org/<org>/hagroup/<name>hagroups/<name>


Node Resource:

In addition to the new hagroup resource, the node resource is also extended with a new field called "ha_group" that contains a reference to the HA group in which this node is a member. This field is updated for all nodes in an HA group when a new HA group is created, updated or deleted. Updates to this field are atomic with updates to the hagroup resource.


Agbot APIs

To tell the Agbot that the node is ready to upgrade the agent.

...