Merge pull request #50 from netmanagers/master

Fix UTF issues in 2019.2
This commit is contained in:
Imran Iqbal 2019-03-06 18:15:45 +00:00 committed by GitHub
commit b9309db30c
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
19 changed files with 459 additions and 135 deletions

1
.gitignore vendored
View file

@ -47,6 +47,7 @@ coverage.xml
.hypothesis/ .hypothesis/
.kitchen .kitchen
.kitchen.local.yml .kitchen.local.yml
kitchen.local.yml
# Translations # Translations
*.mo *.mo

View file

@ -1,98 +0,0 @@
---
driver:
name: docker
driver_config:
use_sudo: false
privileged: true
provision_command: mkdir -p /run/sshd
platforms:
- name: debian-9
driver_config:
run_command: /lib/systemd/systemd
provision_command:
- apt-get install udev -y
- name: ubuntu-18.04
driver_config:
run_command: /lib/systemd/systemd
provision_command:
- apt-get install udev -y
- name: fedora-27
driver_config:
run_command: /usr/lib/systemd/systemd
- name: centos-7
driver_config:
image: saltstack/centos-7-minimal
run_command: /usr/lib/systemd/systemd
provisioner:
name: salt_solo
log_level: info
require_chef: false
salt_version: latest
formula: packages
salt_copy_filter:
- .kitchen
- .git
pillars-from-files:
packages.sls: pillar.example
pillars:
top.sls:
base:
'*':
- packages
state_top:
base:
'*':
- packages
verifier:
name: inspec
sudo: true
# cli, documentation, html, progress, json, json-min, json-rspec, junit
reporter:
- cli
inspec_tests:
- path: test/integration/default
suites:
- name: deb
excludes:
- centos-7
- fedora-27
- name: fedora
excludes:
- debian-9
- ubuntu-18.04
- centos-7
provisioner:
pillars-from-files:
packages.sls: test/integration/default/pillar.example.fedora
- name: centos
excludes:
- debian-9
- ubuntu-18.04
- fedora-27
provisioner:
dependencies:
- name: epel
repo: git
source: https://github.com/saltstack-formulas/epel-formula.git
state_top:
base:
'*':
- epel
- packages
pillars-from-files:
packages.sls: test/integration/default/pillar.example.redhat
pillars:
top.sls:
base:
'*':
- epel
- packages
epel.sls:
disabled: false

View file

@ -11,9 +11,11 @@ before_install:
env: env:
matrix: matrix:
- INSTANCE: deb-debian-9 - INSTANCE: deb-debian-9
- INSTANCE: deb-ubuntu-1804 - INSTANCE: ubu16-ubuntu-1604
- INSTANCE: centos-centos-7 - INSTANCE: ubu18-ubuntu-1804
- INSTANCE: rpm-centos-7
- INSTANCE: fed-fedora
- INSTANCE: sus-opensuse-leap-salt-minion
script: script:
- bundle exec kitchen verify ${INSTANCE} - bundle exec kitchen verify ${INSTANCE}

View file

@ -1,7 +1,7 @@
source "https://rubygems.org" source "https://rubygems.org"
gem "test-kitchen", '>=1.20.0' gem "test-kitchen"
gem "kitchen-docker" gem "kitchen-docker"
gem "kitchen-salt", ">=0.1.0" gem "kitchen-salt"
gem "kitchen-inspec" gem "kitchen-inspec"

View file

@ -172,7 +172,9 @@ for integration tests.
Tested on Tested on
* Debian/9 * Debian/9
* Debian/8 (with backports)
* Centos/7 * Centos/7
* Fedora/27 * Fedora/27
* Ubuntu/16.04
* Ubuntu/18.04 * Ubuntu/18.04
* Opensuse/leap

180
kitchen.yml Normal file
View file

@ -0,0 +1,180 @@
# -*- coding: utf-8 -*-
# vim: ft=yaml
---
# For help on this file's format, see https://kitchen.ci/
driver:
name: docker
driver_config:
use_sudo: false
privileged: true
provision_command: mkdir -p /run/sshd
# Make sure the platforms listed below match up with
# the `env.matrix` instances defined in `.travis.yml`
platforms:
# The `run_command` used for each platform is required to
# test `systemd` services in docker
- name: debian-9
driver_config:
image: debian:9
run_command: /lib/systemd/systemd
provision_command:
- apt-get update && apt-get install -y udev locales
- name: ubuntu-18.04
driver_config:
image: ubuntu:18.04
run_command: /lib/systemd/systemd
provision_command:
- apt-get update && apt-get install -y udev locales
- name: ubuntu-16.04
driver_config:
image: ubuntu:16.04
run_command: /lib/systemd/systemd
provision_command:
- apt-get update && apt-get install -y udev locales
- locale-gen en_US.UTF-8
- update-locale LANG=en_US.UTF-8
- name: centos-7
driver_config:
image: centos:7
run_command: /usr/lib/systemd/systemd
provision_command:
- yum -y update && yum -y install udev git
# To test remote packages in RPM envs
- rpm --import https://zoom.us/linux/download/pubkey
- name: fedora
driver_config:
image: fedora
run_command: /usr/lib/systemd/systemd
provision_command:
- yum -y update && yum -y install udev git
# To test remote packages in RPM envs
- rpm --import https://zoom.us/linux/download/pubkey
# As of February 2019, there have been problems getting `opensuse` to work:
# * `opensuse` is deprecated
# * `opensuse/leap` grabs `15.x`, which doesn't run the `inspec` tests
# * `opensuse/tumbleweed` doesn't install `salt-minion`
# * `opensuse/leap:42.3` does work
# * `opensuse/salt-minion` uses `42.3` with `salt-minion` pre-installed
- name: opensuse-leap-salt-minion
driver_config:
image: opensuse/salt-minion
run_command: /usr/lib/systemd/systemd
provision_command:
- zypper refresh && zypper install -y udev git glibc-locale
- systemctl enable sshd.service
- cat /etc/os-release
# To test remote packages in RPM envs
- rpm --import https://zoom.us/linux/download/pubkey
provisioner:
name: salt_solo
log_level: info
require_chef: false
salt_version: latest
formula: packages
salt_copy_filter:
- .kitchen
- .git
pillars_from_files:
packages.sls: pillar.example
pillars:
top.sls:
base:
'*':
- packages
state_top:
base:
'*':
- packages
verifier:
name: inspec
sudo: true
# cli, documentation, html, progress, json, json-min, json-rspec, junit
reporter:
- cli
inspec_tests:
- path: test/integration/default
suites:
- name: deb
excludes:
- ubuntu-16.04
- ubuntu-18.04
- centos-7
- fedora
- opensuse-leap-salt-minion
- name: ubu18
excludes:
- debian-9
- ubuntu-16.04
- centos-7
- fedora
- opensuse-leap-salt-minion
provisioner:
pillars_from_files:
packages.sls: test/integration/default/pillar.example.ubuntu.1804
- name: ubu16
excludes:
- debian-9
- ubuntu-18.04
- centos-7
- fedora
- opensuse-leap-salt-minion
provisioner:
pillars_from_files:
packages.sls: test/integration/default/pillar.example.ubuntu.1604
- name: fed
excludes:
- debian-9
- ubuntu-16.04
- ubuntu-18.04
- centos-7
- opensuse-leap-salt-minion
provisioner:
pillars_from_files:
packages.sls: test/integration/default/pillar.example.fedora
- name: sus
excludes:
- debian-9
- ubuntu-16.04
- ubuntu-18.04
- centos-7
- fedora
provisioner:
pillars_from_files:
packages.sls: test/integration/default/pillar.example.opensuse
- name: rpm
excludes:
- debian-9
- ubuntu-16.04
- ubuntu-18.04
- fedora
- opensuse-leap-salt-minion
provisioner:
dependencies:
- name: epel
repo: git
source: https://github.com/saltstack-formulas/epel-formula.git
state_top:
base:
'*':
- epel
- packages
pillars_from_files:
packages.sls: test/integration/default/pillar.example.redhat
pillars:
top.sls:
base:
'*':
- epel
- packages
epel.sls:
disabled: false

View file

@ -9,7 +9,7 @@ include:
extend: extend:
pkg_req_pkgs: pkg_req_pkgs:
pkg.installed: pkg.installed:
- pkgs: {{ req_packages }} - pkgs: {{ req_packages | json }}
{% set wanted_archives = packages.archives.required.archives %} {% set wanted_archives = packages.archives.required.archives %}
{% do wanted_archives.update( packages.archives.wanted ) %} {% do wanted_archives.update( packages.archives.wanted ) %}

View file

@ -10,7 +10,7 @@
### REQ PKGS (without these, some of the WANTED GEMS will fail to install) ### REQ PKGS (without these, some of the WANTED GEMS will fail to install)
gem_req_pkgs: gem_req_pkgs:
pkg.installed: pkg.installed:
- pkgs: {{ req_pkgs }} - pkgs: {{ req_pkgs | json }}
### GEMS to install ### GEMS to install
# (requires the ruby/rubygem deb/rpm installed, either by the system or listed in # (requires the ruby/rubygem deb/rpm installed, either by the system or listed in

View file

@ -5,6 +5,10 @@ Suse:
required: required:
pkgs: pkgs:
- python3-pip - python3-pip
gems:
required:
pkgs:
- ruby-common
Debian: Debian:
pips: pips:

View file

@ -11,7 +11,7 @@
### REQ PKGS (without these, some of the WANTED PIPS will fail to install) ### REQ PKGS (without these, some of the WANTED PIPS will fail to install)
pip_req_pkgs: pip_req_pkgs:
pkg.installed: pkg.installed:
- pkgs: {{ req_pkgs }} - pkgs: {{ req_pkgs | json }}
{% if pip_config %} {% if pip_config %}
pip_config: pip_config:
@ -53,7 +53,7 @@ packages pips install {{ pn }}:
packages pips remove {{ upn }}: packages pips remove {{ upn }}:
{%- if grains.os_family in ('Suse',) %} {%- if grains.os_family in ('Suse',) %}
cmd.run: cmd.run:
- name: /usr/bin/pip uninstall {{ pn }} - name: /usr/bin/pip uninstall {{ upn }}
{%- else %} {%- else %}
pip.removed: pip.removed:
- name: {{ upn }} - name: {{ upn }}

View file

@ -12,7 +12,7 @@
### PRE-REQ PKGS (without these, some of the WANTED PKGS will fail to install) ### PRE-REQ PKGS (without these, some of the WANTED PKGS will fail to install)
pkg_req_pkgs: pkg_req_pkgs:
pkg.installed: pkg.installed:
- pkgs: {{ req_packages }} - pkgs: {{ req_packages | json }}
{% if req_states %} {% if req_states %}
- require: - require:
{% for dep in req_states %} {% for dep in req_states %}
@ -29,7 +29,7 @@ held_pkgs:
- {{ p }}: {{ v }} - {{ p }}: {{ v }}
{% endfor %} {% endfor %}
{% else %} {% else %}
- pkgs: {{ held_packages }} - pkgs: {{ held_packages | json }}
{% endif %} {% endif %}
{% if grains['os_family'] not in ['Suse'] %} {% if grains['os_family'] not in ['Suse'] %}
- hold: true - hold: true
@ -44,7 +44,7 @@ held_pkgs:
wanted_pkgs: wanted_pkgs:
pkg.installed: pkg.installed:
- pkgs: {{ wanted_packages }} - pkgs: {{ wanted_packages | json }}
{% if grains['os_family'] not in ['Suse'] %} {% if grains['os_family'] not in ['Suse'] %}
- hold: false - hold: false
{% endif %} {% endif %}
@ -58,5 +58,5 @@ wanted_pkgs:
unwanted_pkgs: unwanted_pkgs:
pkg.purged: pkg.purged:
- pkgs: {{ unwanted_packages }} - pkgs: {{ unwanted_packages | json }}

View file

@ -22,11 +22,11 @@ include:
extend: extend:
unwanted_pkgs: unwanted_pkgs:
pkg.purged: pkg.purged:
- pkgs: {{ unwanted_packages }} - pkgs: {{ unwanted_packages | json }}
pkg_req_pkgs: pkg_req_pkgs:
pkg.installed: pkg.installed:
- pkgs: {{ req_packages }} - pkgs: {{ req_packages | json }}
{% if req_states %} {% if req_states %}
- require: - require:
{% for dep in req_states %} {% for dep in req_states %}

View file

@ -24,9 +24,13 @@ packages:
- wget - wget
- git - git
pips: pips:
#required: required:
# pkgs: pkgs:
# - python2-pip # Pillar parameters have precedence so, if you add a package here, you
# should also add the python pip package you want. Otherwise, the formula
# will take care of getting it if needed.
- libpython2.7-dev
- python-pip
wanted: wanted:
- dxpy - dxpy
- attrs - attrs
@ -38,7 +42,7 @@ packages:
global: global:
timeout: 120 timeout: 120
default-timeout: 120 default-timeout: 120
proxy: http://proxy.example.com:3128 # proxy: http://proxy.example.com:3128
gems: gems:
wanted: wanted:
- progressbar - progressbar

View file

@ -1,8 +1,8 @@
packages: packages:
pkgs: pkgs:
held: held:
alien: 8.95-5.fc27 alien: 8.95-8.fc29
iotop: 0.6-15.fc27 iotop: 0.6-18.fc29
wanted: wanted:
- git - git
- less - less
@ -16,14 +16,16 @@ packages:
- git - git
- python2-dnf-plugin-versionlock - python2-dnf-plugin-versionlock
- python3-dnf-plugin-versionlock - python3-dnf-plugin-versionlock
pips: # Not testing pips in FC29 because it still ships 2018.3.3
wanted: # which breaks with pip > 18 (https://github.com/saltstack/salt/issues/49967)
- dxpy # pips:
- attrs # wanted:
unwanted: # - dxpy
- campbel # - attrs
- reverse_geocode # unwanted:
- indy-crypto # - campbel
# - reverse_geocode
# - indy-crypto
gems: gems:
wanted: wanted:
- progressbar - progressbar

View file

@ -0,0 +1,27 @@
packages:
pkgs:
wanted:
- git
- less
- bc
- curl
- fail2ban
unwanted:
- avahi-daemon
required:
pkgs:
- git
# Not testing pips in opensuse because it requires upgrading a bunch of
# pip dependencies which are out of the scope of this formula.
# If you can provide a PR to fix this tests, you're welcomed!
# pips:
gems:
wanted:
- progressbar
- minitest
unwanted:
- diff-lcs
- kitchen-vagrant
- kwalify
remote_pkgs:
zoom: 'https://zoom.us/client/latest/zoom_openSUSE_x86_64.rpm'

View file

@ -0,0 +1,92 @@
packages:
pkgs:
# A dict of "package: version" pairs:
held:
alien: 8.95
iotop: 0.6-1
# Alternativelly, held packages can also be specified as a list with
# no versions. In this case, the package will be held in the installed
# version.
# held:
# - alien
# - iotop
wanted:
- git
- less
- bc
- curl
- fail2ban
unwanted:
- avahi-daemon
required:
pkgs:
- wget
- git
pips:
required:
pkgs:
- libpython2.7-dev
- python-pip
wanted:
- dxpy
- attrs
unwanted:
- campbel
- reverse_geocode
- indy-crypto
config:
global:
timeout: 120
default-timeout: 120
# proxy: http://proxy.example.com:3128
gems:
wanted:
- progressbar
- minitest
unwanted:
- diff-lcs
- kitchen-vagrant
- kwalify
snaps:
wanted:
- hello-world
classic:
- test-snapd-hello-classic
unwanted:
- goodbye-world
archives:
wanted:
terminator:
dest: /usr/local/terminator/
options: '--strip-components=1' #recommended option, but beware tarbombs
dl:
format: tar
source: https://launchpad.net/terminator/gtk3/1.91/+download/terminator-1.91.tar.gz
#hashurl: https://launchpad.net/terminator/gtk3/1.91/+download/terminator-1.91.tar.gz/+md5
hashsum: md5=2eed999d7a41f2e18eaa511bbbf80f58
phantomjs:
dest: /usr/local/src/ #beware tarbombs
user: root
mode: '0700'
dl:
format: tar
source: https://bitbucket.org/ariya/phantomjs/downloads/phantomjs-2.1.1-linux-x86_64.tar.bz2
hashsum: md5=1c947d57fce2f21ce0b43fe2ed7cd361
blockbox:
dest: /usr/local/src/
dl:
format: raw
source: https://raw.githubusercontent.com/openstack/cinder/master/contrib/block-box/docker-compose.yml
hashsum: 1751f8e4f6b4cddd8c4843a0f4473274
kubectl:
dest: /usr/local/bin
dl:
format: bin
source: https://storage.googleapis.com/kubernetes-release/release/v1.12.0/bin/darwin/amd64/kubectl
unwanted:
- /usr/local/boring_archive_software
remote_pkgs:
zoom: 'https://zoom.us/client/latest/zoom_amd64.deb'

View file

@ -0,0 +1,94 @@
packages:
pkgs:
# A dict of "package: version" pairs:
held:
alien: 8.95
iotop: 0.6-2
# Alternativelly, held packages can also be specified as a list with
# no versions. In this case, the package will be held in the installed
# version.
# held:
# - alien
# - iotop
wanted:
- git
- less
- bc
- curl
- fail2ban
unwanted:
- avahi-daemon
required:
pkgs:
- wget
- git
pips:
required:
pkgs:
- libpython2.7-dev
- python-pip
wanted:
- dxpy
- attrs
unwanted:
- campbel
- reverse_geocode
- indy-crypto
config:
global:
timeout: 120
default-timeout: 120
# proxy: http://proxy.example.com:3128
gems:
wanted:
- progressbar
- minitest
unwanted:
- diff-lcs
- kitchen-vagrant
- kwalify
# Disable Snaps testing in Ubuntu 18 due to
# https://github.com/saltstack-formulas/packages-formula/issues/44
# snaps:
# wanted:
# - hello-world
# classic:
# - test-snapd-hello-classic
# unwanted:
# - goodbye-world
archives:
wanted:
terminator:
dest: /usr/local/terminator/
options: '--strip-components=1' #recommended option, but beware tarbombs
dl:
format: tar
source: https://launchpad.net/terminator/gtk3/1.91/+download/terminator-1.91.tar.gz
#hashurl: https://launchpad.net/terminator/gtk3/1.91/+download/terminator-1.91.tar.gz/+md5
hashsum: md5=2eed999d7a41f2e18eaa511bbbf80f58
phantomjs:
dest: /usr/local/src/ #beware tarbombs
user: root
mode: '0700'
dl:
format: tar
source: https://bitbucket.org/ariya/phantomjs/downloads/phantomjs-2.1.1-linux-x86_64.tar.bz2
hashsum: md5=1c947d57fce2f21ce0b43fe2ed7cd361
blockbox:
dest: /usr/local/src/
dl:
format: raw
source: https://raw.githubusercontent.com/openstack/cinder/master/contrib/block-box/docker-compose.yml
hashsum: 1751f8e4f6b4cddd8c4843a0f4473274
kubectl:
dest: /usr/local/bin
dl:
format: bin
source: https://storage.googleapis.com/kubernetes-release/release/v1.12.0/bin/darwin/amd64/kubectl
unwanted:
- /usr/local/boring_archive_software
remote_pkgs:
zoom: 'https://zoom.us/client/latest/zoom_amd64.deb'

View file

@ -1,11 +1,18 @@
### WANTED/REQUIRED ### WANTED/REQUIRED
case os[:name]
when 'fedora', 'opensuse'
wanted_pips = []
else
wanted_pips = %w{
dxpy
attrs
}
end
control 'Wanted/Required python packages' do control 'Wanted/Required python packages' do
title 'should be installed' title 'should be installed'
%w{ wanted_pips.each do |p|
dxpy
attrs
}.each do |p|
describe pip(p) do describe pip(p) do
it { should be_installed } it { should be_installed }
end end

View file

@ -23,15 +23,22 @@ when 'fedora'
python3-dnf-plugin-versionlock python3-dnf-plugin-versionlock
) )
held_packages = { held_packages = {
'alien': '8.95-5.fc27', 'alien': '8.95-8.fc29',
'iotop': '0.6-15.fc27' 'iotop': '0.6-18.fc29'
} }
lock_file = '/etc/dnf/plugins/versionlock.list' lock_file = '/etc/dnf/plugins/versionlock.list'
# Adding empty Suse entries, to get tests passing
# Don't know the correct values to add here.
when 'opensuse'
os_packages = %w()
held_packages = {}
lock_file = ''
when 'debian', 'ubuntu' when 'debian', 'ubuntu'
os_packages = %w() os_packages = %w()
held_packages = { held_packages = {
'alien': '8.95', 'alien': '8.95',
'iotop': '0.6-2' # To match also ubuntu16's
'iotop': '0.6-'
} }
lock_file = '/var/lib/dpkg/status' lock_file = '/var/lib/dpkg/status'
end end