Writing plugins for Juju is actually quite easy in general, and this particular plugin is not terribly complicated, as it uses pyinotify which does most of the heavy lifting. (Note that you may need to install the pyinotify library if updating an existing install of juju-plugins.) The trickiest part was getting the changes onto the unit, because we didn't want to use upgrade-charm, since it would affect all units and trigger a hook, but juju scp can't directly overwrite the charm, because it doesn't run as root. So, I had to scp into a temp directory and then use juju ssh to copy the files over using sudo. https://github.com/juju/plugins/blob/master/juju-sync-watch#L120
On Fri, Apr 24, 2015 at 5:21 PM, Eric Snow <[email protected]> wrote: > This is great, Cory (and Ben)! Out of curiosity, what were the > trickiest parts of writing the plugin? Also, what aspects/components > of juju's architecture helped and hindered you? > > -eric > > On Fri, Apr 24, 2015 at 6:34 AM, Cory Johns <[email protected]> wrote: >> Last week, while in Nuremberg, Ben and I were able to create a new >> plugin to enable a much better charm development workflow. >> >> Once the Juju Plugins bundle (https://github.com/juju/plugins) is >> installed, you can now run `juju sync-watch <unit>` to enable local >> editing of a remote charm. This works using inotify to watch for >> changes in the local copy of the charm and automatically sync those >> changes up to the deployed unit. If the unit is in an error state, it >> will also automatically retry the failed hook, so that you can do >> fast, seamless iteration on a charm. >> >> This plugin works with any provider and any editor. >> >> -- >> Juju mailing list >> [email protected] >> Modify settings or unsubscribe at: >> https://lists.ubuntu.com/mailman/listinfo/juju -- Juju mailing list [email protected] Modify settings or unsubscribe at: https://lists.ubuntu.com/mailman/listinfo/juju
