Use case for: min-version

Tim Penhey tim.penhey at canonical.com
Tue Aug 11 20:56:42 UTC 2015


It would be trivial for the Juju version to be exported in the hook
context as environment variables.

Perhaps something like this:

JUJU_VERSION=1.24.4
JUJU_VERSION_MAJOR=1
JUJU_VERSION_MINOR=24
JUJU_VERSION_PATCH=4
# tag for 'alpha' 'beta'
JUJU_VERSION_TAG=

Thoughts?

Tim

On 12/08/15 07:48, Marco Ceppi wrote:
> I'm not sure how I missed this bit of code, but I'm not a fan of it as
> it assumes paths in the deployed environment which have changed already
> in Juju's history and could potentially change again.
> 
> Instead of globing around for juju binaries and parsing outputs of
> commands (which themselves may very well change in the future). I'm a
> much bigger fan of what Chuck B and Matt B did in the etcd charm. A lot
> of the juju commands in the charm-helpers library will degrade cleanly
> (ie status-set will degrade to using juju-log) the commands that can't
> degrade, like leader-is, leader-set, and leader-get will raise
> a NotImplementedError which the code can respond to. They've done this
> by adding an attempt to invoke the command at the top of the file and
> handling the exception from there.
> 
> https://github.com/whitmo/etcd-charm/commit/7eb5166ded7609fffb0b66df9a4cb5ef66713bdc
> 
> I'd much rather see charms check for features existence rather than
> attempt to perform version matching until Juju gains the ability to
> signal version compat for charms.
> 
> Marco Ceppi
> 
> On Tue, Aug 11, 2015 at 3:46 AM Stuart Bishop
> <stuart.bishop at canonical.com <mailto:stuart.bishop at canonical.com>> wrote:
> 
>     On 11 August 2015 at 03:32, Matt Bruzek
>     <matthew.bruzek at canonical.com <mailto:matthew.bruzek at canonical.com>>
>     wrote:
>     >
>     > We wrote a charm that needed election logic, so we used the new
>     Juju feature
>     > "is_leader".  A user was interested in using a bundle that
>     contained this
>     > charm and it failed on them.  It was hard to track down the cause
>     of the
>     > problem.  It appears they were using an earlier version of Juju
>     that is
>     > available from universe and only the PPA had the more current version.
>     >
>     > Read more about the problem here:
>     > https://bugs.launchpad.net/charms/+source/etcd/+bug/1483380
>     >
>     > I heard the "min-version" feature discussed at previous Cloud
>     sprints but to
>     > my knowledge we do not have it implemented yet.  The idea was a
>     charm could
>     > specify in metadata.yaml what min-version of Juju they support.
>     >
>     > There are a lot of new features that juju-core are cranking out
>     (and that is
>     > *awesome*)!  We have already run into this problem with a real
>     user, and
>     > will have the problem in the future.
>     >
>     > Can we reopen the discussion of min-version?  Or some other method of
>     > preventing this kind of problem in the future?
> 
>     charmhelpers already supports this with
>     charmhelpers.core.hookenv.has_juju_version, thanks to Curtis who
>     described a reliable way of accessing it.
> 
>     Adding it to the official hook environment is
>     https://bugs.launchpad.net/juju-core/+bug/1455368
> 
>     It is particularly useful for:
> 
>     hookenv.status_set('blocked', "I'm in a right pickle. Help!")
>     if hookenv.has_juju_version('1.24'):
>         raise SystemExit(0)  # Blocked state, 1.24+
>     raise SytemExit(1)  # Error state, <1.23
> 
>     I've also got version checks in charmhelpers.coordinator, which
>     requires leadership.
> 
>     --
>     Stuart Bishop <stuart.bishop at canonical.com
>     <mailto:stuart.bishop at canonical.com>>
> 
>     --
>     Juju-dev mailing list
>     Juju-dev at lists.ubuntu.com <mailto:Juju-dev at lists.ubuntu.com>
>     Modify settings or unsubscribe at:
>     https://lists.ubuntu.com/mailman/listinfo/juju-dev
> 
> 
> 




More information about the Juju-dev mailing list