[ClusterLabs] Fence Agents Format

Oyvind Albrigtsen oalbrigt at redhat.com
Mon Jul 10 05:41:10 EDT 2023


On 10/07/23 12:00 +0300, Or Raz wrote:
>Hi all,
>My team has been working on a new operator which uses some of your Fence
>Agents (FA, i.e. fence_aws, fence_ipmilan, and etc.) to remediate an
>unhealthy Kubernetes node (see fence-agents-remediation
><https://github.com/medik8s/fence-agents-remediation>).
>After looking on the recommended attributes for new FAs
><https://github.com/ClusterLabs/fence-agents/blob/main/doc/FenceAgentAPI.md#attribute-specifications>,
>and the valid *action *attribute values
><https://github.com/ClusterLabs/fence-agents/blob/main/doc/FenceAgentAPI.md#agent-operations-and-return-values>
>,
>I have some questions on the structure/format of the FAs command attributes
>and their responses:
>
>   1. Will running a fence-agent without mentioning the action field will
>   always choose the *reboot* option (e.g. the following call will reboot
>   the node "fence_aws --access-key ACCESS_KEY --secret-key SECRET_KEY --plug
>   i-INSTANCE_ID --region AWS_REGION")?
That's the default, yeah. It's probably due to some earlier Pacemaker
versions not specifying action, so we avoid breaking the agents on
those versions by defaulting to the reboot-action.
>   2. Are there any must-have fields which are shared between all the FAs
>   that you support? I assume the answer is no, since I didn't see any must
>   fields which are mutual between *fence_aws*, and *fence_ipmilan* for
>   instance. A must field is a field which is required for running the FA
>   (e.g. *access-key* for *fence_aws)*.
That depends on what kind of agent it is, so e.g. http(s) agents or
similar will require url and other parameters that are needed.

You can find a list of default/other groups of parameters depending on
agent when you add them via device_opt = [] here:
https://github.com/ClusterLabs/fence-agents/blob/main/lib/fencing.py.py#L492

and full list of common parameters:
https://github.com/ClusterLabs/fence-agents/blob/main/lib/fencing.py.py#L36
>   3. Do the result responses to the FA are identical per action? E.g. For
>   the *reboot* action, I have seen that on success I always receive
>   `Success: Rebooted` for fence_aws, and fence_ipmilan. I am an
>   uncertain whether that is correct for all the FAs.
They should, but you should use the return code to check the result.
https://github.com/ClusterLabs/fence-agents/blob/main/lib/fencing.py.py#L20-L32

You can run "echo $?" to show the result after running e.g. fence_aws
-o reboot manually to see which rc it returns, and use incorrect
credentials or similar to see the difference in rc when it fails.


Oyvind
>
>Best regards,
>*OR*

>_______________________________________________
>Manage your subscription:
>https://lists.clusterlabs.org/mailman/listinfo/users
>
>ClusterLabs home: https://www.clusterlabs.org/



More information about the Users mailing list