On 10/22/07, [EMAIL PROTECTED] <[EMAIL PROTECTED]> wrote:
> Andrew Beekhof 写道:
> > 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
> >
> Well, when i find the result of lrm_rsc_op, how can i know that it's the
> result of my function call, or the result of a early function call, or the
> result of somebody else????
presumably you would have still been blocking on it and not been able
to issue another
> And, how about use the function cluster_status() provided in file
> lib/crm/pengine/status.c?
> which will extract resource's role as one of {unkown, stopped, started,
> slave, master}
if you prefer
though if it was already running then thats not going to help you much is it
_______________________________________________
Linux-HA mailing list
[email protected]
http://lists.linux-ha.org/mailman/listinfo/linux-ha
See also: http://linux-ha.org/ReportingProblems