On 10/22/07, dxj_600 <[EMAIL PROTECTED]> wrote:
> Hi,
>
> I use heartbeat-2.1.2, consider the following configurations:
> <cib>
> <configuration>
> <crm_config> .... </crm_config>
> <nodes>
> <node uname="node0" id="node0"/>
> </nodes>
> <resources>
> <primative id="rsc_xxx" class="ocf" type="Stateful" provider="heartbeat"
> is_managed="true">
> </primative>
> </resources>
> <constraints>
> <rsc_location id="location_xxx" rsc="rsc_xxx">
> <rule id="location_xxx_rule" score="-infinity"/>
> </rsc_location>
> </constraints>
> </configuration>
> </cib>
>
> I want to code a program which can start/stop a resource, and I want the
> function to be synchronous.
> static BOOL cib_updated=FALSE;
> void on_cib_diff()
> {
> cib_updated=TRUE;
> }
> int start_xxx()
> {
> cib_t *cib=cib_new();
> cib->cmds->signon();
> cib_conn->cmds->add_notify_callback(cib, T_CIB_DIFF_NOTIFY, on_cib_diff);
>
> code with effect: cibadmin -D -o constraints -X '<rsc_location
> id="location_xxx"/>'
> while(cib_updated==FALSE) sleep(1);
> /* Now, cib has been updated, and will trigger the pengine/tengine to
> start the resource
> MY QUESTION IS:
> WHEN and HOW can i determine that the resource xxx has been started
> successfully???????
> */
>
> cib->cmds->signoff();
> cib=NULL;
> }
your program should connect to the cib and subscribe to change
notifications (the TE does this, look there for how).
once you make your update, look for an lrm_rsc_op for (your resource +
action=start + rc=0)
once you see that, then you know it has started
_______________________________________________
Linux-HA mailing list
[email protected]
http://lists.linux-ha.org/mailman/listinfo/linux-ha
See also: http://linux-ha.org/ReportingProblems