Distribute dependencies 64/6164/8
authorFatih Degirmenci <fatih.degirmenci@est.tech>
Mon, 5 Oct 2020 09:36:12 +0000 (09:36 +0000)
committerFatih Degirmenci <fatih.degirmenci@est.tech>
Sun, 11 Oct 2020 07:35:03 +0000 (07:35 +0000)
This change moves the dependencies required for Kubernetes stack to
stack itself, making sure we deal with the dependencies required for
it and no other stack.

This is achieved by
- moving operating system dependencies from engine core bindep.txt into
stack bindep.txt
- moving python dependencies from engine core requirements.txt into
stack requirements.txt
- taking setup-stack.sh script in use so engine core executes this script
from the stack

The benefits of this approach
- ability to control dependencies directly within the stack without
impacting other stacks and engine core
- package dependencies required for the stack itself and not everything
- allow identifying engine core dependencies so they can be made part of
stack packaging, enabling stacks to stop using leftovers of an earlier
deployment done for a different stack
- pave the way for multi distro support since some stacks may support
more than one distro and that support can be introduced and maintained
within corresponding stack
- deferred processing of dependencies allow to engine become functioning
faster than how it is know. also, the overall deployment time will be
shortened a bit with the help of this due to dealing with dependencies
based on stack

Depends-On: I713d0e333bc4a01c92e6aa6ae1a4e6f3d9efe2ad
Change-Id: I9508275fe581cea15af3c9e7dfa0b3342370460b

bindep.txt [new file with mode: 0644]
requirements.txt [new file with mode: 0644]

diff --git a/bindep.txt b/bindep.txt
new file mode 100644 (file)
index 0000000..5aee147
--- /dev/null
@@ -0,0 +1,21 @@
+# This file contains operating system package requirements for Kubernetes stack.
+# Do not modify this file unless you know what you are doing.
+# Modifying this file may result in unexpected behavior.
+# NOTE (fdegir): Kubernetes stack operating system package requirements
+# Kubernetes stack can be deployed on instances created using libvirt thus why
+# these packages are installed since we do not know what the target environment
+# is in advance, without doing further processing of user input.
+libvirt-bin     [platform:dpkg]
+libvirt-dev     [platform:dpkg]
+pkg-config      [platform:dpkg]
+python3-pymysql [platform:dpkg]
+python3-zmq     [platform:dpkg]
+qemu-utils      [platform:dpkg]
+qemu-kvm        [platform:dpkg]
+qemu-system-x86 [platform:dpkg]
+sgabios         [platform:dpkg]
+# vim: set ts=2 sw=2 expandtab:
index a4a4642..d403ea7 100644 (file)
     - absent
     - directory
-- name: Download pip packages using requirements.txt file
+# NOTE (fdegir): This could perhaps be moved to a different playbook or to engine core
+# itself so the collection of core packages are common across stacks
+- name: Download engine core pip packages using requirements.txt file
   command: "pip download -r {{ engine_path }}/requirements.txt --no-cache"
   changed_when: false
     chdir: "{{ pip_folder }}"
+- name: Download stack pip packages using requirements.txt file
+  command: "pip download -r {{ engine_path }}/engine/stack/{{ stack_type }}/requirements.txt --no-cache"
+  changed_when: false
+  args:
+    chdir: "{{ pip_folder }}"
 - name: Copy pip.conf
     src: pip.conf.j2
diff --git a/requirements.txt b/requirements.txt
new file mode 100644 (file)
index 0000000..9c766aa
--- /dev/null
@@ -0,0 +1,221 @@
+# This file contains python requirement version pins for Kubernetes stack.
+# Do not modify this file unless you know what you are doing.
+# Modifying this file may result in unexpected behavior.
+# NOTE (fdegir): Kubernetes stack python requirements
+# Kubernetes stack can be deployed on instances provisioned from OpenStack, VMs
+# created using libvirt, or on baremetal nodes. The requirements listed below
+# contain all the python packages necessary for Kubernetes stack.
+# vim: set ts=2 sw=2 expandtab:
index 3fde7ee..d927afb 100755 (executable)
@@ -33,4 +33,21 @@ export STACK_ROOT_DIR
 export DEPLOY_SCENARIO="${DEPLOY_SCENARIO:=k8-multus-plugins}"
 echo "Info  : Deploy scenario is $DEPLOY_SCENARIO"
+# NOTE (fdegir): we need to install stack specific operating system requirements
+# and python packages before proceeding further
+echo "Info  : Install stack operating system requirements listed in stack bindep.txt using $PKG_MGR"
+# bindep -b exits with non-zero if it identifies a missing package so we disable pipefail
+set +o pipefail
+# shellcheck disable=SC2046 disable=SC2086
+bindep -b &> /dev/null || redirect_cmd ${INSTALLER_CMD} $(bindep -b)
+set -o pipefail
+# TODO (fdegir): installation of pip packages fail due to not being able to find setuptools
+# as build dependency so we do --no-use-pep517 as workaround.
+# This needs to be revisited later on.
+echo "Info  : Install stack python packages listed in stack requirements.txt using pip"
+echo "        Please note that this may take some time"
+redirect_cmd pip install --no-use-pep517 --force-reinstall -r requirements.txt
 # vim: set ts=2 sw=2 expandtab:
index 13213c7..19b0cbd 100644 (file)
@@ -1,10 +1,56 @@
-# This file contains engine python requirement version pins.
-# Changing versions might have side effects!
+# This file contains python requirement version pins for tox.
+# Do not modify this file unless you know what you are doing.
+# Modifying this file may result in unexpected behavior.
-# NOTE: engine test requirements
+# NOTE (fdegir): tox python requirements
+# vim: set ts=2 sw=2 expandtab: