On Unix, with shell=True, the shell default to /bin/sh.
Using Popen(['type', command], shell=True) is equivalent to calling
Popen(['/bin/sh', '-c', 'type', command]).
In this case 'command' becomes a positional parameter to the shell,
and not an argument to the command 'type'.
The solution is to pass a single string as parameter.
The problem is that with shell=True, we are never safe from a shell injection,
so it is wiser to use a python only solution.
The package distutils is part of the standard distribution, so it doesn't add
extra dependencies.
The method find_executable has the same behaviour as 'which' on bash.
As discussed in [#335], the `validate_manifest` method checks the manifest's
internal consistency. The validation phase, on the other hand, can be used to
check the consistency of the manifest with external ressources, for instance:
- Checking if files or directories exist.
- Checking if the content of a file is consistent with what was expected.
- Checking if a network ressource (an APT proxy?) is reachable.
[#335]: https://github.com/andsens/bootstrap-vz/pull/335#issuecomment-239661077
The way boot options for linux and config params for grub
were configured gave rise to quite a few bugs.
The configuration has now been abstracted so that
options can be added without interfering with the work
of other tasks (no more sed_i!)
Up until now I didn't see the point of using spaces for indentation.
However, the previous commit (a18bec3) was quite eye opening.
Given that python is an indentation aware language, the amount of
mistakes that went unnoticed because tabs and spaces were used
at the same time (tabs for indentation and spaces for alignment)
were unacceptable.
E101,W191 have been re-enable in the tox flake8 checker and
the documentation has been modified accordingly.
The following files have been left as-is:
* bootstrapvz/common/assets/extlinux/extlinux.conf
* bootstrapvz/common/assets/init.d/expand-root
* bootstrapvz/common/assets/init.d/generate-ssh-hostkeys
* bootstrapvz/common/assets/init.d/squeeze/generate-ssh-hostkeys
* bootstrapvz/plugins/docker_daemon/assets/init.d/docker
* bootstrapvz/providers/ec2/assets/bin/growpart
* bootstrapvz/providers/ec2/assets/grub.d/40_custom
* bootstrapvz/providers/ec2/assets/init.d/ec2-get-credentials
* bootstrapvz/providers/ec2/assets/init.d/ec2-run-user-data
* docs/_static/taskoverview.coffee
* docs/_static/taskoverview.less
* tests/unit/subprocess.sh
This needed changing to hvc0 for ec2, and was accidentally changed
for all other providers. Since the ec2 provider overrides to hvc0
anyway, we can just change this default to the setting that works
for everyone else.
Fixes: #318
Convert the locale group tasks frmom a simple list to a function. This
now matches the other non-simple task groups.
Signed-off-by: Manoj Srivastava <srivasta@golden-gryphon.com>
Starting in version 2016a-1 (circa Jan 2016) the package tzdata
changed /etc/timezone into a symlink. This change is in unstable,
testing, and will be in the next release (stretch). This commit checks
the release, and creates a task to either copy the contents of the
zoneinfo file (jessie and older) or create a symbolic link (newer than
jessie).
Signed-off-by: Manoj Srivastava <srivasta@golden-gryphon.com>