Code review comment for lp:~teknico/charms/precise/juju-gui/integrate-builtin-server

Revision history for this message
Nicola Larosa (teknico) wrote :

frankban wrote:

https://codereview.appspot.com/12086044/diff/4001/config/guiserver.conf.template#newcode7
> config/guiserver.conf.template:7: exec runserver.py
--guiroot="{{gui_root}}" \
> We could use the full path to runserver.py here.

To avoid possible interference with namesakes earlier in PATH. Done.

https://codereview.appspot.com/12086044/diff/4001/config/guiserver.conf.template#newcode9
> config/guiserver.conf.template:9: {{if api_version}}
> What do you think about always providing --apiversion and --sslpath?
> We know those values in the hooks, and specifying them here allows for
> removing these if blocks and also generates a more explicit config,
> i.e. looking at the rendered upstart config we always know where are
> the ssl certs and what juju implementation we are currently using.

Done.

https://codereview.appspot.com/12086044/diff/4001/hooks/backend.py#newcode24
> hooks/backend.py:24:
> On 2013/07/31 21:18:18, gary.poster wrote:
>> Composition is supposed to be simpler than inheritance, but I'm not
>> sure this entirely succeeded. My feeling is that it is because its
>> composition is still so similar in feel to inheritance. I think I
>> might be happier with this if, rather that Backend's

>> [smip]

>> and so on.

> +1!

Agreed, I'll tackle this in a future branch, as mentioned in the reply
to gary's review.

https://codereview.appspot.com/12086044/diff/4001/hooks/backend.py#newcode35
> hooks/backend.py:35: import charmhelpers
> Thank you for reordering imports.

One of those little things. :-)

https://codereview.appspot.com/12086044/diff/4001/hooks/backend.py#newcode140
> hooks/backend.py:140: api_version = 'python' if utils.legacy_juju()
> else 'go'
> I think the definition of api_version can be moved inside the "if
> config.get('builtin-server', False)" block below.

Done.

> Anyway, is there a reason to prefer config.get('builtin-server',
False) over
> config['builtin-server']?

Not really, as discussed I also removed other useless similar cases. The
only ones left are for SSL options without defaults.

https://codereview.appspot.com/12086044/diff/4001/hooks/backend.py#newcode141
> hooks/backend.py:141: if config.get('builtin-server', False):
> On 2013/07/31 21:18:18, gary.poster wrote:
>> For the change story, do you think we ought to remove the old
>> haproxy/apache startup files? I'm inclined to say yes, but open to
>> alternate opinions. :-)

>> I guess that would happen in "stop"?

> I agree. So, IIUC:
> - the start method generates the upstart files;
> - the stop method (called by the stop and by the config-changed hooks)
> removes the upstart file(s) in use for that configuration.

Agreed, as mentioned in the reply to gary's review.

https://codereview.appspot.com/12086044/diff/4001/hooks/backend.py#newcode143
> hooks/backend.py:143: utils.JUJU_GUI_DIR, utils.get_api_address(),
> utils.JUJU_GUI_DIR is passed here and used in the function as
> gui_root. This does not seem to be correct. I expected "build_dir" to
> be the right value to pass here instead: am I missing something?

True, that was a thinko on my part, thank you.

> Moreover, utils.get_api_address() seems wrong too. Please take a look
> at how that's used in utils.write_haproxy_config(). I am +1, if you
> want, on changing that helper function to handle both the pyJuju and
> juju-core cases.

That's also true, addressed this too.

> Also note that the returned address does not include the schema
> (wss://) and IIRC, the builtin server requires it to be passed.

And this..

https://codereview.appspot.com/12086044/diff/4001/hooks/backend.py#newcode200
> hooks/backend.py:200: debs = ('curl', 'openssl', 'python-pip')
> Just curiosity: why is curl required? Is it a dependency of Tornado?

It's actually only needed by GuiMixin, moving it there.

https://codereview.appspot.com/12086044/diff/4001/hooks/utils.py#newcode458
> hooks/utils.py:458: gui_root, api_url,
api_version=DEFAULT_API_VERSION,
> Why do we need a DEFAULT_API_VERSION if the value is always provided?

We actually don't.

https://codereview.appspot.com/12086044/diff/4001/hooks/utils.py#newcode459
> hooks/utils.py:459: serve_tests=False, ssl_path=DEFAULT_SSL_PATH,
> insecure=False):
> Trivial: missing docstring.

Added.

https://codereview.appspot.com/12086044/diff/4001/server/guiserver/manage.py#newcode37
> server/guiserver/manage.py:37: from hooks_utils import
DEFAULT_API_VERSION,
> DEFAULT_SSL_PATH
> Hum... here is why DEFAULT_API_VERSION is a constant.
> Is it worth connecting (coupling?) the server to the hooks, creating a
> symlink etc. just for those two values (which, incidentally, are
> always provided in the upstart script)? I am not sure, but feel free
> to ignore my opinion here.

You're right, it's not worth it. It irked me too and it's not even
needed, those default values are unnecessary, as you point out.

https://codereview.appspot.com/12086044/diff/4001/server/runserver.py#newcode27
> server/runserver.py:27: (Specifying the last two options together does
> not actually make sense.)
> Perhaps, rather than highlighting the meaningless of it all, it's
> worth saying that --sslpath is ignored if --insecure is set.

Your suggestion make sense, done.

However, highlighting the meaningless of it all, in the general sense,
is something I find very appealing. ;-)

https://codereview.appspot.com/12086044/

« Back to merge proposal