ansible / mazer

Experimental Ansible Galaxy Content Manager
GNU General Public License v3.0
114 stars 18 forks source link

Fix install if a role name is substring of another role #120

Closed alikins closed 6 years ago

alikins commented 6 years ago
SUMMARY

The fnmatch to select the files to extract from the tar archive was too eager ('top_dir/roles/rolename*') and would match 'top_dir/roles/katello_client' when attempting to match just 'top_dir/roles/katello'.

Since 'katello_client' would be installed as part of installing 'katello', then the install of 'katello_client' would fail since it was already on the file system.

Fixes #112

ISSUE TYPE
GALAXY CLI VERSION
name = mazer
version = 0.2.0
config_file = /home/adrian/.ansible/mazer.yml
uname = Linux, newswoop, 4.16.6-202.fc27.x86_64, #1 SMP Wed May 2 00:09:32 UTC 2018, x86_64
executable_location = /home/adrian/venvs/galaxy-py27/bin/mazer
python_version = 2.7.15 (default, May 15 2018, 15:37:31) [GCC 7.3.1 20180303 (Red Hat 7.3.1-5)]
python_executable = /home/adrian/venvs/galaxy-py27/bin/python
ADDITIONAL INFORMATION

For a case like #112, the details of when/where the install errors happen will depend on the state of the repo, the way the tar archive is constructed, and what order the set of content names provides. If the ordering of all that results in the shorter sub string name being installed first, then it will fail. iow, it's not hard to reproduce the bug, but it is also not 100% predictable.