From 923175d15112a865f3f51e80dab88922c17340d6 Mon Sep 17 00:00:00 2001
From: Emma Foley <efoley@redhat.com>
Date: Wed, 21 Apr 2021 14:37:13 +0100
Subject: [docker] Reduce the number of build steps in containers

* Move collectd_apply_pull_request.sh to src/collectd/, which is
  where the Makefile expects this script to be anyway

* Use ARG instead of ENV in collectd container
  for COLLECTD_FLAVOR, COLLECTD_PULL_REQUESTS, WITH_DPDK

* Move the experimental sample configs to src/collectd
  The configs are copied into the src/collectd directory within the
  container anyway, so this skips a step in the container build.

* Remove initial package installation in containers
  Move the installation of these packages to the package install steps
  in the build script in systems/ instead.

* Remove unnecessary WORKDIR command
  The WORKDIR {repo_dir} is unnecessary, since the following commands
  are using absolute paths rather than relative paths.

Signed-off-by: Emma Foley <efoley@redhat.com>
Change-Id: I52b96a651cb5d9b644f11f5407cabf3fb21cb6a9
---
 docker/barometer-collectd-experimental/Dockerfile  | 23 ++++--------
 .../collectd_apply_pull_request.sh                 | 41 ---------------------
 .../experimental-configs/README                    |  1 -
 docker/barometer-collectd-latest/Dockerfile        | 12 +++----
 docker/barometer-collectd/Dockerfile               |  5 +--
 src/collectd/collectd_apply_pull_request.sh        | 42 ++++++++++++++++++++++
 .../collectd_sample_configs-experimental/README    |  1 +
 systems/centos/7/build_base_machine.sh             |  6 ++--
 systems/centos/8/build_base_machine.sh             |  8 ++++-
 systems/rhel/7/build_base_machine.sh               |  7 ++--
 systems/ubuntu/16.04/build_base_machine.sh         |  8 +++--
 11 files changed, 78 insertions(+), 76 deletions(-)
 delete mode 100755 docker/barometer-collectd-experimental/collectd_apply_pull_request.sh
 delete mode 100644 docker/barometer-collectd-experimental/experimental-configs/README
 create mode 100755 src/collectd/collectd_apply_pull_request.sh
 create mode 100644 src/collectd/collectd_sample_configs-experimental/README

diff --git a/docker/barometer-collectd-experimental/Dockerfile b/docker/barometer-collectd-experimental/Dockerfile
index 2cb26825..9565bdb4 100644
--- a/docker/barometer-collectd-experimental/Dockerfile
+++ b/docker/barometer-collectd-experimental/Dockerfile
@@ -1,4 +1,5 @@
-# Copyright 2017-2019 Intel Corporation and OPNFV. All rights reserved.
+# Copyright 2017-2021 Intel Corporation, Anuket and others.
+# All rights reserved.
 #
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
@@ -14,30 +15,18 @@
 #
 
 FROM centos:8
-RUN dnf update -y && \
-        dnf install -y which sudo git && \
-        dnf clean all && \
-        git config --global http.sslVerify false
 
+ARG COLLECTD_FLAVOR=experimental
+ARG COLLECTD_PULL_REQUESTS=
+ARG WITH_DPDK=n
 ENV DOCKER y
-ENV COLLECTD_FLAVOR experimental
-ARG COLLECTD_PULL_REQUESTS
-ENV WITH_DPDK y
 ENV repos_dir /src
 
-WORKDIR ${repos_dir}
 RUN mkdir -p ${repos_dir}/barometer
 COPY . ${repos_dir}/barometer
-COPY docker/barometer-collectd-experimental/collectd_apply_pull_request.sh \
-     ${repos_dir}/barometer/src/collectd/
-
-# copying additional experimental configs on top of configs for 'main'
-# branch release
-COPY docker/barometer-collectd-experimental/experimental-configs/* \
-     ${repos_dir}/barometer/src/collectd/collectd_sample_configs-master/
 
 WORKDIR ${repos_dir}/barometer/systems
-RUN sh ./build_base_machine.sh && \
+RUN ./build_base_machine.sh && \
         dnf clean all && rm -rf /var/cache/dnf && \
         useradd -ms /bin/bash collectd_exec && \
         echo "collectd_exec ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers
diff --git a/docker/barometer-collectd-experimental/collectd_apply_pull_request.sh b/docker/barometer-collectd-experimental/collectd_apply_pull_request.sh
deleted file mode 100755
index dbbc5f26..00000000
--- a/docker/barometer-collectd-experimental/collectd_apply_pull_request.sh
+++ /dev/null
@@ -1,41 +0,0 @@
-#! /bin/bash
-# Copyright 2019 Intel Corporation and OPNFV. All rights reserved.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-
-# This files contains list of pull requests to be applied on top
-# of main branch before building collectd included in docker
-# collectd-experimental container
-
-# Use this script with a COLLECTD_PULL_REQUESTS variable defined
-# for example:
-# COLLECTD_PULL_REQUESTS="3027,3028" ./collectd_apply_pull_request.sh
-
-if [ -z "$COLLECTD_PULL_REQUESTS" ];
-then
-	echo "COLLECTD_PULL_REQUESTS is unset, exiting"
-	exit
-fi
-
-IFS=', ' read -a PULL_REQUESTS <<< "$COLLECTD_PULL_REQUESTS"
-
-# during rebasing/merging git requires email & name to be set
-git config user.email "barometer-experimental@container"
-git config user.name "BarometerExperimental"
-
-for PR_ID in "${PULL_REQUESTS[@]}"
-do
-    echo "Applying pull request $PR_ID"
-    git pull --rebase origin pull/$PR_ID/head
-done
diff --git a/docker/barometer-collectd-experimental/experimental-configs/README b/docker/barometer-collectd-experimental/experimental-configs/README
deleted file mode 100644
index e4386358..00000000
--- a/docker/barometer-collectd-experimental/experimental-configs/README
+++ /dev/null
@@ -1 +0,0 @@
-Place here configuration files that are required by experimental pull requests
diff --git a/docker/barometer-collectd-latest/Dockerfile b/docker/barometer-collectd-latest/Dockerfile
index 4c01c870..b3a7a646 100644
--- a/docker/barometer-collectd-latest/Dockerfile
+++ b/docker/barometer-collectd-latest/Dockerfile
@@ -1,4 +1,5 @@
-# Copyright 2017-2019 Intel Corporation and OPNFV. All rights reserved.
+# Copyright 2017-2021 Intel Corporation, Anuket and others.
+# All rights reserved.
 #
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
@@ -14,17 +15,12 @@
 #
 
 FROM centos:8
-RUN dnf update -y && \
-        dnf install -y which sudo git && \
-        dnf clean all && \
-        git config --global http.sslVerify false
 
+ARG COLLECTD_FLAVOR=latest
+ARG WITH_DPDK=y
 ENV DOCKER y
-ENV COLLECTD_FLAVOR latest
-ENV WITH_DPDK y
 ENV repos_dir /src
 
-WORKDIR ${repos_dir}
 RUN mkdir -p ${repos_dir}/barometer
 COPY . ${repos_dir}/barometer
 
diff --git a/docker/barometer-collectd/Dockerfile b/docker/barometer-collectd/Dockerfile
index ad4a1579..e263e97f 100644
--- a/docker/barometer-collectd/Dockerfile
+++ b/docker/barometer-collectd/Dockerfile
@@ -1,4 +1,5 @@
-# Copyright 2017-2019 Intel Corporation and OPNFV. All rights reserved.
+# Copyright 2017-2021 Intel Corporation, Anuket and others.
+# All rights reserved.
 #
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
@@ -15,7 +16,7 @@
 
 FROM centos:8
 RUN dnf update -y && \
-        dnf install -y which sudo git && \
+        dnf install -y which sudo git-core && \
         dnf clean all && \
         git config --global http.sslVerify false
 
diff --git a/src/collectd/collectd_apply_pull_request.sh b/src/collectd/collectd_apply_pull_request.sh
new file mode 100755
index 00000000..35af2981
--- /dev/null
+++ b/src/collectd/collectd_apply_pull_request.sh
@@ -0,0 +1,42 @@
+#! /bin/bash
+# Copyright 2019-2021 Intel Corporation, Anuket and others.
+# All rights reserved.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+# This files contains list of pull requests to be applied on top
+# of main branch before building collectd included in docker
+# collectd-experimental container
+
+# Use this script with a COLLECTD_PULL_REQUESTS variable defined
+# for example:
+# COLLECTD_PULL_REQUESTS="3027,3028" ./collectd_apply_pull_request.sh
+
+if [ -z "$COLLECTD_PULL_REQUESTS" ];
+then
+	echo "COLLECTD_PULL_REQUESTS is unset, exiting"
+	exit
+fi
+
+IFS=', ' read -a PULL_REQUESTS <<< "$COLLECTD_PULL_REQUESTS"
+
+# during rebasing/merging git requires email & name to be set
+git config user.email "barometer-experimental@container"
+git config user.name "BarometerExperimental"
+
+for PR_ID in "${PULL_REQUESTS[@]}"
+do
+    echo "Applying pull request $PR_ID"
+    git pull --rebase origin pull/$PR_ID/head
+done
diff --git a/src/collectd/collectd_sample_configs-experimental/README b/src/collectd/collectd_sample_configs-experimental/README
new file mode 100644
index 00000000..e4386358
--- /dev/null
+++ b/src/collectd/collectd_sample_configs-experimental/README
@@ -0,0 +1 @@
+Place here configuration files that are required by experimental pull requests
diff --git a/systems/centos/7/build_base_machine.sh b/systems/centos/7/build_base_machine.sh
index 41595d7e..346160fa 100755
--- a/systems/centos/7/build_base_machine.sh
+++ b/systems/centos/7/build_base_machine.sh
@@ -2,7 +2,8 @@
 #
 # Build a base machine for CentOS distro
 #
-# Copyright 2017-2019 Intel Corporation and OPNFV. All rights reserved.
+# Copyright 2017-2021 Intel Corporation, Anuket and others.
+# All rights reserved.
 #
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
@@ -43,7 +44,8 @@ flex
 bison
 libtool
 pkg-config
-git
+git-core
+sudo
 rpm-build
 libcap-devel
 xfsprogs-devel
diff --git a/systems/centos/8/build_base_machine.sh b/systems/centos/8/build_base_machine.sh
index 8486f3c0..ceb583d7 100755
--- a/systems/centos/8/build_base_machine.sh
+++ b/systems/centos/8/build_base_machine.sh
@@ -2,7 +2,8 @@
 #
 # Build a base machine for CentOS distro
 #
-# Copyright 2017-2019 Intel Corporation and OPNFV. All rights reserved.
+# Copyright 2017-2021 Intel Corporation, Anuket and others.
+# All rights reserved.
 #
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
@@ -21,6 +22,7 @@
 #   Aihua Li, Huawei Technologies.
 #   Martin Klozik, Intel Corporation.
 #   Maryam Tahhan, Intel Corporation.
+#   Emma Foley, Red Hat.
 # Synchronize package index files
 dnf -y update
 
@@ -51,6 +53,7 @@ bison
 libtool
 pkg-config
 git-core
+sudo
 rpm-build
 libcap-devel
 xfsprogs-devel
@@ -79,6 +82,9 @@ rrdtool-devel
 dpdk-19.11.3
 qpid-proton-c-devel
 
+# ping collectd-6
+liboping-devel
+
 #install epel release required for git-review
 epel-release
 python3-libvirt
diff --git a/systems/rhel/7/build_base_machine.sh b/systems/rhel/7/build_base_machine.sh
index 7bb97267..ac9de4f5 100755
--- a/systems/rhel/7/build_base_machine.sh
+++ b/systems/rhel/7/build_base_machine.sh
@@ -2,7 +2,8 @@
 #
 # Build a base machine for RHEL distro
 #
-# Copyright 2016-2019 Intel Corporation and OPNFV. All rights reserved.
+# Copyright 2016-2021 Intel Corporation, Anuket and others.
+# All rights reserved.
 #
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
@@ -21,6 +22,7 @@
 #   Aihua Li, Huawei Technologies.
 #   Martin Klozik, Intel Corporation.
 #   Maryam Tahhan, Intel Corporation.
+#   Emma Foley, Red Hat.
 # Synchronize package index files
 yum -y update
 
@@ -43,7 +45,8 @@ flex
 bison
 libtool
 pkg-config
-git
+git-core
+sudo
 rpm-build
 libcap-devel
 xfsprogs-devel
diff --git a/systems/ubuntu/16.04/build_base_machine.sh b/systems/ubuntu/16.04/build_base_machine.sh
index d74ec6d8..d04d587e 100755
--- a/systems/ubuntu/16.04/build_base_machine.sh
+++ b/systems/ubuntu/16.04/build_base_machine.sh
@@ -15,9 +15,13 @@
 #
 
 set -eux
-apt-get -y install build-essential dh-autoreconf fakeroot  devscripts dpkg-dev git wget
 
-apt-get -y install \
+export DEBIAN_FRONTEND=noninteractive
+
+apt-get -yq update
+apt-get -yq install build-essential dh-autoreconf fakeroot devscripts dpkg-dev git-core wget sudo
+
+apt-get -yq install \
     debhelper dpkg-dev po-debconf dh-systemd dh-strip-nondeterminism \
     bison flex autotools-dev libltdl-dev pkg-config \
     iptables-dev \
-- 
cgit