-# Copyright (c) 2018 Cisco and/or its affiliates.
+# Copyright (c) 2019 Cisco and/or its affiliates.
# 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:
FROM ubuntu:bionic-20180821
MAINTAINER csit-dev <csit-dev@lists.fd.io>
-LABEL Description="CSIT vpp-device ubuntu 18.04 baseline image"
-LABEL Vendor="cisco.com"
-LABEL Version="0.4"
+LABEL Description="CSIT vpp-device ubuntu 18.04 baseline image (x86)"
+LABEL Version="0.6"
# Setup the environment
ENV DEBIAN_FRONTEND=noninteractive
libnuma1 \
python-cffi \
python-enum34 \
+ python3-cffi \
&& rm -rf /var/lib/apt/lists/*
# Configure locales
&& mkdir -p /var/cache/vpp/python \
&& mkdir -p /var/run/sshd
-# PIP pre-cache
+# CSIT PIP pre-cache
RUN pip install \
docopt==0.6.2 \
ecdsa==0.13 \
numpy==1.14.5 \
scipy==1.1.0
+# VPP PIP pre-cache
+RUN pip install \
+ aenum
+
# SSH settings
RUN echo 'root:Csit1234' | chpasswd \
&& sed -i 's/#PermitRootLogin prohibit-password/PermitRootLogin yes/' /etc/ssh/sshd_config \
with_dict: "{{ proxy_env }}"
when: proxy_env is defined
-- name: Ubuntu specific
- import_tasks: ubuntu.yaml
- when: ansible_distribution|lower == 'ubuntu'
+- name: Install distribution - release - machine prerequisites
+ include_tasks: '{{ ansible_distribution|lower }}_{{ ansible_distribution_release }}.yaml'
- name: Set hostname
hostname:
---
-# file: roles/common/tasks/ubuntu.yaml
+# file: roles/common/tasks/ubuntu_bionic.yaml
-- name: Copy aarch64 apt sources file
+- name: Copy apt sources file
template:
- src: 'files/apt-sources-arm.list'
+ src: 'files/apt-sources_{{ ansible_distribution_release }}_{{ ansible_machine }}.list'
dest: '/etc/apt/sources.list'
tags: copy-apt-sources
- when: ansible_machine == 'aarch64'
-
-- name: Copy x86_64 apt sources file
- template:
- src: 'files/apt-sources.list'
- dest: '/etc/apt/sources.list'
- tags: copy-apt-sources
- when: ansible_machine == 'x86_64'
- name: Install CSIT dependencies
apt:
name: '{{ item }}'
state: 'present'
+ cache_valid_time: 3600
install_recommends: False
with_items:
- 'python-apt'
---
# file: roles/sut/tasks/main.yaml
-- name: Ubuntu specific
- import_tasks: ubuntu.yaml
- when: ansible_distribution|lower == 'ubuntu'
+- name: Install distribution - release - machine prerequisites
+ include_tasks: '{{ ansible_distribution|lower }}_{{ ansible_distribution_release }}.yaml'
- name: Taishan aarch64 specific
import_tasks: taishan_workaround.yaml
---
-# file: roles/sut/tasks/ubuntu.yaml
+# file: roles/sut/tasks/ubuntu_bionic.yaml
- name: Install CSIT dependencies
apt:
- 'openjdk-8-jdk'
- 'libpixman-1-dev'
- 'python-cffi'
+ - 'python-cffi-backend'
+ - 'python3-cffi'
+ - 'python3-cffi-backend'
tags: install-csit-dependencies
---
# file: roles/tg/tasks/main.yaml
-- name: Ubuntu specific
- import_tasks: ubuntu.yaml
- when: ansible_distribution|lower == 'ubuntu'
+- name: Install distribution - release - machine prerequisites
+ include_tasks: '{{ ansible_distribution|lower }}_{{ ansible_distribution_release }}.yaml'
---
-# file: roles/tg/tasks/ubuntu.yaml
+# file: roles/tg/tasks/ubuntu_bionic.yaml
- name: Install CSIT dependencies
apt:
+++ /dev/null
-# DISCLAIMER: BEFORE EDITING THIS FILE!
-#
-# This file has two closely related consequences.
-# The common part is that this file defines
-# the content of virtual Python environment
-# used when Robot tests are running.
-# The difference is in which machine the environment is created on.
-# For the Jenkins executor machines,
-# editing this file has no surprising consequences.
-#
-# But the environment is also being created
-# on virtual machines created by VIRL, which do have specific restrictions.
-# Complete package and setting snapshot (for both VIRL and Physical Testbed),
-# with network being limited in case of VIRL to local only.
-# This implies pip currently being set to site-packages only
-# for both VIRL and Physical Testbed.
-# So if the "virl image" applied on the machine
-# does not reflect the edits, some installations might fail.
-# Even if the failure may not directly impact execution,
-# this leads into inconsistency between installed environment
-# and the code base which may lead into fatal error or uncaught exceptions.
-#
-# The "virl image" is built from files such as
-# resources/tools/disk-image-builder/ubuntu/lists/ubuntu-16.04.1_2017-10-21_2.0/pip-requirements.txt
-# but the build is not automated,
-# the new "virl image" has to be built and applied manually
-# before your edit can pass.
-# This also means, incompatible virl images
-# would make existing tests fail until your edit is merged.
-#
-# TODO: Automate the virtualenv download and distribution
-# on all types of testbeds prior the test execution.
-# TODO: Figure out a way to verify edits to this file automatically.
-
-# TODO: Split into directly needed packages and their dependencies.
-docopt==0.6.2 # for pykwalify
-ecdsa==0.13
-enum34==1.1.2
-ipaddress==1.0.16
-paramiko==1.16.0
-pexpect==4.6.0
-pycrypto==2.6.1
-pykwalify==1.5.0
-pypcap==1.1.5
-python-dateutil==2.4.2 # for pykwalify
-PyYAML==3.11
-requests==2.9.1
-robotframework==2.9.2
-scapy==2.3.1
-scp==0.10.2
-six==1.12.0 # for python-dateutil
-
-# The following is only there for PLRsearch.
-dill==0.2.8.2
-numpy==1.14.5
-scipy==1.1.0
---
# file: roles/tg_sut/tasks/main.yaml
-- name: Ubuntu specific
- import_tasks: ubuntu.yaml
- when: ansible_distribution|lower == 'ubuntu'
+- name: Install distribution - release - machine prerequisites
+ include_tasks: '{{ ansible_distribution|lower }}_{{ ansible_distribution_release }}.yaml'
-- name: x86 specific
- import_tasks: x86_64.yaml
- when: ansible_machine == 'x86_64'
+- name: Machine specifics
+ include_tasks: '{{ ansible_machine }}.yaml'
- name: skylake specific
import_tasks: skylake.yaml
when: ("skylake" in groups) and inventory_hostname in groups['skylake']
-- name: aarch specific
- import_tasks: aarch64.yaml
- when: ansible_machine == 'aarch64'
-
- name: Copy netplan network config file
template:
src: 'files/netplan_config'
mode: '0644'
tags: copy-cpufrequtils
-- name: Copy Python requirements file
- copy:
- src: 'files/requirements.txt'
- dest: '/tmp/requirements.txt'
- tags: copy-pip
-
- name: Set ondemand service to disable
service:
name: 'ondemand'
enabled: 'no'
tags: set-ondemand
-- name: Install PIP requirements
+- name: Install CSIT PIP requirements
+ pip:
+ name: '{{ item }}'
+ with_items:
+ - 'docopt==0.6.2'
+ - 'ecdsa==0.13'
+ - 'enum34==1.1.2'
+ - 'ipaddress==1.0.16'
+ - 'paramiko==1.16.0'
+ - 'pexpect==4.6.0'
+ - 'pycrypto==2.6.1'
+ - 'pykwalify==1.5.0'
+ - 'pypcap==1.1.5'
+ - 'python-dateutil==2.4.2'
+ - 'PyYAML==3.11'
+ - 'requests==2.9.1'
+ - 'robotframework==2.9.2'
+ - 'scapy==2.3.1'
+ - 'scp==0.10.2'
+ - 'six==1.12.0'
+ - 'dill==0.2.8.2'
+ - 'numpy==1.14.5'
+ - 'scipy==1.1.0'
+ tags: install-pip
+
+- name: Install VPP PIP requirements
pip:
- requirements: '/tmp/requirements.txt'
+ name: 'aenum'
tags: install-pip
- name: Load vfio-pci by default
---
-# file: roles/tg_sut/tasks/ubuntu.yaml
+# file: roles/tg_sut/tasks/ubuntu_bionic.yaml
- name: Install CSIT dependencies
apt:
apt:
name: 'docker-{{ docker_edition }}={{ docker_apt_package_name }}'
state: 'present'
+ force: yes
tags: install-docker
- name: Creates Docker service directory