Update for Salt 3000 point release

e9
David Murphy 5 years ago
parent c7319bf00b
commit 3b34861748

1
.gitignore vendored

@ -83,3 +83,4 @@
/salt-2018.3.3.tar.gz
/salt-2019.2.0.tar.gz
/salt-2019.2.1rc0.tar.gz
/salt-3000.tar.gz

@ -0,0 +1,6 @@
diff -Naur a/requirements/crypto.txt b/requirements/crypto.txt
--- a/requirements/crypto.txt 2020-02-03 21:33:35.989983615 +0000
+++ b/requirements/crypto.txt 2020-02-03 21:33:57.651350234 +0000
@@ -1,2 +1 @@
-pycrypto>=2.6.1; sys.platform not in 'win32,darwin'
pycryptodomex; sys.platform == 'win32'

@ -67,14 +67,12 @@ _su_cmd() {
_get_pid() {
netstat -n $NS_NOTRIM -ap --protocol=unix 2>$ERROR_TO_DEVNULL \
| sed -r -e "\|\s${SOCK_DIR}/minion_event_${MINION_ID_HASH}_pub\.ipc$|"'!d; s|/.*||; s/.*\s//;' \
| uniq
cat $PID_FILE 2>/dev/null
}
_is_running() {
[ -n "$(_get_pid)" ]
[ -n "$(_get_pid)" ] && ps wwwaxu | grep '[s]alt-minion' | awk '{print $2}' | grep -qi "\b$(_get_pid)\b"
}
@ -219,7 +217,7 @@ status() {
local retval=0
local pid="$(_get_pid)"
if [ -n "$pid" ]; then
if _is_running; then
# Unquote $pid here to display multiple PIDs in one line
echo "$SERVICE:$MINION_USER:$MINION_ID is running:" $pid
else

@ -0,0 +1,214 @@
diff -Naur a/salt/modules/rpmbuild_pkgbuild.py b/salt/modules/rpmbuild_pkgbuild.py
--- a/salt/modules/rpmbuild_pkgbuild.py 2019-07-02 10:15:07.035874718 -0600
+++ b/salt/modules/rpmbuild_pkgbuild.py 2019-07-02 10:55:34.147934899 -0600
@@ -140,7 +140,9 @@
tgtattrs = tgt.split('-')
if tgtattrs[0] == 'amzn':
distset = '--define "dist .{0}1"'.format(tgtattrs[0])
- elif tgtattrs[1] in ['6', '7']:
+ elif tgtattrs[0] == 'amzn2':
+ distset = '--define "dist .{0}"'.format(tgtattrs[0])
+ elif tgtattrs[1] in ['6', '7', '8']:
distset = '--define "dist .el{0}"'.format(tgtattrs[1])
else:
distset = ''
@@ -173,6 +175,19 @@
return deps_list
+def _check_repo_gpg_phrase_utils():
+ '''
+ Check for /usr/libexec/gpg-preset-passphrase is installed
+ '''
+ util_name = '/usr/libexec/gpg-preset-passphrase'
+ if __salt__['file.file_exists'](util_name):
+ return True
+ else:
+ raise CommandExecutionError(
+ 'utility \'{0}\' needs to be installed'.format(util_name)
+ )
+
+
def make_src_pkg(dest_dir, spec, sources, env=None, template=None, saltenv='base', runas='root'):
'''
Create a source rpm from the given spec file and sources
@@ -450,8 +465,14 @@
Use a passphrase with the signing key presented in ``keyid``.
Passphrase is received from Pillar data which could be passed on the
- command line with ``pillar`` parameter. For example:
+ command line with ``pillar`` parameter.
+ .. versionadded:: 2018.2.1
+
+ RHEL 8 and above leverages gpg-agent and gpg-preset-passphrase for
+ caching keys, etc.
+
+ For example:
.. code-block:: bash
pillar='{ "gpg_passphrase" : "my_passphrase" }'
@@ -485,10 +506,27 @@
'''
SIGN_PROMPT_RE = re.compile(r'Enter pass phrase: ', re.M)
- define_gpg_name = ''
+ local_keygrip_to_use = None
+ local_key_fingerprint = None
local_keyid = None
local_uids = None
+ define_gpg_name = ''
phrase = ''
+ retrc = 0
+ use_gpg_agent = False
+
+ res = {
+ 'retcode': 1,
+ 'stdout': '',
+ 'stderr': 'initialization value'
+ }
+
+ if gnupghome and env is None:
+ env = {}
+ env['GNUPGHOME'] = gnupghome
+
+ if __grains__.get('osmajorrelease') >= 7:
+ use_gpg_agent = True
if keyid is not None:
# import_keys
@@ -517,8 +555,29 @@
if keyid == gpg_key['keyid'][8:]:
local_uids = gpg_key['uids']
local_keyid = gpg_key['keyid']
+ if use_gpg_agent:
+ local_keygrip_to_use = gpg_key['fingerprint']
+ local_key_fingerprint = gpg_key['fingerprint']
break
+ if use_gpg_agent:
+ cmd = 'gpg --with-keygrip --list-secret-keys'
+ local_keys2_keygrip = __salt__['cmd.run'](cmd, runas=runas, env=env)
+ local_keys2 = iter(local_keys2_keygrip.splitlines())
+ try:
+ for line in local_keys2:
+ if line.startswith('sec'):
+ line_fingerprint = next(local_keys2).lstrip().rstrip()
+ if local_key_fingerprint == line_fingerprint:
+ lkeygrip = next(local_keys2).split('=')
+ local_keygrip_to_use = lkeygrip[1].lstrip().rstrip()
+ break
+ except StopIteration:
+ raise SaltInvocationError(
+ 'unable to find keygrip associated with fingerprint \'{0}\' for keyid \'{1}\''
+ .format(local_key_fingerprint, local_keyid)
+ )
+
if local_keyid is None:
raise SaltInvocationError(
'The key ID \'{0}\' was not found in GnuPG keyring at \'{1}\''
@@ -527,6 +586,15 @@
if use_passphrase:
phrase = __salt__['pillar.get']('gpg_passphrase')
+ if use_gpg_agent:
+ _check_repo_gpg_phrase_utils()
+ cmd = '/usr/libexec/gpg-preset-passphrase --verbose --preset --passphrase "{0}" {1}'.format(phrase, local_keygrip_to_use)
+ retrc = __salt__['cmd.retcode'](cmd, runas=runas, env=env)
+ if retrc != 0:
+ raise SaltInvocationError(
+ 'Failed to preset passphrase, error {1}, '
+ 'check logs for further details'.format(retrc)
+ )
if local_uids:
define_gpg_name = '--define=\'%_signature gpg\' --define=\'%_gpg_name {0}\''.format(
@@ -553,43 +621,54 @@
number_retries = timeout / interval
times_looped = 0
error_msg = 'Failed to sign file {0}'.format(abs_file)
- cmd = 'rpm {0} --addsign {1}'.format(define_gpg_name, abs_file)
- preexec_fn = functools.partial(salt.utils.user.chugid_and_umask, runas, None)
- try:
- stdout, stderr = None, None
- proc = salt.utils.vt.Terminal(
- cmd,
- shell=True,
- preexec_fn=preexec_fn,
- stream_stdout=True,
- stream_stderr=True
- )
- while proc.has_unread_data:
- stdout, stderr = proc.recv()
- if stdout and SIGN_PROMPT_RE.search(stdout):
- # have the prompt for inputting the passphrase
- proc.sendline(phrase)
- else:
- times_looped += 1
+ if use_gpg_agent:
+ cmd = 'rpmsign --verbose --key-id={0} --addsign {1}'.format(local_keyid, abs_file)
+ retrc |= __salt__['cmd.retcode'](cmd, runas=runas, cwd=repodir, use_vt=True, env=env)
+ if retrc != 0:
+ raise SaltInvocationError(
+ 'Signing encountered errors for command \'{0}\', '
+ 'return error {1}, check logs for further details'.format(
+ cmd,
+ retrc)
+ )
+ else:
+ cmd = 'rpm {0} --addsign {1}'.format(define_gpg_name, abs_file)
+ preexec_fn = functools.partial(salt.utils.user.chugid_and_umask, runas, None)
+ try:
+ stdout, stderr = None, None
+ proc = salt.utils.vt.Terminal(
+ cmd,
+ shell=True,
+ preexec_fn=preexec_fn,
+ stream_stdout=True,
+ stream_stderr=True
+ )
+ while proc.has_unread_data:
+ stdout, stderr = proc.recv()
+ if stdout and SIGN_PROMPT_RE.search(stdout):
+ # have the prompt for inputting the passphrase
+ proc.sendline(phrase)
+ else:
+ times_looped += 1
+
+ if times_looped > number_retries:
+ raise SaltInvocationError(
+ 'Attemping to sign file {0} failed, timed out after {1} seconds'
+ .format(abs_file, int(times_looped * interval))
+ )
+ time.sleep(interval)
- if times_looped > number_retries:
+ proc_exitstatus = proc.exitstatus
+ if proc_exitstatus != 0:
raise SaltInvocationError(
- 'Attemping to sign file {0} failed, timed out after {1} seconds'
- .format(abs_file, int(times_looped * interval))
+ 'Signing file {0} failed with proc.status {1}'
+ .format(abs_file, proc_exitstatus)
)
- time.sleep(interval)
-
- proc_exitstatus = proc.exitstatus
- if proc_exitstatus != 0:
- raise SaltInvocationError(
- 'Signing file {0} failed with proc.status {1}'
- .format(abs_file, proc_exitstatus)
- )
- except salt.utils.vt.TerminalException as err:
- trace = traceback.format_exc()
- log.error(error_msg, err, trace)
- finally:
- proc.close(terminate=True, kill=True)
+ except salt.utils.vt.TerminalException as err:
+ trace = traceback.format_exc()
+ log.error(error_msg, err, trace)
+ finally:
+ proc.close(terminate=True, kill=True)
cmd = 'createrepo --update {0}'.format(repodir)
return __salt__['cmd.run_all'](cmd, runas=runas)

@ -1,21 +1,29 @@
## For Python 3 only RHEL 7 & 8
%bcond_with python2
%bcond_without python3
%bcond_with tests
%bcond_with docs
%if 0%{?rhel} > 7
%global python3_pkgversion 3
%else
%{!?python3_pkgversion:%global python3_pkgversion 3}
%endif
%global include_tests 0
# Release Candidate
%define __rc_ver rc0
%define __rc_ver %{nil}
%define fish_dir %{_datadir}/fish/vendor_functions.d
Name: salt
Version: 2019.2.1%{?__rc_ver}
Release: 5%{?dist}
Version: 3000%{?__rc_ver}
Release: 2%{?dist}
Summary: A parallel remote execution system
Group: System Environment/Daemons
License: ASL 2.0
URL: http://saltstack.org/
Source0: https://pypi.io/packages/source/s/%{name}/%{name}-%{version}.tar.gz
@ -41,9 +49,13 @@ Source19: salt-minion.fish
Source20: salt-run.fish
Source21: salt-syndic.fish
## Patch0: salt-%%{version}-tests.patch
## %%if 0%%{?rhel} > 7
## Patch0: salt-py3-2019.2.2-tornado4.patch
## %%endif
Patch1: salt-py3-2019.2.1-rpmsign.patch
Patch2: salt-m2_requirements.patch
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
BuildArch: noarch
%ifarch %{ix86} x86_64
@ -53,7 +65,12 @@ Requires: dmidecode
Requires: pciutils
Requires: which
%if 0%{?fedora} >= 26
Requires: dnf-utils
%else
Requires: yum-utils
%endif
%if 0%{?systemd_preun:1}
Requires(post): systemd-units
@ -62,32 +79,51 @@ Requires(postun): systemd-units
%endif
BuildRequires: systemd-units
Requires: python%{python3_pkgversion}-systemd
%if %{with python3}
BuildRequires: python%{python3_pkgversion}-devel
BuildRequires: python%{python3_pkgversion}-requests
BuildRequires: python%{python3_pkgversion}-mock
BuildRequires: python%{python3_pkgversion}-libcloud
BuildRequires: python%{python3_pkgversion}-six
%if 0%{?rhel} == 7
BuildRequires: python%{python3_pkgversion}-PyYAML
%else
BuildRequires: python%{python3_pkgversion}-pyyaml
BuildRequires: python%{python3_pkgversion}-distro
## BuildRequires: python%%{python3_pkgversion}-distro
%endif
BuildRequires: git
Requires: python%{python3_pkgversion}-jinja2
Requires: python%{python3_pkgversion}-msgpack >= 0.4
## for dump requirements file
## Requires: python%%{python3_pkgversion}-crypto >= 2.6.1
Requires: python%{python3_pkgversion}-m2crypto >= 0.31.0
## Requires: python%%{python3_pkgversion}-m2crypto >= 0.31.0
Requires: python%{python3_pkgversion}-pycryptodomex >= 3.7
Requires: python%{python3_pkgversion}-requests
Requires: python%{python3_pkgversion}-zmq
Requires: python%{python3_pkgversion}-markupsafe
Requires: python%{python3_pkgversion}-tornado >= 4.2.1
## Tornado removed in Neon
## %%if 0%%{?rhel} == 7
## Requires: python%%{python3_pkgversion}-tornado >= 4.2.1, python%%{python3_pkgversion}-tornado < 5.0
## %%else
## Requires: python%%{python3_pkgversion}-tornado4 >= 4.2.1, python%%{python3_pkgversion}-tornado4 < 5.0
## %%endif
Requires: python%{python3_pkgversion}-pycurl
Requires: python%{python3_pkgversion}-six
Requires: python%{python3_pkgversion}-psutil
%if 0%{?rhel} == 7
Requires: python%{python3_pkgversion}-PyYAML
%else
Requires: python%{python3_pkgversion}-pyyaml
Requires: python%{python3_pkgversion}-distro
%endif
%endif
%description
@ -98,11 +134,17 @@ malleable. Salt accomplishes this via its ability to handle larger loads of
information, and not just dozens, but hundreds or even thousands of individual
servers, handle them quickly and through a simple and manageable interface.
%if %{with python3}
%package master
Summary: Management component for salt, a parallel remote execution system
Group: System Environment/Daemons
Requires: %{name} = %{version}-%{release}
%if 0%{?rhel} > 7
Requires: python%{python3_pkgversion}-systemd
%else
Requires: systemd-python
%endif
%description master
The Salt master is the central server to which all minions connect.
@ -136,7 +178,11 @@ Supports Python 3.
Summary: REST API for Salt, a parallel remote execution system
Group: Applications/System
Requires: %{name}-master = %{version}-%{release}
%if ( "%{python3_pkgversion}" < "35" )
Requires: python%{python3_pkgversion}-cherrypy >= 3.2.2, python%{python3_pkgversion}-cherrypy < 18.0.0
%else
Requires: python%{python3_pkgversion}-cherrypy >= 3.2.2
%endif
%description api
salt-api provides a REST interface to the Salt master.
@ -164,30 +210,42 @@ Requires: %{name} = %{version}-%{release}
The salt-ssh tool can run remote execution functions and states without the use
of an agent (salt-minion) service.
Supports Python 3.
%endif
%prep
## %%autosetup
%setup -q -c
## %%setup -q -T -D -a 1
cd %{name}-%{version}
## %%if 0%%{?rhel} > 7
## %%patch0 -p1
## %%endif
%patch1 -p1
%patch2 -p1
%if %{with python3}
rm -rf %{py3dir}
cp -a . %{py3dir}
%endif # with_python3
%build
%if %{with python3}
pushd %{py3dir}
%py3_build
## %%py3_build
## py3_shbang_opts is '-s' and causing issues with pip install
## CFLAGS="${CFLAGS:-${RPM_OPT_FLAGS}}" LDFLAGS="${LDFLAGS:-${RPM_LD_FLAGS}}" %%{__python3} %%{py_setup} %%{?py_setup_args} build --executable="%%{__python3} %%{py3_shbang_opts}" %%{?*}
CFLAGS="${CFLAGS:-${RPM_OPT_FLAGS}}" LDFLAGS="${LDFLAGS:-${RPM_LD_FLAGS}}" %{__python3} %{py_setup} %{?py_setup_args} build --executable="%{__python3}" %{?*}
sleep 1
popd
%endif
%install
rm -rf %{buildroot}
cd $RPM_BUILD_DIR/%{name}-%{version}/%{name}-%{version}
cd $RPM_BUILD_DIR/%{name}-%{version}
%if %{with python3}
## rm -rf %%{buildroot}
pushd %{py3dir}
%py3_install
@ -247,6 +305,16 @@ install -p -m 0644 %{SOURCE20} %{buildroot}%{fish_dir}/salt-run.fish
install -p -m 0644 %{SOURCE21} %{buildroot}%{fish_dir}/salt-syndic.fish
popd
%endif
%if (%{with python2} && 0%{with tests})
%check
## cd $RPM_BUILD_DIR/%%{name}-%%{version}/%%{name}-%%{version}
cd $RPM_BUILD_DIR/%{name}-%{version}
mkdir %{_tmppath}/salt-test-cache
PYTHONPATH=%{pythonpath} %{__python2} setup.py test --runtests-opts=-u
%endif
%clean
@ -254,6 +322,7 @@ rm -rf %{buildroot}
%files
%if %{with python3}
%defattr(-,root,root,-)
%{python3_sitelib}/%{name}/*
%{python3_sitelib}/%{name}-*-py?.?.egg-info
@ -333,20 +402,11 @@ rm -rf %{buildroot}
%doc %{_mandir}/man1/salt-ssh.1*
%{_bindir}/salt-ssh
%config(noreplace) %{_sysconfdir}/salt/roster
%endif
# assumes systemd for RHEL 7 & 8
%preun master
%if 0%{?systemd_preun:1}
%systemd_preun salt-master.service
%else
if [ $1 -eq 0 ] ; then
# Package removal, not upgrade
/bin/systemctl --no-reload disable salt-master.service > /dev/null 2>&1 || :
/bin/systemctl stop salt-master.service > /dev/null 2>&1 || :
fi
%endif
%preun syndic
%if 0%{?systemd_preun:1}
%systemd_preun salt-syndic.service
%else
@ -457,30 +517,73 @@ rm -rf %{buildroot}
%changelog
* Thu Jan 30 2020 Fedora Release Engineering <releng@fedoraproject.org> - 2019.2.1rc0-5
- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild
* Mon Feb 24 2020 SaltStack Packaging Team <packaging@frogunder.com> - 3000-2
- Changed dependency for crypto to pycryptodomex
* Mon Feb 03 2020 SaltStack Packaging Team <packaging@frogunder.com> - 3000-1
- Update to feature release 3000-1 for Python 3
- Removed Torando since salt.ext.tornado, add dependencies for Tornado
* Wed Jan 22 2020 SaltStack Packaging Team <packaging@garethgreenaway.com> - 3000.0.0rc2-1
- Update to Neon Release Candidate 2 for Python 3
- Updated spec file to not use py3_build due to '-s' preventing pip installs
- Updated patch file to support Tornado4
* Wed Jan 08 2020 SaltStack Packaging Team <packaging@frogunder.com> - 2019.2.3-1
- Update to feature release 2019.2.3-1 for Python 3
* Tue Oct 15 2019 SaltStack Packaging Team <packaging@frogunder.com> - 2019.2.2-1
- Update to feature release 2019.2.2-1 for Python 3
* Thu Oct 03 2019 Miro Hrončok <mhroncok@redhat.com> - 2019.2.1rc0-4
- Rebuilt for Python 3.8.0rc1 (#1748018)
* Thu Sep 12 2019 SaltStack Packaging Team <packaging@frogunder.com> - 2019.2.1-1
- Update to feature release 2019.2.1-1 for Python 3
* Fri Aug 30 2019 Fedora Release Engineering <releng@fedoraproject.org> - 2019.2.1rc0-3
- Fixed tornado requirement
* Tue Sep 10 2019 SaltStack Packaging Team <packaging@saltstack.com> - 2019.2.0-10
- Support for point release, added distro as a requirement
* Fri Aug 30 2019 Fedora Release Engineering <releng@fedoraproject.org> - 2019.2.1rc0-2
- Added python3-distro as a requirement
* Tue Jul 02 2019 SaltStack Packaging Team <packaging@saltstack.com> - 2019.2.0-9
- Support for point release, only rpmsign and tornado4 patches
* Thu Aug 29 2019 Fedora Release Engineering <releng@fedoraproject.org> - 2019.2.1rc0-1
- Release Candidate 0 for feature release 2019.2.1 for Python 3 with Tornado v5.x support
* Thu Jun 06 2019 SaltStack Packaging Team <packaging@saltstack.com> - 2019.2.0-8
- Support for Redhat 7 need for PyYAML and tornado 4 patch since Tornado < v5.x
* Fri Jul 26 2019 Fedora Release Engineering <releng@fedoraproject.org> - 2019.2.0-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild
* Thu May 23 2019 SaltStack Packaging Team <packaging@saltstack.com> - 2019.2.0-7
- Patching in support for gpg-agent and passphrase preset
* Wed May 22 2019 SaltStack Packaging Team <packaging@saltstack.com> - 2019.2.0-6
- Patching in fix for rpmsign
* Thu May 16 2019 SaltStack Packaging Team <packaging@saltstack.com> - 2019.2.0-5
- Patching in fix for gpg str/bytes to to_unicode/to_bytes
* Tue May 14 2019 SaltStack Packaging Team <packaging@saltstack.com> - 2019.2.0-4
- Patching in support for Tornado 4
* Mon May 13 2019 SaltStack Packaging Team <packaging@saltstack.com> - 2019.2.0-3
- Added support for Redhat 8, and removed support for Python 2 packages
* Mon Apr 08 2019 SaltStack Packaging Team <packaging@saltstack.com> - 2019.2.0-2
- Update to support Python 3.6
* Mon Apr 08 2019 SaltStack Packaging Team <packaging@saltstack.com> - 2018.3.4-2
- Update to allow for Python 3.6
* Mon Mar 04 2019 Fedora Release Engineering <releng@fedoraproject.org> - 2019.2.0-1
- Update to feature release 2019.2.0-1 for Python 2
* Sat Feb 16 2019 SaltStack Packaging Team <packaging@saltstack.com> - 2019.2.0-1
- Update to feature release 2019.2.0-1 for Python 3
* Sat Feb 16 2019 SaltStack Packaging Team <packaging@saltstack.com> - 2018.3.4-1
- Update to feature release 2018.3.4-1 for Python 3
* Sat Feb 02 2019 Fedora Release Engineering <releng@fedoraproject.org> - 2018.3.3-3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild
* Wed Jan 09 2019 SaltStack Packaging Team <packaging@saltstack.com> - 2019.2.0-0
- Update to feature release branch 2019.2.0-0 for Python 2
- Revised acceptable versions of cherrypy, futures
* Thu Nov 29 2018 SaltStack Packaging Team <packaging@Ch3LL.com> - 2018.3.3-2
- Revised BuildRequires and Requires to use python2 versions of packages
- Cleaned up spec file to apply to Fedora 28 and above
@ -489,6 +592,10 @@ rm -rf %{buildroot}
- Update to feature release 2018.3.3-1 for Python 2
- Revised versions of cherrypy acceptable
* Tue Oct 09 2018 SaltStack Packaging Team <packaging@saltstack.com> - 2018.3.3-1
- Update to feature release 2018.3.3-1 for Python 3
- Revised versions of cherrypy acceptable
* Tue Jul 24 2018 SaltStack Packaging Team <packaging@saltstack.com> - 2018.3.2-5
- Fix version of python used, multiple addition of 2.7
@ -504,10 +611,17 @@ rm -rf %{buildroot}
* Thu Jun 21 2018 SaltStack Packaging Team <packaging@saltstack.com> - 2018.3.2-1
- Update to feature release 2018.3.2-1 for Python 2
* Mon Jun 11 2018 SaltStack Packaging Team <packaging@saltstack.com> - 2018.3.1-1
- Update to feature release 2018.3.1-1 for Python 3
- Revised minimum msgpack version >= 0.4
* Fri Jun 08 2018 SaltStack Packaging Team <packaging@saltstack.com> - 2018.3.1-1
- Update to feature release 2018.3.1-1 for Python 2
- Revised minimum msgpack version >= 0.4
* Mon Apr 02 2018 SaltStack Packaging Team <packaging@saltstack.com> - 2018.3.0-1
- Development build for Python 3 support
* Fri Mar 30 2018 SaltStack Packaging Team <packaging@saltstack.com> - 2018.3.0-1
- Update to feature release 2018.3.0-1
@ -518,7 +632,7 @@ rm -rf %{buildroot}
- Update to feature release 2017.7.4-1
- Limit to Tornado use to between versions 4.2.1 and less than 5.0
* Tue Jan 30 2018 SaltStack Packaging Team <packaging@saltstack.com> - 2017.7.3-1
* Tue Jan 30 2018 SaltStack Packaging Team <packaging@Ch3LL.com> - 2017.7.3-1
- Update to feature release 2017.7.3-1
* Mon Sep 18 2017 SaltStack Packaging Team <packaging@saltstack.com> - 2017.7.2-1

@ -1 +1 @@
SHA512 (salt-2019.2.1rc0.tar.gz) = 541071683d4878b86ac61a912396732cb24d8886e98e66c980e4a06af4262df68a5822f6f6a766e309bd43de6e824a2952a57198cf97a9c9818b08fca97a6072
SHA512 (salt-3000.tar.gz) = 978c5dcfb78df7d1671fd791f8ebb6b33af6bb2d504460de4ea11ea1715cf29fba0805e9784f482d9a4ece165dc28f5572ef649c97ac79766f1aa36366c93ae6

Loading…
Cancel
Save