# IPaddr2

CONFIG
	Agent IPaddr2
	AgentRoot /usr/lib/ocf/resource.d/heartbeat
	HangTimeout 20

SETUP-AGENT
	ip addr add 192.168.144.1/24 dev eth0 brd 192.168.144.255

CLEANUP-AGENT
	ip addr del 192.168.144.1/24 dev eth0

CASE-BLOCK required_args
	Env OCF_RESKEY_ip=192.168.144.2

CASE-BLOCK check_iflabel_assigned
	Bash ip -4 -o addr show eth0 | grep -w 192.168.144.2/24 | grep -w eth0:iflabel >/dev/null # checking iflabel was assigned correctly

CASE-BLOCK check_iflabel_removed
	Bash ! ip -4 -o addr show eth0 | grep -w 192.168.144.2/24 | grep -w eth0:iflabel >/dev/null # checking iflabel was removed correctly

CASE-BLOCK default_status
	AgentRun stop

CASE-BLOCK prepare
	Include required_args
	Include default_status

CASE "check base env"
	Include prepare
	AgentRun start OCF_SUCCESS

CASE "check base env: unset 'OCF_RESKEY_ip'"
	Include prepare
	Unenv OCF_RESKEY_ip
	AgentRun start OCF_ERR_CONFIGURED

CASE "check base env: set invalid 'OCF_RESKEY_ip'"
	Include prepare
	Env OCF_RESKEY_ip=not_ip_address
	AgentRun start OCF_ERR_CONFIGURED

CASE "check base env: set 'OCF_RESKEY_cidr_netmask'"
	Include prepare
	Env OCF_RESKEY_cidr_netmask=24
	AgentRun start OCF_SUCCESS

CASE "check base env: set invalid 'OCF_RESKEY_cidr_netmask'"
	Include prepare
	Env OCF_RESKEY_cidr_netmask=not_netmask
	AgentRun start OCF_ERR_CONFIGURED

CASE "check base env: set 'OCF_RESKEY_broadcast'"
	Include prepare
	Env OCF_RESKEY_broadcast=192.168.144.255
	AgentRun start OCF_SUCCESS

CASE "check base env: set invalid 'OCF_RESKEY_broadcast'"
	Include prepare
	Env OCF_RESKEY_broadcast=not_broadcast
	AgentRun start OCF_ERR_CONFIGURED

CASE "check base env: set 'OCF_RESKEY_nic'"
	Include prepare
	Env OCF_RESKEY_nic=eth0
	AgentRun start OCF_SUCCESS

CASE "check base env: set invalid 'OCF_RESKEY_nic'"
	Include prepare
	Env OCF_RESKEY_nic=not_nic
	AgentRun start OCF_ERR_CONFIGURED

CASE "normal start"
	Include prepare
	AgentRun start OCF_SUCCESS

CASE "normal stop"
	Include prepare
	AgentRun start
	AgentRun stop OCF_SUCCESS

CASE "double start"
	Include prepare
	AgentRun start
	AgentRun start OCF_SUCCESS

CASE "double stop"
	Include prepare
	AgentRun stop OCF_SUCCESS

CASE "monitor with running"
	Include prepare
	AgentRun start
	AgentRun monitor OCF_SUCCESS

CASE "monitor with not running"
	Include prepare
	AgentRun monitor OCF_NOT_RUNNING

CASE "unimplemented command"
	Include prepare
	AgentRun no_cmd OCF_ERR_UNIMPLEMENTED

CASE "Attachment to loopback interface"
	Env OCF_RESKEY_ip=127.0.0.3
	AgentRun start OCF_SUCCESS
	AgentRun monitor OCF_SUCCESS
	AgentRun stop OCF_SUCCESS

CASE "check additional env: set 'OCF_RESKEY_iflabel'"
	Include prepare
	Env OCF_RESKEY_nic=eth0
	Env OCF_RESKEY_iflabel=iflabel
	AgentRun start OCF_SUCCESS
	Include check_iflabel_assigned
	AgentRun stop OCF_SUCCESS
	Include check_iflabel_removed

# This is deprecated but still supported for the compatibility.
CASE "check additional env: specify iflabel in 'OCF_RESKEY_nic'"
	Include prepare
	Env OCF_RESKEY_nic=eth0:iflabel
	AgentRun start OCF_SUCCESS
	Include check_iflabel_assigned
	AgentRun stop OCF_SUCCESS
	Include check_iflabel_removed
