Rakesh,

I'm not quite sure if this is a bug/misbehaviour, but it is indeed a
confusing one.

When you ask a host to go to maintenance mode, , you are using
prepareHostForMaintenance as you said, and this will trigger the host to go
into the "PrepareForMaintenance" state... so the job does indeed completes
within 2-3sec usually, as you can actually see in the GUI, after a 2-3 secs
of spinning circle and confirmation that it has been done.

Now, after the host has reached the PrepareForMaintenance state, ACS will
migrate away VMs, and I can only assume that the mgmt server will mark it
as in "Maintenance" state once it has zero VMs.
So you can query for the status of the host for the "resourcestate" and
observe when it goes into "Maintenance" state.

Regards
Andrija

On Thu, 8 Aug 2019 at 11:18, Rakesh v <www.rakeshv....@gmail.com> wrote:

> Hello Anurag
>
>
> Thanks for the reply. The host does transit to  maintenance mode
> eventually but the asynchronous job status never changes. Right now I'm
> periodically fetching the resource_state from DB to see if it changes to
> "Maintenance". Is there any better way to do it like using triggers or
> events instead of periodic polling?
>
> Sent from my iPhone
>
> > On 08-Aug-2019, at 10:52 AM, Anurag Awasthi <
> anurag.awas...@shapeblue.com> wrote:
> >
> > Hi Rakesh,
> >
> > You seem to be doing the right thing. I think what you have encoutered
> is a bug in prepareForMaintenance API. The host tends to be stuck in that
> state in some scenarios. Perhaps, when a VM enters an error state. I would
> advise canceling maintenance mode and examining what states the VMs are in.
> Ensure there are no unexpected errors on VMs, clean them up manually if
> needed. Then retry prepare for maintenance mode.
> >
> > There is an open PR for fixing this issue as well -
> https://github.com/apache/cloudstack/pull/3425 . While this got
> sidetracked as we worked on 4.13.0, this will make it in 4.13.1.
> >
> > Kind Regards,
> > Anurag
> > ________________________________
> > From: Rakesh Venkatesh <www.rakeshv....@gmail.com>
> > Sent: Thursday, August 8, 2019 2:09 PM
> > To: users@cloudstack.apache.org <users@cloudstack.apache.org>;
> d...@cloudstack.apache.org <d...@cloudstack.apache.org>
> > Subject: Querying async job result
> >
> > Hello
> >
> >
> > I want to know what is the best way to query the async job result using
> > queryAsyncJobResult api. According to the documentation in
> >
> http://docs.cloudstack.apache.org/projects/archived-cloudstack-getting-started/en/latest/dev.html
> > ,
> > the "jobstatus" of 1 means the command completed but im facing an issue
> > where even though the command is still running, the "jobstatus" is
> always 1.
> >
> > Im running "prepareHostForMaintenance" command which returns the jobid.
> > When I run queryAsyncJobResult for this jobid, the jobstatus will always
> be
> > 1 even though the hypervisor is still not in maintenance mode.
> >
> > So can anyone tell me what is the best way to check if the hypervisor is
> in
> > maintenance mode or not? Im using 4.11 version
> >
> >
> > Below are the result which I get
> >
> >
> > "resourcestate": "PrepareForMaintenance",
> > "jobresultcode": 0,
> >  "jobresulttype": "object",
> >  "jobstatus": 1,
> >
> > --
> > Thanks and regards
> > Rakesh venkatesh
> >
> > anurag.awas...@shapeblue.com
> > www.shapeblue.com
> > Amadeus House, Floral Street, London  WC2E 9DPUK
> > @shapeblue
> >
> >
> >
>


-- 

Andrija Panić

Reply via email to