You can actually juju action fetch --wait=0 <action UUID>
which will wait indefinitely for the result (ie, blocking) which would simplify the code you provided. I agree there could be some improvements to the action cli and will be making these bugs on the project as features requests! On Fri, Dec 11, 2015 at 12:03 AM Matthew Dirba <matthew.di...@arm.com> wrote: > Merlin, > > Adding a wrapper around juju action may have been the first juju > related code that I wrote. > > function jujuaction { > time=$1 > shift > echo juju action do $@ > tmp=`juju action do "$@" |cut -f2 -d:` > printf "${tmp} " > while true; do > sleep $time > juju action status $tmp |grep -E "status: (pending|running)" > >/dev/null || break > printf "." > done > echo "" > juju action fetch $tmp > } > > > Looking at the help for juju I would ask/prefer that waiting for an > action or parsing a result would be done with new commands sent to juju > action. > > usage: juju action [options] <command> ... > purpose: execute, manage, monitor, and retrieve results of actions > > options: > --description (= false) > > -h, --help (= false) > show help on a command or other topic > > "juju action" executes and manages actions on units; it queues up new > actions, > monitors the status of running actions, and retrieves the results of > completed > actions. > > commands: > defined - show actions defined for a service > do - queue an action for execution > fetch - show results of an action by ID > help - show help on a command or other topic > status - show results of all actions filtered by optional ID prefix > wait - run an action and return all of the results > parse - run an action and return the results matching a result string or > dict > > Example Usage: > juju action wait <unit> <params> > juju action parse <unit> <params> result=Œavg.latency' > > > > > > > > Regards, > Matt Dirba > 512.779.4696 > > > > > > > > >Message: 6 > >Date: Wed, 9 Dec 2015 17:13:09 -0500 > >From: Adam Stokes <adam.sto...@canonical.com> > >To: Merlijn Sebrechts <merlijn.sebrec...@gmail.com> > >Cc: juju <juju@lists.ubuntu.com> > >Subject: Re: additional catering towards the application developer > >Message-ID: > ><CAKorV6wUZJzh=0nvuesmhdt9okwtua2fw_ukv_b11fw_atm...@mail.gmail.com> > >Content-Type: text/plain; charset="utf-8" > > > >Also there seems to be a couple of bugs relevant to this discussion: > > > >https://bugs.launchpad.net/juju-core/+bug/1445066 > >https://bugs.launchpad.net/juju-core/+bug/1445078 > > > >On Wed, Dec 9, 2015 at 5:09 PM, Adam Stokes <adam.sto...@canonical.com> > >wrote: > > > >> I agree, having the ability to run actions synchronously and wait for a > >> result would be a huge step in allowing charm authors to provide > >>actions > >> that can be used during the development of your application _before_ you > >> reach the stage of charming that app. > >> > >> Casey, made a suggestion of possibly making the actions more relevant to > >> the type of task it's running (background vs run-and-wait). For > >>example, to > >> launch an action in the background you could do `juju action launch > >>(begin, > >> start)` and to run an action immediately and wait for the result would > >>be > >> `juju action do` or even drop the word `action` and have it be `juju > >> launch` and `juju do`. Semantics aside though I think this would be an > >> excellent addition and first step for getting application developers > >> interested in bringing their application into the Juju ecosystem. > >> > >> On Wed, Dec 9, 2015 at 4:48 PM, Merlijn Sebrechts < > >> merlijn.sebrec...@gmail.com> wrote: > >> > >>> I've been thinking about the actions as well. 99% of the actions > >>>use-case > >>> is: Run the action, wait for it to finish and show the result. Most of > >>>the > >>> actions are things like 'restart', 'show-something',... > >>> > >>> I think waiting for the action to finish and show the result should be > >>> put in as a flag, with the possibility to become default in Juju2. > >>> > >>> - Juju 1: Add flag --wait > >>> - Juju 2: Make --wait default and add flag --no-wait > >>> > >>> > >>> What do you guys think? Is this what you had in mind, Adam? > >>> > >>> 2015-12-09 18:28 GMT+01:00 Adam Stokes <adam.sto...@canonical.com>: > >>> > >>>> I wanted to write this to get a discussion going around how we can > >>>>better > >>>> support application developers. This is something I've been thinking > >>>> about > >>>> for awhile and was further convinced to write this email after seeing > >>>> posts > >>>> like: > >>>> > >>>> > http://askubuntu.com/questions/635758/is-juju-a-suitable-tool-for-devel > >>>>opment-as-well-as-deployment > >>>> > >>>> The scenario: > >>>> > >>>> In its simplest form, I am writing a web application that needs a > >>>> database. I > >>>> would like to quickly startup a postgresql server and grab it's > >>>> connection > >>>> information. > >>>> > >>>> How's its done with docker: > >>>> $ docker pull k0st/alpine-postgres > >>>> $ docker run --name myapp -e POSTGRES_USER=user -e > >>>> POSTGRES_PASSWORD=password -e POSTGRES_DB=testdb k0st/alpine-postgres > >>>> $ docker inspect --format '{{ .NetworkSettings.IPAddress }}' myapp > >>>> 172.16.0.5 > >>>> > >>>> From here you can build your connection string: > >>>> postgresql://user:password@172.16.0.5:5432/testdb > >>>> > >>>> And now how we could possibly accomplish this with Juju today: > >>>> > >>>> 1. Using Juju actions: > >>>> > >>>> $ juju deploy postgresql > >>>> $ juju action do postgresql/0 createdb username=user password=pass > >>>> database=testdb > >>>> Action queued with id 32432-432-432-432-432-432 > >>>> $ juju action fetch 32432-432-432-432-432-432 > >>>> > >>>> .. Parse the results > >>>> > >>>> message: "" # No error message. > >>>> results: > >>>> result-map: > >>>> connection_string: postgresql://user:pass@ > >>>> <unit-public-address>:5432/testdb > >>>> message: Hello world! > >>>> outcome: success > >>>> status: completed > >>>> > >>>> 2. Adding support in the charm hook (config-changed) > >>>> > >>>> $ juju deploy postgresql > >>>> $ juju set postgresql "createdb=user:pass:dbname" > >>>> > >>>> .. config-changed > >>>> > >>>> status-set "active", "db created: > >>>> postgresql://user:pass@unit-public-address:5432/dbname" > >>>> > >>>> $ juju status postgresql > >>>> > >>>> Look for the status message in the output. > >>>> > >>>> As you can tell between docker and juju we're still looking at 3 > >>>> commands for > >>>> just standing a database up, creating the db, and getting its > >>>>connection > >>>> details. > >>>> > >>>> It would be really nice if I could just do: > >>>> > >>>> $ juju deploy postgresql > >>>> $ juju postgresql create-db --username=user --password=pass > >>>> --database=mydb > >>>> > >>>> # Default to json output for our application to consume and make use > >>>>of > >>>> {"error": "", "result": "postgresql://user:pass@unit-public-address > >>>> :5432/mydb"} > >>>> > >>>> Even an action would still be ok if the action would print the results > >>>> to stdout > >>>> $ juju action do postgresql/0 create-db username=user password=pass > >>>> database=mydb > >>>> {"error": "", "result": "postgresql://user:pass@unit-public-address > >>>> :5432/mydb"} > >>>> > >>>> For me, personally, I don't want to use docker or vagrant or any other > >>>> tool as > >>>> I feel Juju is fully capable of catering to the application developer. > >>>> > >>>> Thoughts? > >>>> > >>>> -- > >>>> Juju mailing list > >>>> Juju@lists.ubuntu.com > >>>> Modify settings or unsubscribe at: > >>>> https://lists.ubuntu.com/mailman/listinfo/juju > >>>> > >>>> > >>> > >> > > IMPORTANT NOTICE: The contents of this email and any attachments are > confidential and may also be privileged. If you are not the intended > recipient, please notify the sender immediately and do not disclose the > contents to any other person, use it for any purpose, or store or copy the > information in any medium. Thank you. > > > -- > Juju mailing list > Juju@lists.ubuntu.com > Modify settings or unsubscribe at: > https://lists.ubuntu.com/mailman/listinfo/juju >
-- Juju mailing list Juju@lists.ubuntu.com Modify settings or unsubscribe at: https://lists.ubuntu.com/mailman/listinfo/juju