Page Menu
Home
ClusterLabs Projects
Search
Configure Global Search
Log In
Files
F3153002
fence_brocade.py
No One
Temporary
Actions
Download File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Flag For Later
Award Token
Size
2 KB
Referenced Files
None
Subscribers
None
fence_brocade.py
View Options
#!/usr/bin/python -tt
import
sys
,
re
import
atexit
sys
.
path
.
append
(
"@FENCEAGENTSLIBDIR@"
)
from
fencing
import
*
from
fencing
import
fail
,
EC_STATUS
#BEGIN_VERSION_GENERATION
RELEASE_VERSION
=
"New Brocade Agent - test release on steroids"
REDHAT_COPYRIGHT
=
""
BUILD_DATE
=
"March, 20013"
#END_VERSION_GENERATION
def
set_power_status
(
conn
,
options
):
action
=
{
'on'
:
"portCfgPersistentEnable"
,
'off'
:
"portCfgPersistentDisable"
}[
options
[
"--action"
]]
conn
.
send_eol
(
action
+
" "
+
options
[
"--plug"
])
conn
.
log_expect
(
options
,
options
[
"--command-prompt"
],
int
(
options
[
"--power-timeout"
]))
def
get_power_status
(
conn
,
options
):
line_re
=
re
.
compile
(
r'========='
,
re
.
IGNORECASE
)
outlets
=
{}
in_index
=
False
conn
.
send_eol
(
"switchshow"
)
conn
.
log_expect
(
options
,
options
[
"--command-prompt"
],
int
(
options
[
"--power-timeout"
]))
for
line
in
str
(
conn
.
before
)
.
split
(
"
\n
"
):
if
line_re
.
search
(
line
):
in_index
=
True
elif
in_index
and
line
.
lstrip
()[
0
]
.
isdigit
():
tokens
=
line
.
lstrip
()
.
split
()
status
=
"off"
if
len
(
tokens
)
>
7
and
tokens
[
7
]
==
"Disabled"
else
"on"
outlets
[
tokens
[
0
]]
=
(
""
,
status
)
if
[
"list"
,
"monitor"
]
.
count
(
options
[
"--action"
])
==
0
:
(
_
,
status
)
=
outlets
[
options
[
"--plug"
]]
return
status
else
:
return
outlets
def
main
():
device_opt
=
[
"ipaddr"
,
"login"
,
"passwd"
,
"cmd_prompt"
,
"secure"
,
"port"
,
"fabric_fencing"
]
atexit
.
register
(
atexit_handler
)
all_opt
[
"cmd_prompt"
][
"default"
]
=
[
"> "
]
options
=
check_input
(
device_opt
,
process_input
(
device_opt
))
options
[
"eol"
]
=
"
\n
"
docs
=
{}
docs
[
"shortdesc"
]
=
"Fence agent for HP Brocade over telnet/ssh"
docs
[
"longdesc"
]
=
"fence_brocade is an I/O Fencing agent which can be used with Brocade FC switches.
\
It logs into a Brocade switch via telnet and disables a specified port. Disabling the port which a machine is
\
connected to effectively fences that machine. Lengthy telnet connections to the switch should be avoided while
\
a GFS cluster is running because the connection will block any necessary fencing actions.
\
\
After a fence operation has taken place the fenced machine can no longer connect to the Brocade FC switch.
\
When the fenced machine is ready to be brought back into the GFS cluster (after reboot) the port on the Brocade
\
FC switch needs to be enabled. This can be done by running fence_brocade and specifying the enable action"
docs
[
"vendorurl"
]
=
"http://www.brocade.com"
show_docs
(
options
,
docs
)
##
## Operate the fencing device
####
conn
=
fence_login
(
options
)
result
=
fence_action
(
conn
,
options
,
set_power_status
,
get_power_status
,
get_power_status
)
fence_logout
(
conn
,
"exit"
)
sys
.
exit
(
result
)
if
__name__
==
"__main__"
:
main
()
File Metadata
Details
Attached
Mime Type
text/x-script.python
Expires
Tue, Feb 25, 7:16 AM (1 d, 13 h)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
1464738
Default Alt Text
fence_brocade.py (2 KB)
Attached To
Mode
rF Fence Agents
Attached
Detach File
Event Timeline
Log In to Comment