diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 4350b9e..5bf86ee 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -132,7 +132,8 @@ v3002-py3-centos-8-3002-2-py3: {extends: '.test_instance'} v3002-py3-centos-7-3002-2-py3: {extends: '.test_instance'} v3002-py3-fedora-33-3002-2-py3: {extends: '.test_instance'} # v3002-py3-fedora-32-3002-2-py3: {extends: '.test_instance'} -# v3002-py3-opensuse-leap-152-3002-2-py3: {extends: '.test_instance'} +v3002-py3-opensuse-leap-152-3002-2-py3: {extends: '.test_instance'} +v3002-py3-opensuse-tmbl-latest-3002-2-py3: {extends: '.test_instance'} v3002-py3-amazonlinux-2-3002-2-py3: {extends: '.test_instance'} v3002-py3-oraclelinux-8-3002-2-py3: {extends: '.test_instance'} v3002-py3-oraclelinux-7-3002-2-py3: {extends: '.test_instance'} @@ -148,6 +149,7 @@ v3001-py3-centos-8-3001-4-py3: {extends: '.test_instance'} # v3001-py3-fedora-33-3001-4-py3: {extends: '.test_instance'} v3001-py3-fedora-32-3001-4-py3: {extends: '.test_instance'} # v3001-py3-opensuse-leap-152-3001-4-py3: {extends: '.test_instance'} +# v3001-py3-opensuse-tmbl-latest-3001-4-py3: {extends: '.test_instance'} # v3001-py3-amazonlinux-2-3001-4-py3: {extends: '.test_instance'} v3001-py3-oraclelinux-8-3001-4-py3: {extends: '.test_instance'} # v3001-py3-oraclelinux-7-3001-4-py3: {extends: '.test_instance'} @@ -159,7 +161,7 @@ v3000-py3-ubuntu-1804-3000-6-py3: {extends: '.test_instance'} # v3000-py3-ubuntu-1604-3000-6-py3: {extends: '.test_instance'} # v3000-py3-centos-8-3000-6-py3: {extends: '.test_instance'} v3000-py3-centos-7-3000-6-py3: {extends: '.test_instance'} -v3000-py3-opensuse-leap-152-3000-6-py3: {extends: '.test_instance'} +# v3000-py3-opensuse-leap-152-3000-6-py3: {extends: '.test_instance'} # v3000-py3-amazonlinux-2-3000-6-py3: {extends: '.test_instance'} # v3000-py3-oraclelinux-8-3000-6-py3: {extends: '.test_instance'} v3000-py3-oraclelinux-7-3000-6-py3: {extends: '.test_instance'} diff --git a/.travis.yml b/.travis.yml index 9173308..6d08a3d 100644 --- a/.travis.yml +++ b/.travis.yml @@ -92,7 +92,8 @@ jobs: - env: INSTANCE=v3002-py3-centos-7-3002-2-py3 - env: INSTANCE=v3002-py3-fedora-33-3002-2-py3 # - env: INSTANCE=v3002-py3-fedora-32-3002-2-py3 - # - env: INSTANCE=v3002-py3-opensuse-leap-152-3002-2-py3 + - env: INSTANCE=v3002-py3-opensuse-leap-152-3002-2-py3 + - env: INSTANCE=v3002-py3-opensuse-tmbl-latest-3002-2-py3 - env: INSTANCE=v3002-py3-amazonlinux-2-3002-2-py3 - env: INSTANCE=v3002-py3-oraclelinux-8-3002-2-py3 - env: INSTANCE=v3002-py3-oraclelinux-7-3002-2-py3 @@ -108,6 +109,7 @@ jobs: # - env: INSTANCE=v3001-py3-fedora-33-3001-4-py3 - env: INSTANCE=v3001-py3-fedora-32-3001-4-py3 # - env: INSTANCE=v3001-py3-opensuse-leap-152-3001-4-py3 + # - env: INSTANCE=v3001-py3-opensuse-tmbl-latest-3001-4-py3 # - env: INSTANCE=v3001-py3-amazonlinux-2-3001-4-py3 - env: INSTANCE=v3001-py3-oraclelinux-8-3001-4-py3 # - env: INSTANCE=v3001-py3-oraclelinux-7-3001-4-py3 @@ -119,7 +121,7 @@ jobs: # - env: INSTANCE=v3000-py3-ubuntu-1604-3000-6-py3 # - env: INSTANCE=v3000-py3-centos-8-3000-6-py3 - env: INSTANCE=v3000-py3-centos-7-3000-6-py3 - - env: INSTANCE=v3000-py3-opensuse-leap-152-3000-6-py3 + # - env: INSTANCE=v3000-py3-opensuse-leap-152-3000-6-py3 # - env: INSTANCE=v3000-py3-amazonlinux-2-3000-6-py3 # - env: INSTANCE=v3000-py3-oraclelinux-8-3000-6-py3 - env: INSTANCE=v3000-py3-oraclelinux-7-3000-6-py3 diff --git a/kitchen.yml b/kitchen.yml index f9dc2b5..25e6ded 100644 --- a/kitchen.yml +++ b/kitchen.yml @@ -79,6 +79,14 @@ platforms: # => SCP did not finish successfully (255): (Net::SCP::Error) transport: max_ssh_sessions: 1 + - name: opensuse-tmbl-latest-master-py3 + driver: + image: saltimages/salt-master-py3:opensuse-tumbleweed-latest + run_command: /usr/lib/systemd/systemd + # Workaround to avoid intermittent failures on `opensuse-tumbleweed`: + # => SCP did not finish successfully (255): (Net::SCP::Error) + transport: + max_ssh_sessions: 1 - name: amazonlinux-2-master-py3 driver: image: saltimages/salt-master-py3:amazonlinux-2 @@ -129,6 +137,14 @@ platforms: # => SCP did not finish successfully (255): (Net::SCP::Error) transport: max_ssh_sessions: 1 + - name: opensuse-tmbl-latest-3002-2-py3 + driver: + image: saltimages/salt-3002.2-py3:opensuse-tumbleweed-latest + run_command: /usr/lib/systemd/systemd + # Workaround to avoid intermittent failures on `opensuse-tumbleweed`: + # => SCP did not finish successfully (255): (Net::SCP::Error) + transport: + max_ssh_sessions: 1 - name: amazonlinux-2-3002-2-py3 driver: image: saltimages/salt-3002.2-py3:amazonlinux-2 @@ -186,6 +202,14 @@ platforms: # => SCP did not finish successfully (255): (Net::SCP::Error) transport: max_ssh_sessions: 1 + - name: opensuse-tmbl-latest-3001-4-py3 + driver: + image: saltimages/salt-3001.4-py3:opensuse-tumbleweed-latest + run_command: /usr/lib/systemd/systemd + # Workaround to avoid intermittent failures on `opensuse-tumbleweed`: + # => SCP did not finish successfully (255): (Net::SCP::Error) + transport: + max_ssh_sessions: 1 - name: amazonlinux-2-3001-4-py3 driver: image: saltimages/salt-3001.4-py3:amazonlinux-2 @@ -292,6 +316,7 @@ suites: - fedora-33-3002-2-py3 - fedora-32-3002-2-py3 - opensuse-leap-152-3002-2-py3 + - opensuse-tmbl-latest-3002-2-py3 - amazonlinux-2-3002-2-py3 - oraclelinux-8-3002-2-py3 - oraclelinux-7-3002-2-py3 @@ -329,6 +354,7 @@ suites: - fedora-33-3001-4-py3 - fedora-32-3001-4-py3 - opensuse-leap-152-3001-4-py3 + - opensuse-tmbl-latest-3001-4-py3 - amazonlinux-2-3001-4-py3 - oraclelinux-8-3001-4-py3 - oraclelinux-7-3001-4-py3 diff --git a/salt/osfamilymap.yaml b/salt/osfamilymap.yaml index 5dc1a9f..9400075 100644 --- a/salt/osfamilymap.yaml +++ b/salt/osfamilymap.yaml @@ -12,7 +12,7 @@ {%- set osfamily_lower = salt['grains.get']('os_family')|lower %} {%- set osmajorrelease = salt['grains.get']('osmajorrelease', osrelease)|string %} {%- set oscodename = salt['grains.get']('oscodename') %} -{%- set suse_testing_repo = ':/products:/next:/testing' if [osfamily_lower, osrelease] == ['suse', '15.2'] else '' %} +{%- set opensuse_repo_suffix = 'Leap_' ~ osrelease if salt['grains.get']('osfinger', '') == 'Leap-15' else 'Tumbleweed' %} #from template-formula {%- if grains.os_family == 'MacOS' %} @@ -57,9 +57,9 @@ RedHat: gitfs_provider: pygit2 Suse: - pkgrepo_humanname: 'Salt releases for SLE-based SUSE products (openSUSE_Leap_{{ osrelease }})' - pkgrepo: 'https://download.opensuse.org/repositories/systemsmanagement:/saltstack{{ suse_testing_repo }}/openSUSE_Leap_{{ osrelease }}/' - key_url: 'https://download.opensuse.org/repositories/systemsmanagement:/saltstack{{ suse_testing_repo }}/openSUSE_Leap_{{ osrelease }}/repodata/repomd.xml.key' + pkgrepo_humanname: 'Salt releases for SLE-based SUSE products (openSUSE_{{ opensuse_repo_suffix }})' + pkgrepo: 'https://download.opensuse.org/repositories/systemsmanagement:/saltstack/openSUSE_{{ opensuse_repo_suffix }}/' + key_url: 'https://download.opensuse.org/repositories/systemsmanagement:/saltstack/openSUSE_{{ opensuse_repo_suffix }}/repodata/repomd.xml.key' pygit2: python-pygit2 pyinotify: python-pyinotify gitfs: diff --git a/salt/pkgrepo/suse/install.sls b/salt/pkgrepo/suse/install.sls index f87c105..09eef4d 100644 --- a/salt/pkgrepo/suse/install.sls +++ b/salt/pkgrepo/suse/install.sls @@ -2,6 +2,9 @@ # vim: ft=sls {% from "salt/map.jinja" import salt_settings with context %} +{#- Resorting to this ugly hack since the state doesn't handle if the `baseurl` is + already configured under another name, such as used by the `salt-bootstrap` #} +{%- if not salt["cmd.run"]("zypper lr --uri | grep " ~ salt_settings.pkgrepo) %} salt-pkgrepo-install-saltstack-suse: pkgrepo.managed: - name: systemsmanagement_saltstack_products @@ -11,3 +14,4 @@ salt-pkgrepo-install-saltstack-suse: - gpgcheck: 1 - gpgkey: {{ salt_settings.key_url }} - gpgautoimport: true +{%- endif %} diff --git a/test/integration/share/README.md b/test/integration/share/README.md index 5bc510c..5c5785b 100644 --- a/test/integration/share/README.md +++ b/test/integration/share/README.md @@ -13,9 +13,10 @@ The `system` library provides easy access to system dependent information: - `system.platform`: based on `inspec.platform`, modify to values that are more consistent from a SaltStack perspective - `system.platform[:family]` provide a family name for Arch and Gentoo - `system.platform[:name]` append `linux` to both `amazon` and `oracle`; ensure Windows platforms are resolved as simply `windows` - - `system.platform[:release]` tweak Arch, Amazon Linux, Gentoo and Windows: + - `system.platform[:release]` tweak Arch, Amazon Linux, Gentoo, openSUSE and Windows: - `Arch` is always `base-latest` - `Amazon Linux` release `2018` is resolved as `1` - `Gentoo` release is trimmed to its major version number and then the init system is appended (i.e. `sysv` or `sysd`) + - `openSUSE` is resolved as `tumbleweed` if the `platform[:release]` is in date format - `Windows` uses the widely-used release number (e.g. `8.1` or `2019-server`) in place of the actual system release version - `system.platform[:finger]` is the concatenation of the name and the major release number (except for Ubuntu, which gives `ubuntu-20.04` for example) diff --git a/test/integration/share/libraries/system.rb b/test/integration/share/libraries/system.rb index ef23499..ba08443 100644 --- a/test/integration/share/libraries/system.rb +++ b/test/integration/share/libraries/system.rb @@ -45,7 +45,7 @@ class SystemResource < Inspec.resource(1) end end - # rubocop:disable Metrics/MethodLength + # rubocop:disable Metrics/MethodLength,Metrics/AbcSize,Metrics/CyclomaticComplexity def build_platform_release case inspec.platform[:name] when 'amazon' @@ -55,6 +55,10 @@ class SystemResource < Inspec.resource(1) 'base-latest' when 'gentoo' "#{inspec.platform[:release].split('.')[0]}-#{derive_gentoo_init_system}" + when 'opensuse' + # rubocop:disable Style/NumericLiterals,Layout/LineLength + inspec.platform[:release].to_i > 20210101 ? 'tumbleweed' : inspec.platform[:release] + # rubocop:enable Style/NumericLiterals,Layout/LineLength when 'windows_8.1_pro' '8.1' when 'windows_server_2019_datacenter' @@ -63,15 +67,10 @@ class SystemResource < Inspec.resource(1) inspec.platform[:release] end end - # rubocop:enable Metrics/MethodLength + # rubocop:enable Metrics/MethodLength,Metrics/AbcSize,Metrics/CyclomaticComplexity def derive_gentoo_init_system - case inspec.command('systemctl').exist? - when true - 'sysd' - else - 'sysv' - end + inspec.command('systemctl').exist? ? 'sysd' : 'sysv' end def build_platform_finger diff --git a/test/integration/v3000-py3/files/_mapdata/opensuse-15.yaml b/test/integration/v3000-py3/files/_mapdata/opensuse-15.yaml index c13fff9..eac6d76 100644 --- a/test/integration/v3000-py3/files/_mapdata/opensuse-15.yaml +++ b/test/integration/v3000-py3/files/_mapdata/opensuse-15.yaml @@ -42,7 +42,7 @@ values: version: 0.23.0 version: 0.23.0 install_packages: true - key_url: https://download.opensuse.org/repositories/systemsmanagement:/saltstack:/products:/next:/testing/openSUSE_Leap_15.2/repodata/repomd.xml.key + key_url: https://download.opensuse.org/repositories/systemsmanagement:/saltstack/openSUSE_Leap_15.2/repodata/repomd.xml.key master: file_roots: base: @@ -78,7 +78,7 @@ values: state: running parallel: true pin_version: false - pkgrepo: https://download.opensuse.org/repositories/systemsmanagement:/saltstack:/products:/next:/testing/openSUSE_Leap_15.2/ + pkgrepo: https://download.opensuse.org/repositories/systemsmanagement:/saltstack/openSUSE_Leap_15.2/ pkgrepo_humanname: Salt releases for SLE-based SUSE products (openSUSE_Leap_15.2) py_ver: py3 pygit2: python-pygit2 diff --git a/test/integration/v3001-py3/files/_mapdata/opensuse-15.yaml b/test/integration/v3001-py3/files/_mapdata/opensuse-15.yaml index 239a787..77f83fc 100644 --- a/test/integration/v3001-py3/files/_mapdata/opensuse-15.yaml +++ b/test/integration/v3001-py3/files/_mapdata/opensuse-15.yaml @@ -42,7 +42,7 @@ values: version: 0.23.0 version: 0.23.0 install_packages: true - key_url: https://download.opensuse.org/repositories/systemsmanagement:/saltstack:/products:/next:/testing/openSUSE_Leap_15.2/repodata/repomd.xml.key + key_url: https://download.opensuse.org/repositories/systemsmanagement:/saltstack/openSUSE_Leap_15.2/repodata/repomd.xml.key master: file_roots: base: @@ -78,7 +78,7 @@ values: state: running parallel: true pin_version: false - pkgrepo: https://download.opensuse.org/repositories/systemsmanagement:/saltstack:/products:/next:/testing/openSUSE_Leap_15.2/ + pkgrepo: https://download.opensuse.org/repositories/systemsmanagement:/saltstack/openSUSE_Leap_15.2/ pkgrepo_humanname: Salt releases for SLE-based SUSE products (openSUSE_Leap_15.2) py_ver: py3 pygit2: python-pygit2 diff --git a/test/integration/v3001-py3/files/_mapdata/opensuse-tumbleweed.yaml b/test/integration/v3001-py3/files/_mapdata/opensuse-tumbleweed.yaml new file mode 100644 index 0000000..9cf2b89 --- /dev/null +++ b/test/integration/v3001-py3/files/_mapdata/opensuse-tumbleweed.yaml @@ -0,0 +1,103 @@ +# yamllint disable rule:indentation rule:line-length +# openSUSE Tumbleweed-yyyymmdd +--- +values: + formulas_settings: + checkout_orig_branch: false + git_opts: + default: + basedir: /srv/formulas + baseurl: https://github.com/saltstack-formulas + options: + output_loglevel: quiet + rev: master + update: false + list: {} + salt_settings: + api_service: salt-api + api_service_details: + enabled: true + state: running + clean_config_d_dir: true + cloud: + template_sources: + maps: salt://salt/files/cloud.maps.d + profiles: salt://salt/files/cloud.profiles.d + providers: salt://salt/files/cloud.providers.d + config_path: /etc/salt + gitfs: + dulwich: + install_from_source: true + gitpython: + install_from_source: false + pygit2: + git: + install_from_package: git + require_state: false + install_from_source: false + libgit2: + build_parent_dir: /usr/src/ + download_hash: 683d1164e361e2a0a8d52652840e2340 + install_from_source: true + version: 0.23.0 + version: 0.23.0 + install_packages: true + key_url: https://download.opensuse.org/repositories/systemsmanagement:/saltstack/openSUSE_Tumbleweed/repodata/repomd.xml.key + master: + file_roots: + base: + - /srv/salt + fileserver_backend: + - rootfs + gitfs_provider: pygit2 + pillar_roots: + base: + - /srv/pillar + master_config_use_TOFS: false + master_remove_config: false + master_service: salt-master + master_service_details: + enabled: true + state: running + minion: + file_roots: + base: + - /srv/salt + fileserver_backend: + - rootfs + master: localhost + master_type: true + pillar_roots: + base: + - /srv/pillar + minion_config_use_TOFS: false + minion_remove_config: false + minion_service: salt-minion + minion_service_details: + enabled: true + state: running + parallel: true + pin_version: false + pkgrepo: https://download.opensuse.org/repositories/systemsmanagement:/saltstack/openSUSE_Tumbleweed/ + pkgrepo_humanname: Salt releases for SLE-based SUSE products (openSUSE_Tumbleweed) + py_ver: py3 + pygit2: python-pygit2 + pyinotify: python-pyinotify + python_dulwich: python-dulwich + python_git: python-git + release: '3001' + restart_via_at: false + rootgroup: root + rootuser: root + salt_api: salt-api + salt_cloud: salt-cloud + salt_master: salt-master + salt_master_macos_plist_hash: '' + salt_minion: salt-minion + salt_minion_macos_plist_hash: '' + salt_ssh: salt-ssh + salt_syndic: salt-syndic + ssh_roster: {} + syndic_service: salt-syndic + use_pip: false + version: '' diff --git a/test/integration/v3002-py3/files/_mapdata/opensuse-15.yaml b/test/integration/v3002-py3/files/_mapdata/opensuse-15.yaml index cc27fbe..a9f38ed 100644 --- a/test/integration/v3002-py3/files/_mapdata/opensuse-15.yaml +++ b/test/integration/v3002-py3/files/_mapdata/opensuse-15.yaml @@ -42,7 +42,7 @@ values: version: 0.23.0 version: 0.23.0 install_packages: true - key_url: https://download.opensuse.org/repositories/systemsmanagement:/saltstack:/products:/next:/testing/openSUSE_Leap_15.2/repodata/repomd.xml.key + key_url: https://download.opensuse.org/repositories/systemsmanagement:/saltstack/openSUSE_Leap_15.2/repodata/repomd.xml.key master: file_roots: base: @@ -78,7 +78,7 @@ values: state: running parallel: true pin_version: false - pkgrepo: https://download.opensuse.org/repositories/systemsmanagement:/saltstack:/products:/next:/testing/openSUSE_Leap_15.2/ + pkgrepo: https://download.opensuse.org/repositories/systemsmanagement:/saltstack/openSUSE_Leap_15.2/ pkgrepo_humanname: Salt releases for SLE-based SUSE products (openSUSE_Leap_15.2) py_ver: py3 pygit2: python-pygit2 diff --git a/test/integration/v3002-py3/files/_mapdata/opensuse-tumbleweed.yaml b/test/integration/v3002-py3/files/_mapdata/opensuse-tumbleweed.yaml new file mode 100644 index 0000000..f4b3634 --- /dev/null +++ b/test/integration/v3002-py3/files/_mapdata/opensuse-tumbleweed.yaml @@ -0,0 +1,103 @@ +# yamllint disable rule:indentation rule:line-length +# openSUSE Tumbleweed-yyyymmdd +--- +values: + formulas_settings: + checkout_orig_branch: false + git_opts: + default: + basedir: /srv/formulas + baseurl: https://github.com/saltstack-formulas + options: + output_loglevel: quiet + rev: master + update: false + list: {} + salt_settings: + api_service: salt-api + api_service_details: + enabled: true + state: running + clean_config_d_dir: true + cloud: + template_sources: + maps: salt://salt/files/cloud.maps.d + profiles: salt://salt/files/cloud.profiles.d + providers: salt://salt/files/cloud.providers.d + config_path: /etc/salt + gitfs: + dulwich: + install_from_source: true + gitpython: + install_from_source: false + pygit2: + git: + install_from_package: git + require_state: false + install_from_source: false + libgit2: + build_parent_dir: /usr/src/ + download_hash: 683d1164e361e2a0a8d52652840e2340 + install_from_source: true + version: 0.23.0 + version: 0.23.0 + install_packages: true + key_url: https://download.opensuse.org/repositories/systemsmanagement:/saltstack/openSUSE_Tumbleweed/repodata/repomd.xml.key + master: + file_roots: + base: + - /srv/salt + fileserver_backend: + - rootfs + gitfs_provider: pygit2 + pillar_roots: + base: + - /srv/pillar + master_config_use_TOFS: false + master_remove_config: false + master_service: salt-master + master_service_details: + enabled: true + state: running + minion: + file_roots: + base: + - /srv/salt + fileserver_backend: + - rootfs + master: localhost + master_type: true + pillar_roots: + base: + - /srv/pillar + minion_config_use_TOFS: false + minion_remove_config: false + minion_service: salt-minion + minion_service_details: + enabled: true + state: running + parallel: true + pin_version: false + pkgrepo: https://download.opensuse.org/repositories/systemsmanagement:/saltstack/openSUSE_Tumbleweed/ + pkgrepo_humanname: Salt releases for SLE-based SUSE products (openSUSE_Tumbleweed) + py_ver: py3 + pygit2: python-pygit2 + pyinotify: python-pyinotify + python_dulwich: python-dulwich + python_git: python-git + release: '3002' + restart_via_at: false + rootgroup: root + rootuser: root + salt_api: salt-api + salt_cloud: salt-cloud + salt_master: salt-master + salt_master_macos_plist_hash: '' + salt_minion: salt-minion + salt_minion_macos_plist_hash: '' + salt_ssh: salt-ssh + salt_syndic: salt-syndic + ssh_roster: {} + syndic_service: salt-syndic + use_pip: false + version: ''