On Fri, Jan 14, 2011 at 02:52:10PM +0100, RaSca wrote:
> Il giorno Ven 14 Gen 2011 12:18:38 CET, Dejan Muhamedagic ha scritto:
> [...]
>> iscsiadm fails with the following message:
>>> Jan 13 19:15:46 debian-squeeze-nodo1 lrmd: [1274]: info: RA output: 
>>> (www_db-iscsi:start:stderr) iscsiadm:
>>> Jan 13 19:15:46 debian-squeeze-nodo1 lrmd: [1274]: info: RA output: 
>>> (www_db-iscsi:start:stderr) no records found!
>> Try to figure out what does that mean, my iscsi is a bit rusty.
>
> Hey Dej,
> finally I made things working by rewriting the resource agent. I was  
> unable to do a true debug, so I cleaned up (for me, of course) your code.
> You can find it attached to this mail. It works perfectly in my  
> topology, but it has some limitations:
>
> - It runs only on Linux (while your original was meant also for  
> different situations);
> - It runs only with udev (I don't make any udev check like in the  
> original RA);
> - It's obviously a scratch;
>
> Hope this can help improving the things in some way. Let me know if I  
> can do something else.

Unfortunately, it cannot really improve situation in any way.
Dropping half the agent and not knowing where is the problem is
not helpful. At least not if you want to share your findings
with the community.

One of the possible explanations is that the target simply
wasn't ready at the time it tried to start (as it has only be
made available by the previous service). So, perhaps inserting a
Delay resource in between could help here. If so, then maybe
iSCSI* agents need to make sure that the service is really ready
after start exits.

Looking at the diff, though it's simply impossible to figure out
what changed because so many things did, it looks like you
dropped the discovery code (iscsiadm -m discovery). Was that
where you had problems? Well, we'll probably never know for
sure.

Unhappy,

Dejan

> Thanks a lot for your precious support!
>
> -- 
> Raoul Scarazzini
> Mia Mamma Usa Linux: Niente รจ impossibile da capire, se lo spieghi bene!
> ra...@miamammausalinux.org

> #!/bin/sh
> #
> # iSCSI OCF resource agent
> # Description: manage iSCSI disks (add/remove) using open-iscsi
> #
> # Developed by RaSca (ra...@miamammausalinux.org)
> # Copyright (C) 2010 MMUL S.a.S.,  All Rights Reserved.
> # Based upon the Resource Agent "iscsi" by Dejan Muhamedagic <de...@suse.de>
> #
> # This program is free software; you can redistribute it and/or modify
> # it under the terms of version 2 of the GNU General Public License as
> # published by the Free Software Foundation.
> #
> # This program is distributed in the hope that it would be useful, but
> # WITHOUT ANY WARRANTY; without even the implied warranty of
> # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
> #
> # Further, this software is distributed without any warranty that it is
> # free of the rightful claim of any third person regarding infringement
> # or the like.  Any license provided herein, whether implied or
> # otherwise, applies only to this software file.  Patent licenses, if
> # any, provided herein do not apply to combinations of this program with
> # other software, or any other product whatsoever.
> #
> # You should have received a copy of the GNU General Public License
> # along with this program; if not, write the Free Software Foundation,
> # Inc., 59 Temple Place - Suite 330, Boston MA 02111-1307, USA.
> #
> # See usage() and meta_data() below for more details...
> #
> # OCF instance parameters:
> #     OCF_RESKEY_portal: the iSCSI portal address or host name (required)
> #     OCF_RESKEY_target: the iSCSI target (required)
> #     OCF_RESKEY_iscsiadm: iscsiadm program path (optional)
> #
> # Initialization:
> 
> : ${OCF_FUNCTIONS_DIR=${OCF_ROOT}/resource.d/heartbeat}
> . ${OCF_FUNCTIONS_DIR}/.ocf-shellfuncs
> 
> usage() {
>   methods=`iscsi_methods`
>   methods=`echo $methods | tr ' ' '|'`
>   cat <<-!
>       usage: $0 {$methods}
> 
>       $0 manages an iSCSI target
> 
>       The 'start' operation starts (adds) the iSCSI target.
>       The 'stop' operation stops (removes) the iSCSI target.
>       The 'status' operation reports whether the iSCSI target is connected
>       The 'monitor' operation reports whether the iSCSI target is connected
>       The 'validate-all' operation reports whether the parameters are valid
>       The 'methods' operation reports on the methods $0 supports
> 
>       !
> }
> 
> meta_data() {
>       cat <<END
> <?xml version="1.0"?>
> <!DOCTYPE resource-agent SYSTEM "ra-api-1.dtd">
> <resource-agent name="iscsi">
> <version>1.0</version>
> 
> <longdesc lang="en">
> OCF Resource Agent for iSCSI. Add (start) or remove (stop) iSCSI
> targets.
> </longdesc>
> <shortdesc lang="en">Manages a local iSCSI initiator and its connections to 
> iSCSI targets</shortdesc>
> 
> <parameters>
> 
> <parameter name="portal" unique="0" required="1">
> <longdesc lang="en">
> The iSCSI portal address in the form: {ip_address|hostname}[":"port]
> </longdesc>
> <shortdesc lang="en">portal</shortdesc>
> <content type="string" default="" />
> </parameter>
> 
> <parameter name="target" unique="1" required="1">
> <longdesc lang="en">
> The iSCSI target.
> </longdesc>
> <shortdesc lang="en">target</shortdesc>
> <content type="string" default="" />
> </parameter>
> 
> <parameter name="iscsiadm" unique="0" required="0">
> <longdesc lang="en">
> iscsiadm program path.
> </longdesc>
> <shortdesc lang="en">iscsiadm</shortdesc>
> <content type="string" default="" />
> </parameter>
> 
> </parameters>
> 
> <actions>
> <action name="start" timeout="120" />
> <action name="stop" timeout="120" />
> <action name="status" timeout="30" />
> <action name="monitor" depth="0" timeout="30" interval="120" />
> <action name="validate-all" timeout="5" />
> <action name="methods" timeout="5" />
> <action name="meta-data" timeout="5" />
> </actions>
> </resource-agent>
> END
> }
> 
> open_iscsi_methods() {
>   cat <<-!
>       start
>       stop
>       status
>       monitor
>       validate-all
>       methods
>       meta-data
>       usage
>       !
> }
> 
> open_iscsi_daemon() {
>       if ps -e -o cmd | grep -qs '[i]scsid'; then
>               return 0
>       else
>               ocf_log err "iscsid not running; please start open-iscsi 
> utilities"
>               return 1
>       fi
> }
> 
> open_iscsi_start() {
>       if open_iscsi_status; then
>               ocf_log info "iscsi $portal $OCF_RESKEY_target already running"
>               return $OCF_SUCCESS
>       else
>               $iscsiadm -m node -p $portal -T $OCF_RESKEY_target -l
>               if open_iscsi_status; then
>                       return $OCF_SUCCESS
>               else
>                       return $OCF_ERR_GENERIC
>               fi
>       fi
> }
> 
> open_iscsi_stop() {
>               $iscsiadm -m node -p $portal -T $OCF_RESKEY_target -u
>               if open_iscsi_status; then
>                       return $OCF_ERR_GENERIC
>               else
>                       return $OCF_SUCCESS
>               fi
> }
> 
> open_iscsi_status() {
>       if $iscsiadm -m session 2> /dev/null | grep -qs "$OCF_RESKEY_target$"; 
> then
>               return $OCF_SUCCESS
>       else
>               return $OCF_NOT_RUNNING
>       fi
> }
> 
> #
> #     'main' starts here...
> #
> 
> iscsiadm=${OCF_RESKEY_iscsiadm:-"iscsiadm"}
> portal=$OCF_RESKEY_portal
> target=$OCF_RESKEY_target
> 
> if [ $# -ne 1 ]; then
>       usage
>       exit $OCF_ERR_ARGS
> fi
> 
> # These operations don't require OCF instance parameters to be set
> case "$1" in
>       meta-data)      meta_data
>               exit $OCF_SUCCESS;;
>       usage) usage
>               exit $OCF_SUCCESS;;
>       methods) open_iscsi_methods
>               exit $OCF_SUCCESS;;
> esac
> 
> if [ x = "x$OCF_RESKEY_target" ]; then
>       ocf_log err "no target attribute"
>       exit $OCF_ERR_ARGS
> fi
> 
> LSB_STATUS_STOPPED=3
> 
> if [ `id -u` != 0 ]; then
>       ocf_log err "$0 must be run as root"
>       exit $OCF_ERR_PERM
> fi
> 
> # which method was invoked?
> case "$1" in
>       start)  open_iscsi_start
>       ;;
>       stop)   open_iscsi_stop
>       ;;
>       status) if open_iscsi_status
>               then
>                 echo iscsi target $OCF_RESKEY_target running
>                 exit $OCF_SUCCESS
>               else
>                 echo iscsi target $OCF_RESKEY_target stopped
>                 exit $OCF_NOT_RUNNING
>               fi
>               ;;
>       monitor) open_iscsi_status
>       ;;
>       validate-all)   # everything already validated
>               # just exit successfully here.
>               exit $OCF_SUCCESS;;
>       *)              open_iscsi_methods
>               exit $OCF_ERR_UNIMPLEMENTED;;
> esac

> _______________________________________________
> Linux-HA mailing list
> Linux-HA@lists.linux-ha.org
> http://lists.linux-ha.org/mailman/listinfo/linux-ha
> See also: http://linux-ha.org/ReportingProblems
_______________________________________________
Linux-HA mailing list
Linux-HA@lists.linux-ha.org
http://lists.linux-ha.org/mailman/listinfo/linux-ha
See also: http://linux-ha.org/ReportingProblems

Reply via email to