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: us...@cloudstack.apache.org <us...@cloudstack.apache.org>;
    > dev@cloudstack.apache.org <dev@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