tobami / littlechef

Cook with Chef without a Chef Server
Apache License 2.0
473 stars 70 forks source link

fix --env does not override a node if environment is set to _default #237

Open wilddog64 opened 9 years ago

wilddog64 commented 9 years ago

when execute command _fix --env staging nodes_with_role:myrole, if target node chef_environment is set to _default. It seems to me that the logic should be if name == '_default' and not littlechef.chef_environment == None ... to allow --env to override the default settings; or at least two should merge together

def get_environment(name):
"""Returns a JSON environment file as a dictionary"""
if name == "_default":
    return env_from_template(name)
filename = os.path.join("environments", name + ".json")
try:
    with open(filename) as f:
        try:
            return json.loads(f.read())
        except ValueError as e:
            msg = 'LittleChef found the following error in'
            msg += ' "{0}":\n                {1}'.format(filename, str(e))
            abort(msg)
except IOError:
    raise FileNotFoundError('File {0} not found'.format(filename))