Blob Blame History Raw
# Unpack tar.gz to retrieve to be vendored modules and place them in the roles library.
# ansible.posix:
#   - library:
#     - Module selinux and seboolean for the selinux role
#     - Module mount for the storage role
declare -A module_map=( ["selinux.py"]="selinux" ["seboolean.py"]="selinux" ["mount.py"]="storage" )
for module in "${!module_map[@]}"; do
  role="${module_map[${module}]}"
  if [ ! -d $role/library ]; then
    mkdir $role/library
  fi
  cp -pL .external/ansible/posix/plugins/modules/$module $role/library/$module
  sed -i -e ':a;N;$!ba;s/description:\n\( *\)/description:\n\1- WARNING: Do not use this module directly! It is only for role internal use.\n\1/' -e "s/ansible_collections.ansible.posix.plugins.module_utils/ansible.module_utils.${role}_lsr/" $role/library/$module
done

# ansible.posix:
#   - module_utils:
#     - Module_util mount for the storage role
module_map=( ["mount.py"]="storage" )
for module in "${!module_map[@]}"; do
  role="${module_map[${module}]}"
  if [ ! -d $role/module_utils/${role}_lsr ]; then
    mkdir -p $role/module_utils/${role}_lsr
  fi
  cp -pL .external/ansible/posix/plugins/module_utils/$module $role/module_utils/${role}_lsr/$module
done

# community.general:
#   - library:
#     - Module seport, sefcontext and selogin for the selinux role rolename2
#     - Module ini_file for role tlog
#     - rhc modules
#     - ha_cluster uses modprobe
module_map=( ["seport.py"]="selinux" ["sefcontext.py"]="selinux" ["selogin.py"]="selinux" ["ini_file.py"]="tlog"
  ["redhat_subscription.py"]="rhc" ["rhsm_release.py"]="rhc" ["rhsm_repository.py"]="rhc"
  ["modprobe.py"]="ha_cluster" )
for module in "${!module_map[@]}"; do
  role="${module_map[${module}]}"
  if [ ! -d $role/library ]; then
    mkdir $role/library
  fi
  # version 5.x seems to be broken?
  moduledir=.external/community/general/plugins/modules
  if [ ! -f $moduledir/$module ]; then
    moduledir=.external/community/general/plugins/modules/system
  fi
  if [ ! -f $moduledir/$module ]; then
    moduledir=.external/community/general/plugins/modules/files
  fi
  cp -pL $moduledir/$module $role/library/$module
  ls -alrtF $role/library/$module
  sed -i -e ':a;N;$!ba;s/description:\n\( *\)/description:\n\1- WARNING: Do not use this module directly! It is only for role internal use.\n\1/' $role/library/$module

  # Remove doc_fragments
  sed -i '/^extends_documentation_fragment:/,/^[^ -]/{/^extends/d;/^[ -]/d}' $role/library/$module
done

# containers.podman:
#   - library:
#     - Module podman_container_info, podman_image and podman_play for the podman role
module_map=( ["podman_container_info.py"]="podman" ["podman_image.py"]="podman" ["podman_play.py"]="podman" )
for module in "${!module_map[@]}"; do
  role="${module_map[${module}]}"
  if [ ! -d $role/library ]; then
    mkdir $role/library
  fi
  moduledir=.external/containers/podman/plugins/modules
  cp -pL $moduledir/$module $role/library/$module
  ls -alrtF $role/library/$module
  sed -i -e ':a;N;$!ba;s/description:\n\( *\)/description:\n\1- WARNING: Do not use this module directly! It is only for role internal use.\n\1/' \
    -e "s/ansible_collections.containers.podman.plugins.module_utils.podman/ansible.module_utils.${role}_lsr/" \
    $role/library/$module
done

# containers.podman:
#   - module_utils:
#     - Module_util common for the podman role
module_map=( ["common.py"]="podman" )
for module in "${!module_map[@]}"; do
  role="${module_map[${module}]}"
  if [ ! -d $role/module_utils/${role}_lsr ]; then
    mkdir -p $role/module_utils/${role}_lsr
  fi
  cp -pL .external/containers/podman/plugins/module_utils/podman/$module $role/module_utils/${role}_lsr/$module
done

# remove the temporary .external directory after vendoring
rm -rf .external

# Replacing "linux-system-roles.rolename" with "rhel-system-roles.rolename" in each role
# Replacing "fedora.linux_system_roles." with "redhat.rhel_system_roles" in each role
# This is for the "roles calling other roles" case
# for podman, change the FQCN - using a non-FQCN module name doesn't seem to work,
# even for the legacy role format
# replace community.general for rhc
for rolename in %{rolenames}; do
    find $rolename -type f -exec \
         sed -e "s/linux-system-roles[.]${rolename}\\>/%{roleinstprefix}${rolename}/g" \
             -e "s/fedora[.]linux_system_roles[.]/%{collection_namespace}.%{collection_name}./g" \
             -e "s/containers[.]podman[.]/%{collection_namespace}.%{collection_name}./g" \
             -e "s/community[.]general[.]/%{collection_namespace}.%{collection_name}./g" \
             -i {} \;
done