You can also configure event bus (Kafka perhaps) and use that to get events.
Alternately you can also use below API - (local) 🐵 > list events type="MAINT.PREPARE" listall=true { "count": 6, "event": [ { "account": "system", "created": "2019-08-08T17:06:23+0530", "description": "completed maintenance for host 1", "domain": "ROOT", "domainid": "712762c6-b2b0-11e9-831d-34e12d5f623e", "id": "41c27f1b-ecbf-4e77-8489-6aaaaa5d0456", "level": "INFO", "state": "Completed", "type": "MAINT.PREPARE", "username": "system" }, { "account": "admin", "created": "2019-08-08T17:03:47+0530", "description": "preparing host: 1 for maintenance", "domain": "ROOT", "domainid": "712762c6-b2b0-11e9-831d-34e12d5f623e", "id": "8d70cf65-f0ba-4b4c-95de-13612e925cfc", "level": "INFO", "state": "Scheduled", "type": "MAINT.PREPARE", "username": "admin" }, { "account": "admin", "created": "2019-08-08T17:03:47+0530", "description": "starting maintenance for host 1", "domain": "ROOT", "domainid": "712762c6-b2b0-11e9-831d-34e12d5f623e", "id": "3e305f6f-d91f-47d3-be74-bcc37c1d6995", "level": "INFO", "state": "Started", "type": "MAINT.PREPARE", "username": "admin" }, { ... The part in red with completed state is published when maintenance mode is completed. Ofcourse filter for the host id you want to track. Regards, Anurag ________________________________ From: Rakesh v <www.rakeshv....@gmail.com> Sent: Thursday, August 8, 2019 4:31 PM To: us...@cloudstack.apache.org <us...@cloudstack.apache.org> Cc: dev@cloudstack.apache.org <dev@cloudstack.apache.org> Subject: Re: Querying async job result So then I guess the correct way to check if host is in maintenance is through querying DB. Sent from my iPhone anurag.awas...@shapeblue.com www.shapeblue.com Amadeus House, Floral Street, London WC2E 9DPUK @shapeblue > 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<http://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<http://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<http://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<http://www.shapeblue.com> >>> Amadeus House, Floral Street, London WC2E 9DPUK >>> @shapeblue >>> >>> >>> >> > > > -- > > Andrija Panić > >