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