On 17/11/14 15:47, Stuart Bishop wrote: > On 17 November 2014 07:13, Ian Booth <ian.bo...@canonical.com> wrote: > >> The new Juju Status work planned for this cycle will hopefully address the >> main >> concern about knowing when a deployed charm is fully ready to do the work for >> which it was installed. ie the current situation whereby a unit is marked as >> Started but it not ready. Charms are able to mark themselves as Busy and also >> set a status message to indicate they are churning and not ready to run. >> Charms >> can also indicate that they are Blocked and require manual intervention (eg a >> service needs a database and no relation has been established yet to provide >> the >> database), or Waiting (the database on which the service relies is busy but >> will >> resolve automatically when the database is available again). > > As long as the 'ready' state is managed by juju and not the unit, I'll > stand happily corrected :-) The focus I'd seen had been on the unit > declaring its own status, and there is no way for a unit to know that > is ready because it has no way of knowing that, for example, there are > another 10 peer units being provisioned that will need to be related. >
You are correct that the initial scope of work is more about the unit, and less about the deployment as a whole. There are plans though to address the issue. We're throwing around the concept of a "goal state", which is conceptually akin to looking forward in time to be able to inform units what relations they will expect to participate in and what units will be deployed. They'd likely be something like a relation-goals hook tool (to compliment relation-list and relation-ids), as well as hook(s) for when the goal state changes. There's ongoing work in the uniter by William to get the architecture right so this work can be considered. There's still a lot of value in the current Juju Status work, but as you point out, it's not the full story. > >> So although there are not currently plans to show the number of running >> hooks in >> the first phase of this work, mechanisms are being provided to allow charm >> authors to better communicate the state of their charms to give much clearer >> and >> more accurate feedback as to 1) when a charm is fully ready to do work, 2) >> if a >> charm is not ready to do work, why not. > > A charm declaring itself ready is part of the picture. What is more > important is when the system is ready. You don't want to start pumping > requests through your 'ready' webserver, only to have it torn away as > a new block device is mounted on your database when its storage-joined > hook is invoked and returned to 'ready' state again once the > storage-changed hook has completed successfully. > Also being thrown around is the concept of a new agent-state called "Idle", which would be used when there are no pending hooks to run. There are plans as well for the next phase of the Juju status work to allow collaborating services to notify when they are busy, and mark relationships as down. So if the database had it's storage-attached hook invoked, it would mark itself as Busy, mark its relation to the webserver as Down, thus allowing the webserver to put itself into Waiting. Or, if we are talking about the initial install phase, the database would not initially mark itself as Running until its declared storage requirements were met, so the webserver would go from Installing to Waiting and then to Running one the database became Running. -- Juju-dev mailing list Juju-dev@lists.ubuntu.com Modify settings or unsubscribe at: https://lists.ubuntu.com/mailman/listinfo/juju-dev