On Wed, Apr 08, 2020 at 11:49:45AM +0200, Andrea Bolognani wrote:
On Tue, 2020-04-07 at 13:31 +0200, Erik Skultety wrote:
> # The vault password is only needed for the jenkins flavor, but in
> # that case we want to make sure there's *something* in there
> - if self.get_flavor() != "test":
> + if self.get_flavor() == "jenkins":
> vault_pass_file = self._get_config_file("vault-password")
You need something similar to this in your new functions, otherwise
trying even if you've configured lcitool to use the test flavor
you'll still get
$ ./lcitool update all all
./lcitool: Missing or invalid gitlab url file ...
Doh! Clearly I didn't test regressions :(
> + def get_gitlab_runner_token_file(self):
> + gitlab_runner_token_file =
self._get_config_file("gitlab-runner-token")
> +
> + try:
> + with open(gitlab_runner_token_file, "r") as infile:
> + if not infile.readline().strip():
> + raise ValueError
> + except Exception as ex:
> + raise Exception(
> + "Missing or invalid gitlab runner token file ({}):
{}".format(
Please capitalize GitLab properly in user-visible strings.
> - extra_vars = json.dumps({
> + extra_vars_d = {
You don't really need to change the name of the variable.
Right, although there are certain good practices like adding _l to lists and _d
to dicts, so that it's immediately visible what kind of object you're working
with when you don't have the initialization of the object right in front of
your eyes.
> + if flavor == "gitlab":
> + extra_vars_d.update([
> + ("gitlab_url_file", gitlab_url_file),
> + ("gitlab_runner_token_file", gitlab_runner_token_file),
> + ])
You can use a dict as argument to update(), which is more natural
than a list of tuples.
^This is highly subjective I'd say, the readability doesn't really change if
you don't count an extra pair of parentheses, but oki, I'll change it...
But in reality I think you can skip the check entirely and add both
keys to extra_vars unconditionally: after you've fixed the issue I
pointed out above, they will either be set (gitlab flavor) or None
(any other flavor), and even in the latter case it's fine to pass
them to Ansible as they will simply not be used.
I thought about this and I simply didn't want to pass undefined variables to
ansible even if it doesn't use them, although I guess with the changes I'm
currently working on it won't matter as I'm planning to stop passing visible
extra vars on the command-line completely, so I think I can live with this
suggestion.
--
Erik Skultety