utils/*galaxy*: Make galaxy scripts more generic

The namespace and colleciton name have been hard coded. Now variables are
used for them. The project prefix and collection prefix are now passed to
galaxyify-playbook.py.
This commit is contained in:
Thomas Woerner
2020-04-02 11:26:32 +02:00
parent cd5429a534
commit 57d407f15f
2 changed files with 23 additions and 18 deletions

View File

@@ -1,36 +1,40 @@
#!/bin/bash
namespace="freeipa"
collection="ansible_freeipa"
collection_prefix="${namespace}.${collection}"
galaxy_version=$(git describe --tags | sed -e "s/^v//")
echo $galaxy_version | grep "-" -q || galaxy_version="${galaxy_version}"
sed -i -e "s/version: .*/version: \"$galaxy_version\"/" galaxy.yml
find . -name "*~" -exec rm {} \;
sed -i -e "s/ansible.module_utils.ansible_freeipa_module/ansible_collections.freeipa.ansible_freeipa.plugins.module_utils.ansible_freeipa_module/" plugins/modules/*.py
sed -i -e "s/ansible.module_utils.ansible_freeipa_module/ansible_collections.${collection_prefix}.plugins.module_utils.ansible_freeipa_module/" plugins/modules/*.py
cd plugins/module_utils && {
ln -s ../../roles/ipa*/module_utils/*.py .
ln -s ../../roles/*/module_utils/*.py .
cd ../..
}
cd plugins/modules && {
sed -i -e "s/ansible.module_utils.ansible_ipa_/ansible_collections.freeipa.ansible_freeipa.plugins.module_utils.ansible_ipa_/" ../../roles/ipa*/library/*.py
ln -s ../../roles/ipa*/library/*.py .
sed -i -e "s/ansible.module_utils.ansible_ipa_/ansible_collections.${collection_prefix}.plugins.module_utils.ansible_ipa_/" ../../roles/*/library/*.py
ln -s ../../roles/*/library/*.py .
cd ../..
}
[ ! -x plugins/action_plugins ] && mkdir plugins/action_plugins
cd plugins/action_plugins && {
ln -s ../../roles/ipa*/action_plugins/*.py .
ln -s ../../roles/*/action_plugins/*.py .
cd ../..
}
for x in roles/ipa*/tasks/*.yml; do
python utils/galaxyify-playbook.py "$x"
for x in roles/*/tasks/*.yml; do
python utils/galaxyify-playbook.py "$x" "ipa" "$collection_prefix"
done
for x in $(find playbooks -name "*.yml" -print); do
python utils/galaxyify-playbook.py "$x"
python utils/galaxyify-playbook.py "$x" "ipa" "$collection_prefix"
done
#git diff
@@ -43,4 +47,3 @@ rm plugins/modules/ipareplica_*
rm plugins/modules/ipaclient_*
rm plugins/action_plugins/ipaclient_*
git reset --hard

View File

@@ -2,11 +2,14 @@ import sys
import re
def galaxify_playbook(playbook_in):
p1 = re.compile('(ipa.*:)$')
p2 = re.compile('(.*:) (ipa.*)$')
def galaxify_playbook(playbook_in, project_prefix, collection_prefix):
p1 = re.compile('(%s.*:)$' % project_prefix)
p2 = re.compile('(.*:) (%s.*)$' % project_prefix)
lines = []
pattern1 = r'%s.\1' % collection_prefix
pattern2 = r'\1 %s.\2' % collection_prefix
with open(playbook_in) as in_f:
changed = False
changeable = False
@@ -22,14 +25,13 @@ def galaxify_playbook(playbook_in):
elif stripped.startswith("include_role:"):
include_role = True
elif include_role and stripped.startswith("name:"):
line = p2.sub(r'\1 freeipa.ansible_freeipa.\2', line)
line = p2.sub(pattern2, line)
changed = True
elif changeable and stripped.startswith("- role:"):
line = p2.sub(r'\1 freeipa.ansible_freeipa.\2', line)
line = p2.sub(pattern2, line)
changed = True
elif changeable and not stripped.startswith(
"freeipa.ansible_freeipa."):
line = p1.sub(r'freeipa.ansible_freeipa.\1', line)
elif changeable and not stripped.startswith(collection_prefix):
line = p1.sub(pattern1, line)
changed = True
lines.append(line)
@@ -40,4 +42,4 @@ def galaxify_playbook(playbook_in):
out_f.write(line)
galaxify_playbook(sys.argv[1])
galaxify_playbook(sys.argv[1], sys.argv[2], sys.argv[3])