yellow team mailing list archive
-
yellow team
-
Mailing list archive
-
Message #00474
Draft email to Jujuers
Hi chaps, below is the draft email to the juju list with our feedback.
Please let me know of any corrections / additions / subtractions you
wish to make.
There are some items that I haven't been able to parse or understand
and so couldn't paraphrase. If their authors could sort me out with a
more straightforward version of each one, I'd be grateful.
Cheers,
Graham
===== DRAFT BEGINS =====
Hello Juju people (Are we supposed to call you priests? Shamans?
Anyway...)
We on the Launchpad Yellow Squad have been working on producing a couple
of charms for buildbot (one for the buildmaster, one for buildslaves)
over the last few weeks. Now that we're ready to submit our Charms to
you for review, we also wanted to put together some feedback about our
experience with Juju and with developing Charms. Hopefully it will be of
some use to you.
Feedback
~~~~~~~~
* The current Juju Docs are excellent, but they still have significant
holes in them. We've spent quite a while trying to get Juju to fit
into our collective brain, is a hard but valuable goal.
* We spent quite a while doing a lot of work in the config-changed
hooks before realising that this wasn't the most efficient way to do
things and was prone to breakages (because Juju doesn't keep track of
what's changed for you; we implemented our own config caching as a
result). Charm authors should be encouraged to use the install hook
primarily, with "deploy --config" to set config options.
* The one-way communication aspect of relation-set was surprising (so I
can relation-set foo=bar but I can never find out later on what I've
already told a relation about config options).
It would be great if there were a utility to retrieve whatever had
been sent to a relation. This would also be a nice way of caching
things for Charms :).
* Juju should allow service-destroyed hooks: bug 932269
* Optimization in ec2 (and presumably Canonistack) of reusing machines
is painful, especially without any kind of "destroy service" hook.
There's no way to ensure that the previous Charm has cleaned up after
itself, which gets particularly problematic when you deploy the same
charm to the node later on (because if the old one hasn't cleaned up
properly, directories may exist that shouldn't and ports may be bound
to that should be free).
* Juju should provide a way to reset a node without tearing down the
environment (see above under optimisation in EC2, too). It would be
nice to ensure that a node is bounced before a new charm is deployed
on it. Something like `juju reset-machine 1` or `juju reset-unit
wordpress/0`.
* The upgrade-charm command seems like it needs to work even if service
is not active. At the moment you have to have an active instance of
the service in order to upgrade the charm, or else you have to
destroy-environment and then bootstrap again, which is
labour-intensive.
* Being able to do a relation-set within a config-changed is important
(we understand this is a known issue, but it's worth mentioning
anyway).
* Using environmental variables for identifying the other end of a
relation in relation-changed
(https://juju.ubuntu.com/docs/charm.html#hook-environment) was
surprising, especially given that you can use relation-get to get
things like private-address from relation-get.
* Juju should have a way to share code across charms, like helpers.
bzr does not provide something like svn-external, unfortunately, so
this might need to be a build step of some sort. We've got around
this by using symlinks during development, but that's no good for
production usage.
* Running juju-log as a non root user (at least as buildbot) hangs.
* It would be nice to be able to have the default environment set via
an environment variable. That way I don't have to keep editing
.juju/environments.yaml ("default") or using -e for every command
as I switch between lxc, ec2 and canonistack.
* The above point is also important for testing. Since our Charms
should be as environment-agnostic as possible their tests need to
pass on all environments. It would be great to be able to run tests
with, say, JUJU_ENV=ec2, and then =lxc, and then =canonistack rather
than having to edit ~/.juju/environments.yaml.
That's about it for now. If you've any questions about any of the things
we've mentioned below, please don't hesitate to ask. You can reach us at
yellow@xxxxxxxxxxxxxxxxxxx or in #launchpad-yellow on Freenode.
ITEMS FOR YELLOWJACKETS TO EXPLAIN
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
* Doc: terminal needs to be in UTF8 (not by default on my Precise
machine for some reason! ANSIX3.4-1968) or else byobu will render the
bottom line problematically.
* Doc: recommend charms for review, such as mysql for multiple slaves.
* The wrapper script functionality would appear to be includable in
the base juju command
===== DRAFT ENDS =====
--
Graham Binns | PGP Key: EC66FA7D
http://launchpad.net/~gmb