Fixing wrong dependency directory in create_repo 13/97113/5
authorJan Benedikt <j.benedikt@partner.samsung.com>
Tue, 15 Oct 2019 10:07:46 +0000 (06:07 -0400)
committerMichal Ptacek <m.ptacek@partner.samsung.com>
Thu, 17 Oct 2019 14:30:36 +0000 (14:30 +0000)
Improving logic of create_repo.sh script.
Changed from one common path to two different paths.
One path for cloned offline-installer directory and second for resources directory.

Issue-ID: OOM-2136

Change-Id: I627db02594c25df172c270ea015f167ea7050ca0
Signed-off-by: Jan Benedikt <j.benedikt@partner.samsung.com>
build/create_repo.sh
build/docker-entrypoint.sh
docs/BuildGuide.rst

index 8e12a16..b6db6ad 100755 (executable)
@@ -1,48 +1,67 @@
 #!/usr/bin/env bash
 
 container_name="centos_repo"
-# Path to folder with clonned offline-installer build directory with docker_entrypoint script
-volume_directory="."
-# Path inside container
-container_volume="/mnt/"
+# Path to folder with cloned offline-installer build directory with docker_entrypoint script
+volume_offline_directory="$(readlink -f $(dirname ${0}))"
+# Path for directory where repository will be created
+volume_repo_directory="$(pwd)"
+# Path inside container with cloned offline-installer build directory
+container_offline_volume="/mnt/offline/"
+# Path inside container where will be created repository
+container_repo_volume="/mnt/repo/"
 # Docker image name and version
 docker_image="centos:centos7.6.1810"
+# Expected directory for RPM packages
+expected_dir="resources/pkg/rhel"
+
+help () {
+    echo "Script for run docker container with RPM repository"
+    echo "usage: create_repo.sh [-d|--destination-repository output directory] [-c|--cloned-directory input directory]"
+    echo "-h --help: Show this help"
+    echo "-d --destination-repository: set path where will be stored RPM packages. Default value is current directory"
+    echo "-c --cloned-directory: set path where is stored this script and docker-entrypoint script (offline-installer/build directory). Fill it just when you want to use different script/datalists"
+    echo "If build folder from offline repository is not specified will be used default path of current folder."
+}
 
 # Getting input parametters
 POSITIONAL=()
+if [[ $# -eq 0 ]] ; then
+    help # show help
+    exit 0
+fi
 while [[ $# -gt 0 ]]
 do
-    key="$1"
-    case $key in
+    case "$1" in
         -h|--help)
             # Help parametter
-            echo -e "Script for run docker container with RPM repository\n"
-            echo "-h --help: Show this help"
-            echo -e "-d --directory: set root path with offline-installer directory and repository directory for RPM packages\n"
-            echo "If build folder from offline repository is not specified will be used default path of current folder."
-            shift # past argument
-            shift # past value
-            exit
+            help # show help
+            exit 0
             ;;
-        -d|--directory)
+        -c|--cloned-directory)
             # Directory parametter
-            # Sets path where is clonned offline-installer build directory
-            volume_directory="$2"
-            shift # past argument
-            shift # past value
+            # Sets path where is cloned offline-installer build directory
+            volume_offline_directory="$2"
             ;;
-        --default)
-            DEFAULT=YES
-            shift # past argument
+        -d|--destination-repository)
+            # Repository direcotry parametter
+            # Sets path where will be repository created
+            volume_repo_directory="$2"
             ;;
-        *)  
+        *)
             # unknown option
-            POSITIONAL+=("$1") # save it in an array for later
-            shift # past argument
+            help # show help
+            exit 1
             ;;
     esac
+    shift;shift
 done
 
+# Check if path contains expected path "resources/pkg/rhel"
+if ! [[ "/$volume_repo_directory/" = *"/$expected_dir/"* ]]; then
+    # Create repo folder if it not exists
+    volume_repo_directory="$volume_repo_directory"/resources/pkg/rhel
+    [ ! -d "$volume_repo_directory" ] && mkdir -p $volume_repo_directory
+fi
 
 #Check if container "centos-repo" is running
 if [ ! "$(docker ps -q -f name=$container_name)" ]; then
@@ -56,10 +75,12 @@ if [ ! "$(docker ps -q -f name=$container_name)" ]; then
     #
     docker run -d \
                --name $container_name \
-               -v ${volume_directory}:${container_volume} \
-               --entrypoint="${container_volume}offline-installer/build/docker-entrypoint.sh" \
-               -it ${docker_image} \
+               -v ${volume_offline_directory}:${container_offline_volume} \
+               -v ${volume_repo_directory}:${container_repo_volume} \
                --rm \
-               --directory ${container_volume}resources/pkg/rhel/ \
-               --list ${container_volume}offline-installer/build/data_lists/
+               --entrypoint="${container_offline_volume}docker-entrypoint.sh" \
+               -it ${docker_image} \
+               --directory ${container_repo_volume} \
+               --list ${container_offline_volume}data_lists/
+    docker logs $(docker ps --filter "name=centos_repo" --format '{{.ID}}' -a) -f
 fi
index 798e1f0..1b4ec53 100755 (executable)
@@ -1,75 +1,71 @@
 #!/usr/bin/env bash
 
 # Path where will be created repository (in container)
-OOM_REPO_DIR=""
+OFFLINE_REPO_DIR=""
 
 # Path where is stored onap_rpm.list file
 RPM_LIST_DIR=""
 
+help () {
+    echo -e "Docker entrypoint script for creating RPM repository\n"
+    echo "usage: create-repo.sh [-d|--directory output directory] [-l|--list input rpm list directory]"
+    echo "-h --help: Show this help"
+    echo "-d --directory: set path for repo directory in container"
+    echo -e "-l --list: set path where rpm list is stored in container\n"
+    echo "Both paths have to be set with shared volume between"
+    echo "container and host computer. Default path in container is: /tmp/"
+    echo "Repository will be created at: /<path>/resources/pkg/rhel/"
+    echo "RMP list is stored at: ./data_list/"
+}
+
 # Getting input parametters
 POSITIONAL=()
+if [[ $# -eq 0 ]] ; then
+    help # show help
+    exit 0
+fi
 while [[ $# -gt 0 ]]
 do
-    key="$1"
-    case $key in
+    case "$1" in
         -h|--help)
             # Help parametter
-            echo -e "Docker entrypoint script for creating RPM repository\n"
-            echo "-h --help: Show this help"
-            echo "-d --directory: set path for repo directory in container"
-            echo -e "-l --list: set path where rpm list is stored in container\n"
-            echo "Both paths have to be set with shared volume between"
-            echo "container and host computer. Default path in container is: /tmp/"
-            echo "Repository will be created at: /<path>/resources/pkg/rhel/"
-            echo "RMP list is stored at: /<path>/offline-installer/build/data_list/"
-            shift # past argument
-            shift # past value
+            help # show help
             exit
             ;;
         -d|--directory)
             # Directory parametter
             # Sets path where will be created reposity
-            OOM_REPO_DIR="$2"
-            shift # past argument
-            shift # past value
+            OFFLINE_REPO_DIR="$2"
             ;;
         -l|--list)
             # List parametter
             # Sets path where is stored onap_rpm.list file
             RPM_LIST_DIR="$2"
-            shift # past argument
-            shift # past value
-            ;;
-        --default)
-            DEFAULT=YES
-            shift # past argument
             ;;
-        *) 
+        *)
             # unknown option
-            POSITIONAL+=("$1") # save it in an array for later
-            shift # past argument
+            help # show help
+            exit
             ;;
     esac
+    shift;shift
 done
 
 # Testing if directory parametter was used
-# If not variable is sets to default value /tmp/resources/pkg/rhel
-if test -z "$OOM_REPO_DIR"
+# If not variable is sets to default value /tmp/repo/resources/pkg/rhel
+if test -z "$OFFLINE_REPO_DIR"
 then
-    OOM_REPO_DIR="/tmp/resources/pkg/rhel"
+    OFFLINE_REPO_DIR="/tmp/repo/"
 fi
 
 # Testing if list parametter was used
-# If not variable is sets to default value /tmp/data-list
+# If not variable is sets to default value /tmp/offline/data-list
 if test -z "$RPM_LIST_DIR"
 then
-    RPM_LIST_DIR="/tmp/offline-installer/build/data_list/"
+    RPM_LIST_DIR="/tmp/offline/data_list/"
 
 fi
 
-# Create repo folder
-mkdir $OOM_REPO_DIR -p
-
 # Install createrepo package for create repository in folder
 # and yum-utils due to yum-config-manager for adding docker repository
 yum install createrepo yum-utils -y
@@ -78,7 +74,7 @@ yum install createrepo yum-utils -y
 yum-config-manager --add-repo=https://download.docker.com/linux/centos/7/x86_64/stable/
 
 # Download all packages from onap_rpm.list via yumdownloader to repository folder
-for i in $(cat ${RPM_LIST_DIR}onap_rpm.list | awk '{print $1}');do yumdownloader --resolve --downloadonly --destdir=${OOM_REPO_DIR} $i -y; done
+for i in $(cat ${RPM_LIST_DIR}onap_rpm.list | awk '{print $1}');do yumdownloader --resolve --downloadonly --destdir=${OFFLINE_REPO_DIR} $i -y; done
 
 # In repository folder create repository
-createrepo $OOM_REPO_DIR
+createrepo $OFFLINE_REPO_DIR
index 9b581cd..8b0c9b2 100644 (file)
@@ -110,16 +110,17 @@ Part 2. Download artifacts for offline installer
 
 .. note:: Skip this step if you have already all necessary resources and continue with Part 3. Populate local nexus
 
-Before downloading artifacts with ./download.py script is necessary to create local repository with RPM packages.
-This repository is created with docker container where is downloaded and stored in ../resources/pkg/rhel directory.
+
+There need to be created RPM repository containing packages which need to be installed on all nodes.
 
 ::
-    # run the docker container with actual directory of offline-installer and resources
+
+    # run the docker container with -d parameter for destination directory with RPM packages
     ./offline-installer/build/create_repo.sh -d $(pwd)
 
-.. note::
-    If script fails with permissions, problem could be with SeLinux. Issue is possible to solve by:
+.. note:: If script fails with permissions, problem could be with SeLinux. Issue is possible to solve by:
     ::
+
       # Change security context of directory
       chcon -Rt svirt_sandbox_file_t $(pwd)
 
@@ -264,16 +265,7 @@ Appendix 1. Step-by-step download procedure
        # Following step will download rke, kubectl and helm binaries
        ./build/download/download.py --http ./build/data_lists/infra_bin_utils.sh ../resources/downloads
 
-**Step 5 - rpms**
-
-::
-
-      # Following step will download all rpms and create repo
-      ./build/download/download.py --rpm ./build/data_lists/onap_rpm.list ../resources/pkg/rhel
-
-      createrepo ../resources/pkg/rhel
-
-**Step 6 - pip packages**
+**Step 5 - pip packages**
 
 ::