commit:     f39161cfeb4839082034ab3130d54aec390ee4a1
Author:     Patrick McLean <chutzpah <AT> gentoo <DOT> org>
AuthorDate: Thu Jun 16 23:42:40 2016 +0000
Commit:     Patrick McLean <chutzpah <AT> gentoo <DOT> org>
CommitDate: Thu Jun 16 23:43:02 2016 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=f39161cf

app-admin/salt: Version bump to 2016.3.1

Package-Manager: portage-2.3.0_rc1

 app-admin/salt/Manifest                            |   1 +
 .../salt/files/salt-2016.3.1-broken-tests.patch    | 221 +++++++++++++++++++++
 .../files/salt-2016.3.1-dont-realpath-tmpdir.patch |  18 ++
 app-admin/salt/salt-2016.3.1.ebuild                | 141 +++++++++++++
 4 files changed, 381 insertions(+)

diff --git a/app-admin/salt/Manifest b/app-admin/salt/Manifest
index 887c12a..ad9d2e3 100644
--- a/app-admin/salt/Manifest
+++ b/app-admin/salt/Manifest
@@ -2,3 +2,4 @@ DIST salt-2015.5.10.tar.gz 5693422 SHA256 
863a96e70f8521af35fe11b10d25b3205a0bfb
 DIST salt-2015.5.9.tar.gz 5689839 SHA256 
71e1c31ebe73edf17b43afcee7de689bb39cc6e97742cd0e110386106fa3fc5b SHA512 
389fa09e2e89bb0631f5a2f1d7ef363f8b3a260d466cd7b5fdf7bfc296f5fb64fa355dc56a401df326cefe43e63904061db4fc01a3b5c1cd54fa34ee102a6ad9
 WHIRLPOOL 
094350e78b96c2633dedb2c4ab0caa959a634e84bf2e92145880eec883ec076765c8b897c873e8f601325a69e7e3fe139163eec45fc6daa109edbd9a884b0dc2
 DIST salt-2015.8.10.tar.gz 6972776 SHA256 
4a81273ab4b01e0f1d29b28ab99a16eb94e5c430107b05491c94f3baf8b95c99 SHA512 
e00eb6535defd883ed789b4b27fae020a8225cd1a3dd05cfa92d6320a4fe6930ecddf9914a572f64715656126107d61920d1b989451caa7ccdb28d969c41c64c
 WHIRLPOOL 
fa6beaee47c604cc1398ed803662dbd340cf9ab20664af6c903d7376abd3253522798c73c83b0c5b00f0db72fb4be20dae074c6d6fdd39026485f5050f108b2a
 DIST salt-2015.8.8.tar.gz 6982904 SHA256 
b2ecce7bf562cfcd6586d66ade278f268bb89023f0fa0accaa55f90b8a668ef5 SHA512 
add65951694bc9e3aaa6db69bf9ac7ed32a5c42822ae34281ca3ea1e7f393235cd6baa1905362d177c62505a514e1c4599751e1a8a913cc334f9ebe1d4ab7ed3
 WHIRLPOOL 
9d81b6153019ff0862c6ee0e3fa949810e8066798aabcc94f2b87893f51906e0e19e37aa26023ea578eb10ebb9816d30d12104fdc5018c7ce91790bd617b2bba
+DIST salt-2016.3.1.tar.gz 7932479 SHA256 
e6bdba4693116430c2af57497eb63399e3a139ac0a7016fa0870b49fbe987f75 SHA512 
74122020a83df79171b9aa3bc311d1b16930140ec6b063c888d41e10fb8e696f69188b62cf925045b40d8b8fe713759de08978b08bc3b8e1f12722de3a8ddb7b
 WHIRLPOOL 
f76afb4d9c6678edf48b608f6dbd27201656fd371b0df78a8a8db306a2cbf5b08fa2fd916e9fb5409b67cd05ab007a3684d91c1e0158416b12f014001de1506a

diff --git a/app-admin/salt/files/salt-2016.3.1-broken-tests.patch 
b/app-admin/salt/files/salt-2016.3.1-broken-tests.patch
new file mode 100644
index 0000000..bb4b341
--- /dev/null
+++ b/app-admin/salt/files/salt-2016.3.1-broken-tests.patch
@@ -0,0 +1,221 @@
+diff --git a/tests/unit/auth_test.py b/tests/unit/auth_test.py
+index 84e8699..5acd6c9 100644
+--- a/tests/unit/auth_test.py
++++ b/tests/unit/auth_test.py
+@@ -50,22 +50,6 @@ class LoadAuthTestCase(TestCase):
+             ret = self.lauth.load_name(valid_eauth_load)
+             format_call_mock.assert_has_calls((expected_ret,), any_order=True)
+ 
+-    def test_get_groups(self):
+-        valid_eauth_load = {'username': 'test_user',
+-                            'show_timeout': False,
+-                            'test_password': '',
+-                            'eauth': 'pam'}
+-        with patch('salt.utils.format_call') as format_call_mock:
+-            expected_ret = call('fake_groups_function_str', {
+-                'username': 'test_user',
+-                'test_password': '',
+-                'show_timeout': False,
+-                'eauth': 'pam'
+-                }, expected_extra_kws=auth.AUTH_INTERNAL_KEYWORDS)
+-            self.lauth.get_groups(valid_eauth_load)
+-            format_call_mock.assert_has_calls((expected_ret,), any_order=True)
+-
+-
+ @patch('zmq.Context', MagicMock())
+ @patch('salt.payload.Serial.dumps', MagicMock())
+ @patch('salt.master.tagify', MagicMock())
+diff --git a/tests/unit/modules/boto_secgroup_test.py 
b/tests/unit/modules/boto_secgroup_test.py
+index cc88568..07fd8ec 100644
+--- a/tests/unit/modules/boto_secgroup_test.py
++++ b/tests/unit/modules/boto_secgroup_test.py
+@@ -192,30 +192,6 @@ class BotoSecgroupTestCase(TestCase):
+                                                         **conn_parameters)
+         self.assertEqual(group_vpc.id, retrieved_group_id)
+ 
+-    @mock_ec2
+-    def test_get_config_single_rule_group_name(self):
+-        '''
+-        tests return of 'config' when given group name. get_config returns an 
OrderedDict.
+-        '''
+-        group_name = _random_group_name()
+-        ip_protocol = u'tcp'
+-        from_port = 22
+-        to_port = 22
+-        cidr_ip = u'0.0.0.0/0'
+-        rules_egress = [{'to_port': -1, 'from_port': -1, 'ip_protocol': 
u'-1', 'cidr_ip': u'0.0.0.0/0'}]
+-
+-        conn = boto.ec2.connect_to_region(region, **boto_conn_parameters)
+-        group = conn.create_security_group(name=group_name, 
description=group_name)
+-        group.authorize(ip_protocol=ip_protocol, from_port=from_port, 
to_port=to_port, cidr_ip=cidr_ip)
+-        # setup the expected get_config result
+-        expected_get_config_result = OrderedDict([('name', group.name), 
('group_id', group.id), ('owner_id', u'111122223333'),
+-                                                 ('description', 
group.description), ('tags', {}),
+-                                                 ('rules', [{'to_port': 
to_port, 'from_port': from_port,
+-                                                  'ip_protocol': ip_protocol, 
'cidr_ip': cidr_ip}]),
+-                                                 ('rules_egress', 
rules_egress)])
+-        secgroup_get_config_result = 
boto_secgroup.get_config(group_id=group.id, **conn_parameters)
+-        self.assertEqual(expected_get_config_result, 
secgroup_get_config_result)
+-
+     @skipIf(True, 'test skipped due to error in moto return - fixed in '
+                   
'https://github.com/spulec/moto/commit/cc0166964371f7b5247a49d45637a8f936ccbe6f')
+     @mock_ec2
+diff --git a/tests/unit/modules/cron_test.py b/tests/unit/modules/cron_test.py
+index fd9b62d..8445471 100644
+--- a/tests/unit/modules/cron_test.py
++++ b/tests/unit/modules/cron_test.py
+@@ -630,16 +630,6 @@ class PsTestCase(TestCase):
+     def test_list_tab(self):
+         self.assertDictEqual(STUB_SIMPLE_CRON_DICT, 
cron.list_tab('DUMMY_USER'))
+ 
+-    @patch('salt.modules.cron._write_cron_lines')
+-    @patch('salt.modules.cron.list_tab', 
new=MagicMock(return_value=STUB_SIMPLE_CRON_DICT))
+-    def test_set_special(self, write_cron_lines_mock):
+-        expected_write_call = call('DUMMY_USER',
+-                                   ['5 0 * * * /tmp/no_script.sh\n',
+-                                    '# Lines below here are managed by Salt, 
do not edit\n',
+-                                    '@hourly echo Hi!\n'])
+-        ret = cron.set_special('DUMMY_USER', '@hourly', 'echo Hi!')
+-        write_cron_lines_mock.assert_has_calls((expected_write_call,), 
any_order=True)
+-
+     def test__get_cron_date_time(self):
+         ret = cron._get_cron_date_time(minute=STUB_CRON_TIMESTAMP['minute'],
+                                     hour=STUB_CRON_TIMESTAMP['hour'],
+diff --git a/tests/unit/modules/linux_sysctl_test.py 
b/tests/unit/modules/linux_sysctl_test.py
+index 89bea83..49851cb 100644
+--- a/tests/unit/modules/linux_sysctl_test.py
++++ b/tests/unit/modules/linux_sysctl_test.py
+@@ -85,18 +85,6 @@ class LinuxSysctlTestCase(TestCase):
+                 'net.ipv4.ip_forward', 1), ret)
+ 
+     @patch('os.path.isfile', MagicMock(return_value=False))
+-    def test_persist_no_conf_failure(self):
+-        '''
+-        Tests adding of config file failure
+-        '''
+-        with patch('salt.utils.fopen', mock_open()) as m_open:
+-            helper_open = m_open()
+-            helper_open.write.assertRaises(CommandExecutionError,
+-                                           linux_sysctl.persist,
+-                                           'net.ipv4.ip_forward',
+-                                           1, config=None)
+-
+-    @patch('os.path.isfile', MagicMock(return_value=False))
+     @patch('os.path.exists', MagicMock(return_value=True))
+     def test_persist_no_conf_success(self):
+         '''
+diff --git a/tests/unit/modules/mac_sysctl_test.py 
b/tests/unit/modules/mac_sysctl_test.py
+index e90ec64..b2ea691 100644
+--- a/tests/unit/modules/mac_sysctl_test.py
++++ b/tests/unit/modules/mac_sysctl_test.py
+@@ -67,18 +67,6 @@ class DarwinSysctlTestCase(TestCase):
+                 'net.inet.icmp.icmplim', 50), ret)
+ 
+     @patch('os.path.isfile', MagicMock(return_value=False))
+-    def test_persist_no_conf_failure(self):
+-        '''
+-        Tests adding of config file failure
+-        '''
+-        with patch('salt.utils.fopen', mock_open()) as m_open:
+-            helper_open = m_open()
+-            helper_open.write.assertRaises(CommandExecutionError,
+-                                           mac_sysctl.persist,
+-                                           'net.inet.icmp.icmplim',
+-                                           50, config=None)
+-
+-    @patch('os.path.isfile', MagicMock(return_value=False))
+     def test_persist_no_conf_success(self):
+         '''
+         Tests successful add of config file when previously not one
+diff --git a/tests/unit/modules/mount_test.py 
b/tests/unit/modules/mount_test.py
+index 9c4ad6f..bf00c8e 100644
+--- a/tests/unit/modules/mount_test.py
++++ b/tests/unit/modules/mount_test.py
+@@ -102,23 +102,6 @@ class MountTestCase(TestCase):
+                                                        'opts': ['D', 'E', 
'F'],
+                                                        'pass': 'H'}})
+ 
+-    def test_rm_fstab(self):
+-        '''
+-        Remove the mount point from the fstab
+-        '''
+-        mock_fstab = MagicMock(return_value={})
+-        with patch.object(mount, 'fstab', mock_fstab):
+-            with patch('salt.utils.fopen', mock_open()):
+-                self.assertTrue(mount.rm_fstab('name', 'device'))
+-
+-        mock_fstab = MagicMock(return_value={'name': 'name'})
+-        with patch.object(mount, 'fstab', mock_fstab):
+-            with patch('salt.utils.fopen', mock_open()) as m_open:
+-                helper_open = m_open()
+-                helper_open.write.assertRaises(CommandExecutionError,
+-                                               mount.rm_fstab,
+-                                               config=None)
+-
+     def test_set_fstab(self):
+         '''
+         Tests to verify that this mount is represented in the fstab,
+@@ -143,22 +126,6 @@ class MountTestCase(TestCase):
+                        mock_open(read_data=MOCK_SHELL_FILE)):
+                 self.assertEqual(mount.set_fstab('A', 'B', 'C'), 'new')
+ 
+-    def test_rm_automaster(self):
+-        '''
+-        Remove the mount point from the auto_master
+-        '''
+-        mock = MagicMock(return_value={})
+-        with patch.object(mount, 'automaster', mock):
+-            self.assertTrue(mount.rm_automaster('name', 'device'))
+-
+-        mock = MagicMock(return_value={'name': 'name'})
+-        with patch.object(mount, 'fstab', mock):
+-            with patch('salt.utils.fopen', mock_open()) as m_open:
+-                helper_open = m_open()
+-                helper_open.write.assertRaises(CommandExecutionError,
+-                                               mount.rm_automaster,
+-                                               'name', 'device')
+-
+     def test_set_automaster(self):
+         '''
+         Verify that this mount is represented in the auto_salt, change the 
mount
+diff --git a/tests/unit/modules/puppet_test.py 
b/tests/unit/modules/puppet_test.py
+index 02bc2e1..249efcb 100644
+--- a/tests/unit/modules/puppet_test.py
++++ b/tests/unit/modules/puppet_test.py
+@@ -72,24 +72,6 @@ class PuppetTestCase(TestCase):
+ 
+             self.assertFalse(puppet.enable())
+ 
+-    def test_disable(self):
+-        '''
+-            Test to disable the puppet agent
+-        '''
+-        mock_lst = MagicMock(return_value=[])
+-        with patch.dict(puppet.__salt__, {'cmd.run': mock_lst}):
+-            mock = MagicMock(side_effect=[True, False])
+-            with patch.object(os.path, 'isfile', mock):
+-                self.assertFalse(puppet.disable())
+-
+-                with patch('salt.utils.fopen', mock_open()):
+-                    self.assertTrue(puppet.disable())
+-
+-                with patch('salt.utils.fopen', mock_open()) as m_open:
+-                    helper_open = m_open()
+-                    helper_open.write.assertRaises(CommandExecutionError,
+-                                                    puppet.disable)
+-
+     def test_status(self):
+         '''
+             Test to display puppet agent status
+@@ -144,11 +126,6 @@ class PuppetTestCase(TestCase):
+                         mock_open(read_data="resources: 1")):
+                 self.assertDictEqual(puppet.summary(), {'resources': 1})
+ 
+-            with patch('salt.utils.fopen', mock_open()) as m_open:
+-                helper_open = m_open()
+-                helper_open.write.assertRaises(CommandExecutionError,
+-                                                puppet.summary)
+-
+     def test_plugin_sync(self):
+         '''
+             Test to runs a plugin synch between the puppet master and agent

diff --git a/app-admin/salt/files/salt-2016.3.1-dont-realpath-tmpdir.patch 
b/app-admin/salt/files/salt-2016.3.1-dont-realpath-tmpdir.patch
new file mode 100644
index 0000000..3e4fa31
--- /dev/null
+++ b/app-admin/salt/files/salt-2016.3.1-dont-realpath-tmpdir.patch
@@ -0,0 +1,18 @@
+diff --git a/tests/integration/__init__.py b/tests/integration/__init__.py
+index fc13bb6..6316fb5 100644
+--- a/tests/integration/__init__.py
++++ b/tests/integration/__init__.py
+@@ -77,12 +77,7 @@ if salt.utils.is_windows():
+     import win32api
+ 
+ 
+-SYS_TMP_DIR = os.path.realpath(
+-    # Avoid ${TMPDIR} and gettempdir() on MacOS as they yield a base path too 
long
+-    # for unix sockets: ``error: AF_UNIX path too long``
+-    # Gentoo Portage prefers ebuild tests are rooted in ${TMPDIR}
+-    os.environ.get('TMPDIR', tempfile.gettempdir()) if not 
salt.utils.is_darwin() else '/tmp'
+-)
++SYS_TMP_DIR = os.environ.get('TMPDIR', tempfile.gettempdir()) if not 
salt.utils.is_darwin() else '/tmp'
+ TMP = os.path.join(SYS_TMP_DIR, 'salt-tests-tmpdir')
+ FILES = os.path.join(INTEGRATION_TEST_DIR, 'files')
+ PYEXEC = 'python{0}.{1}'.format(*sys.version_info)

diff --git a/app-admin/salt/salt-2016.3.1.ebuild 
b/app-admin/salt/salt-2016.3.1.ebuild
new file mode 100644
index 0000000..3df29d3
--- /dev/null
+++ b/app-admin/salt/salt-2016.3.1.ebuild
@@ -0,0 +1,141 @@
+# Copyright 1999-2016 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Id$
+
+EAPI=6
+PYTHON_COMPAT=(python2_7)
+
+inherit eutils systemd distutils-r1
+
+DESCRIPTION="Salt is a remote execution and configuration manager"
+HOMEPAGE="http://saltstack.org/";
+
+if [[ ${PV} == 9999* ]]; then
+       inherit git-r3
+       EGIT_REPO_URI="git://github.com/${PN}stack/${PN}.git"
+       EGIT_BRANCH="develop"
+       SRC_URI=""
+       KEYWORDS=""
+else
+       SRC_URI="mirror://pypi/${PN:0:1}/${PN}/${P}.tar.gz"
+       KEYWORDS="~x86 ~amd64"
+fi
+
+LICENSE="Apache-2.0"
+SLOT="0"
+IUSE="cherrypy ldap libcloud libvirt gnupg keyring mako mongodb mysql neutron 
nova"
+IUSE+=" openssl profile redis selinux test timelib raet +zeromq vim-syntax"
+
+RDEPEND="sys-apps/pciutils
+       dev-python/jinja[${PYTHON_USEDEP}]
+       >=dev-python/msgpack-0.3[${PYTHON_USEDEP}]
+       dev-python/pyyaml[${PYTHON_USEDEP}]
+       dev-python/markupsafe[${PYTHON_USEDEP}]
+       >=dev-python/requests-1.0.0[${PYTHON_USEDEP}]
+       dev-python/setuptools[${PYTHON_USEDEP}]
+       >=www-servers/tornado-4.2.1[${PYTHON_USEDEP}]
+       virtual/python-futures[${PYTHON_USEDEP}]
+       libcloud? ( >=dev-python/libcloud-0.14.0[${PYTHON_USEDEP}] )
+       mako? ( dev-python/mako[${PYTHON_USEDEP}] )
+       ldap? ( dev-python/python-ldap[${PYTHON_USEDEP}] )
+       libvirt? ( dev-python/libvirt-python[${PYTHON_USEDEP}] )
+       openssl? (
+               dev-libs/openssl:*[-bindist]
+               dev-python/pyopenssl[${PYTHON_USEDEP}]
+       )
+       raet? (
+               >=dev-python/libnacl-1.0.0[${PYTHON_USEDEP}]
+               >=dev-python/ioflo-1.1.7[${PYTHON_USEDEP}]
+               >=dev-python/raet-0.6.0[${PYTHON_USEDEP}]
+       )
+       zeromq? (
+               >=dev-python/pyzmq-2.2.0[${PYTHON_USEDEP}]
+               >=dev-python/pycrypto-2.6.1[${PYTHON_USEDEP}]
+       )
+       cherrypy? ( >=dev-python/cherrypy-3.2.2[${PYTHON_USEDEP}] )
+       mongodb? ( dev-python/pymongo[${PYTHON_USEDEP}] )
+       keyring? ( dev-python/keyring[${PYTHON_USEDEP}] )
+       mysql? ( dev-python/mysql-python[${PYTHON_USEDEP}] )
+       redis? ( dev-python/redis-py[${PYTHON_USEDEP}] )
+       selinux? ( sec-policy/selinux-salt )
+       timelib? ( dev-python/timelib[${PYTHON_USEDEP}] )
+       nova? ( >=dev-python/python-novaclient-2.17.0[${PYTHON_USEDEP}] )
+       neutron? ( >=dev-python/python-neutronclient-2.3.6[${PYTHON_USEDEP}] )
+       gnupg? ( dev-python/python-gnupg[${PYTHON_USEDEP}] )
+       profile? ( dev-python/yappi[${PYTHON_USEDEP}] )
+       vim-syntax? ( app-vim/salt-vim )"
+DEPEND="dev-python/setuptools[${PYTHON_USEDEP}]
+       test? (
+               dev-python/psutil[${PYTHON_USEDEP}]
+               dev-python/pip[${PYTHON_USEDEP}]
+               dev-python/virtualenv[${PYTHON_USEDEP}]
+               dev-python/mock[${PYTHON_USEDEP}]
+               dev-python/timelib[${PYTHON_USEDEP}]
+               >=dev-python/boto-2.32.1[${PYTHON_USEDEP}]
+               !x86? ( dev-python/boto3[${PYTHON_USEDEP}] )
+               >=dev-python/moto-0.3.6[${PYTHON_USEDEP}]
+               >=dev-python/SaltTesting-2016.5.11[${PYTHON_USEDEP}]
+               >=dev-python/libcloud-0.14.0[${PYTHON_USEDEP}]
+               ${RDEPEND}
+       )"
+
+DOCS=(README.rst AUTHORS)
+
+REQUIRED_USE="|| ( raet zeromq )"
+RESTRICT="x86? ( test )"
+
+PATCHES=(
+       "${FILESDIR}/${PN}-2015.8.2-tmpdir.patch"
+       "${FILESDIR}/${PN}-2016.3.1-dont-realpath-tmpdir.patch"
+       "${FILESDIR}/${PN}-2016.3.1-broken-tests.patch"
+)
+
+python_prepare() {
+       # this test fails because it trys to "pip install distribute"
+       rm tests/unit/{modules,states}/zcbuildout_test.py \
+               tests/unit/modules/{rh_ip,win_network,random_org}_test.py
+
+       # apparently libcloud does not know about this?
+       rm tests/unit/cloud/clouds/dimensiondata_test.py
+
+       # seriously? "ValueError: Missing (or not readable) key file: 
'/home/dany/PRIVKEY.pem'"
+       rm tests/unit/cloud/clouds/gce_test.py
+}
+
+python_install_all() {
+       local svc
+       USE_SETUPTOOLS=1 distutils-r1_python_install_all
+
+       for svc in minion master syndic api; do
+               newinitd "${FILESDIR}"/${svc}-initd-4 salt-${svc}
+               newconfd "${FILESDIR}"/${svc}-confd-1 salt-${svc}
+               systemd_dounit "${FILESDIR}"/salt-${svc}.service
+       done
+
+       insinto /etc/${PN}
+       doins -r conf/*
+}
+
+python_test() {
+       local tempdir
+       # testsuite likes lots of files
+       ulimit -n 3072
+
+       # ${T} is too long a path for the tests to work
+       tempdir="$(mktemp -dup /tmp salt-XXX)"
+       mkdir "${T}/$(basename "${tempdir}")"
+
+       (
+               cleanup() { rm -f "${tempdir}"; }
+               trap cleanup EXIT
+
+               addwrite "${tempdir}"
+               ln -s "$(realpath --relative-to=/tmp "${T}/$(basename 
"${tempdir}")")" "${tempdir}"
+
+               USE_SETUPTOOLS=1 SHELL="/bin/bash" \
+                       TMPDIR="${tempdir}" \
+                       ${EPYTHON} tests/runtests.py \
+                       --unit-tests --no-report --verbose
+
+       ) || die "testing failed"
+}

Reply via email to