So then I guess the correct way to check if host is in maintenance is through 
querying DB.

Sent from my iPhone

> On 08-Aug-2019, at 12:03 PM, Anurag Awasthi <anurag.awas...@shapeblue.com> 
> wrote:
> 
> Hi Rakesh,
> 
> Andrija is correct. Internally, all the API call does is move the host to a 
> different state. Periodically (ping.interval duration apart) MS would attempt 
> migration of VMs. Once the host has zero running VMs and no VM in 
> failure/error state it would be marked in maintenance mode. 
> 
> Regarding your 2nd question - how to track if maintenance state, one option 
> is that you query DB to see the state. The other option could be to see on 
> event bus for "MAINT.PREPARE" in completed state. I haven't seen this in 
> practice but perhaps you can dig in a bit to explore.
> 
> Regards,
> Anurag
> 
> On 8/8/19, 3:17 PM, "Andrija Panic" <andrija.pa...@gmail.com> wrote:
> 
>    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
> 
> 
> anurag.awas...@shapeblue.com 
> www.shapeblue.com
> Amadeus House, Floral Street, London  WC2E 9DPUK
> @shapeblue
> 
> 
> 
>> 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