Hello community,
here is the log from the commit of package python-oslo.rootwrap for
openSUSE:Factory checked in at 2017-02-21 13:42:15
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-oslo.rootwrap (Old)
and /work/SRC/openSUSE:Factory/.python-oslo.rootwrap.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-oslo.rootwrap"
Changes:
--------
---
/work/SRC/openSUSE:Factory/python-oslo.rootwrap/python-oslo.rootwrap.changes
2016-11-15 18:01:29.000000000 +0100
+++
/work/SRC/openSUSE:Factory/.python-oslo.rootwrap.new/python-oslo.rootwrap.changes
2017-02-21 13:42:16.616618511 +0100
@@ -1,0 +2,16 @@
+Mon Feb 13 09:42:08 UTC 2017 - [email protected]
+
+- update to version 5.4.0:
+ - Remove discover from test-requirements
+ - Add Constraints support
+ - Updated from global requirements
+ - Show team and repo badges on README
+ - Update homepage with developer documentation page
+ - [TrivialFix] Replace 'assertFalse(a in b)' with 'assertNotIn(a, b)'
+ - Enable release notes translation
+ - Relax default strict option under python3.x for configparser
+ - Fix running unknown commands in daemon mode
+ - Enhance _program() and _program_path()
+ - Add reno for release notes management
+
+-------------------------------------------------------------------
Old:
----
oslo.rootwrap-5.1.1.tar.gz
New:
----
oslo.rootwrap-5.4.0.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-oslo.rootwrap.spec ++++++
--- /var/tmp/diff_new_pack.2CpTcz/_old 2017-02-21 13:42:18.620335839 +0100
+++ /var/tmp/diff_new_pack.2CpTcz/_new 2017-02-21 13:42:18.620335839 +0100
@@ -1,7 +1,7 @@
#
# spec file for package python-oslo.rootwrap
#
-# Copyright (c) 2016 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2017 SUSE LINUX GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -18,7 +18,7 @@
%global sname oslo.rootwrap
Name: python-oslo.rootwrap
-Version: 5.1.1
+Version: 5.4.0
Release: 0
Summary: Filtering shell commands to run as root from OpenStack services
License: Apache-2.0
@@ -31,7 +31,7 @@
BuildRequires: python-fixtures >= 3.0.0
BuildRequires: python-mock >= 2.0
BuildRequires: python-oslotest >= 1.10.0
-BuildRequires: python-pbr >= 1.6
+BuildRequires: python-pbr >= 1.8
BuildRequires: python-python-subunit >= 0.0.18
BuildRequires: python-six >= 1.9.0
BuildRequires: python-testrepository >= 0.0.18
@@ -50,16 +50,18 @@
from OpenStack services.
%package doc
-Summary: Documentation for OpenStack oslo rootwrap
+Summary: Documentation for OpenStack %{sname}
Group: Development/Languages/Python
BuildRequires: python-Sphinx
-BuildRequires: python-oslosphinx >= 2.5.0
+BuildRequires: python-oslosphinx >= 4.7.0
+BuildRequires: python-reno >= 1.8.0
%description doc
-Documentation for the oslo.rootwrap library.
+Documentation for the OpenStack %{sname} library.
%prep
-%setup -q -n %{sname}-%{version}
+%autosetup -n %{sname}-%{version}
+%py_req_cleanup
%build
%{py2_build}
++++++ _service ++++++
--- /var/tmp/diff_new_pack.2CpTcz/_old 2017-02-21 13:42:18.656330761 +0100
+++ /var/tmp/diff_new_pack.2CpTcz/_new 2017-02-21 13:42:18.656330761 +0100
@@ -1,14 +1,12 @@
<services>
<service mode="disabled" name="renderspec">
- <param
name="input-template">https://raw.githubusercontent.com/openstack/rpm-packaging/stable/newton/openstack/oslo.rootwrap/oslo.rootwrap.spec.j2</param>
+ <param
name="input-template">https://raw.githubusercontent.com/openstack/rpm-packaging/stable/ocata/openstack/oslo.rootwrap/oslo.rootwrap.spec.j2</param>
<param name="output-name">python-oslo.rootwrap.spec</param>
- <param
name="requirements">https://raw.githubusercontent.com/openstack/rpm-packaging/stable/newton/global-requirements.txt</param>
+ <param
name="requirements">https://raw.githubusercontent.com/openstack/rpm-packaging/stable/ocata/global-requirements.txt</param>
+ <param name="changelog-email">[email protected]</param>
+ <param name="changelog-provider">gh,openstack,oslo.rootwrap</param>
</service>
<service mode="disabled" name="download_files">
- <param name="changesgenerate">enable</param>
- </service>
- <service name="refresh_patches" mode="disabled">
- <param name="changesgenerate">enable</param>
</service>
<service name="format_spec_file" mode="disabled"/>
</services>
++++++ oslo.rootwrap-5.1.1.tar.gz -> oslo.rootwrap-5.4.0.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/oslo.rootwrap-5.1.1/AUTHORS
new/oslo.rootwrap-5.4.0/AUTHORS
--- old/oslo.rootwrap-5.1.1/AUTHORS 2016-11-04 06:52:03.000000000 +0100
+++ new/oslo.rootwrap-5.4.0/AUTHORS 2017-01-18 20:32:57.000000000 +0100
@@ -1,3 +1,4 @@
+Andreas Jaeger <[email protected]>
Angus Lees <[email protected]>
Bogdan Dobrelya <[email protected]>
Cedric Brandily <[email protected]>
@@ -10,11 +11,13 @@
Dirk Mueller <[email protected]>
Doug Hellmann <[email protected]>
Doug Hellmann <[email protected]>
+Flavio Percoco <[email protected]>
Ihar Hrachyshka <[email protected]>
Jakub Libosvar <[email protected]>
James Carey <[email protected]>
Jeremy Stanley <[email protected]>
Julien Danjou <[email protected]>
+Kirill Bespalov <[email protected]>
Mark McClain <[email protected]>
Mark McLoughlin <[email protected]>
Maru Newby <[email protected]>
@@ -27,9 +30,12 @@
Sergey Lukjanov <[email protected]>
Stanislav Kudriashev <[email protected]>
Steve Martinelli <[email protected]>
+Swapnil Kulkarni (coolsvap) <[email protected]>
Thierry Carrez <[email protected]>
Thomas Bechtold <[email protected]>
Tomoki Sekiyama <[email protected]>
+Tony Breeds <[email protected]>
+Tony Xu <[email protected]>
Victor Stinner <[email protected]>
Yatin Kumbhare <[email protected]>
Yufang Zhang <[email protected]>
@@ -37,5 +43,6 @@
Zhao Lei <[email protected]>
Zhongyue Luo <[email protected]>
fumihiko kakuma <[email protected]>
+howardlee <[email protected]>
sonu.kumar <[email protected]>
yan.haifeng <[email protected]>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/oslo.rootwrap-5.1.1/ChangeLog
new/oslo.rootwrap-5.4.0/ChangeLog
--- old/oslo.rootwrap-5.1.1/ChangeLog 2016-11-04 06:52:03.000000000 +0100
+++ new/oslo.rootwrap-5.4.0/ChangeLog 2017-01-18 20:32:57.000000000 +0100
@@ -1,22 +1,40 @@
CHANGES
=======
-5.1.1
+5.4.0
-----
+* Relax default strict option under python3.x for configparser
+* Add Constraints support
+* Show team and repo badges on README
+
+5.3.0
+-----
+
+* Updated from global requirements
+* Updated from global requirements
+* [TrivialFix] Replace 'assertFalse(a in b)' with 'assertNotIn(a, b)'
* Fix running unknown commands in daemon mode
-* Update .gitreview for stable/newton
+* Enable release notes translation
+
+5.2.0
+-----
+
+* Update homepage with developer documentation page
+* Enhance _program() and _program_path()
5.1.0
-----
* Fix parameters of assertEqual are misplaced
+* Remove discover from test-requirements
5.0.0
-----
* always allow privsep-helper as a command
* Add Python 3.5 classifier and venv
+* Add reno for release notes management
4.4.0
-----
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/oslo.rootwrap-5.1.1/PKG-INFO
new/oslo.rootwrap-5.4.0/PKG-INFO
--- old/oslo.rootwrap-5.1.1/PKG-INFO 2016-11-04 06:52:03.000000000 +0100
+++ new/oslo.rootwrap-5.4.0/PKG-INFO 2017-01-18 20:32:58.000000000 +0100
@@ -1,12 +1,21 @@
Metadata-Version: 1.1
Name: oslo.rootwrap
-Version: 5.1.1
+Version: 5.4.0
Summary: Oslo Rootwrap
-Home-page: https://launchpad.net/oslo
+Home-page: http://docs.openstack.org/developer/oslo.rootwrap
Author: OpenStack
Author-email: [email protected]
License: UNKNOWN
-Description: ===============================================
+Description: ========================
+ Team and repository tags
+ ========================
+
+ .. image:: http://governance.openstack.org/badges/oslo.rootwrap.svg
+ :target: http://governance.openstack.org/reference/tags/index.html
+
+ .. Change things from this point on
+
+ ===============================================
oslo.rootwrap -- Escalated Permission Control
===============================================
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/oslo.rootwrap-5.1.1/README.rst
new/oslo.rootwrap-5.4.0/README.rst
--- old/oslo.rootwrap-5.1.1/README.rst 2016-11-04 06:50:51.000000000 +0100
+++ new/oslo.rootwrap-5.4.0/README.rst 2017-01-18 20:31:15.000000000 +0100
@@ -1,3 +1,12 @@
+========================
+Team and repository tags
+========================
+
+.. image:: http://governance.openstack.org/badges/oslo.rootwrap.svg
+ :target: http://governance.openstack.org/reference/tags/index.html
+
+.. Change things from this point on
+
===============================================
oslo.rootwrap -- Escalated Permission Control
===============================================
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/oslo.rootwrap-5.1.1/oslo.rootwrap.egg-info/PKG-INFO
new/oslo.rootwrap-5.4.0/oslo.rootwrap.egg-info/PKG-INFO
--- old/oslo.rootwrap-5.1.1/oslo.rootwrap.egg-info/PKG-INFO 2016-11-04
06:52:03.000000000 +0100
+++ new/oslo.rootwrap-5.4.0/oslo.rootwrap.egg-info/PKG-INFO 2017-01-18
20:32:57.000000000 +0100
@@ -1,12 +1,21 @@
Metadata-Version: 1.1
Name: oslo.rootwrap
-Version: 5.1.1
+Version: 5.4.0
Summary: Oslo Rootwrap
-Home-page: https://launchpad.net/oslo
+Home-page: http://docs.openstack.org/developer/oslo.rootwrap
Author: OpenStack
Author-email: [email protected]
License: UNKNOWN
-Description: ===============================================
+Description: ========================
+ Team and repository tags
+ ========================
+
+ .. image:: http://governance.openstack.org/badges/oslo.rootwrap.svg
+ :target: http://governance.openstack.org/reference/tags/index.html
+
+ .. Change things from this point on
+
+ ===============================================
oslo.rootwrap -- Escalated Permission Control
===============================================
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/oslo.rootwrap-5.1.1/oslo.rootwrap.egg-info/SOURCES.txt
new/oslo.rootwrap-5.4.0/oslo.rootwrap.egg-info/SOURCES.txt
--- old/oslo.rootwrap-5.1.1/oslo.rootwrap.egg-info/SOURCES.txt 2016-11-04
06:52:03.000000000 +0100
+++ new/oslo.rootwrap-5.4.0/oslo.rootwrap.egg-info/SOURCES.txt 2017-01-18
20:32:58.000000000 +0100
@@ -33,9 +33,17 @@
oslo_rootwrap/daemon.py
oslo_rootwrap/filters.py
oslo_rootwrap/jsonrpc.py
+oslo_rootwrap/version.py
oslo_rootwrap/wrapper.py
oslo_rootwrap/tests/__init__.py
oslo_rootwrap/tests/run_daemon.py
oslo_rootwrap/tests/test_functional.py
oslo_rootwrap/tests/test_functional_eventlet.py
-oslo_rootwrap/tests/test_rootwrap.py
\ No newline at end of file
+oslo_rootwrap/tests/test_rootwrap.py
+releasenotes/notes/add_reno-3b4ae0789e9c45b4.yaml
+releasenotes/source/conf.py
+releasenotes/source/index.rst
+releasenotes/source/unreleased.rst
+releasenotes/source/_static/.placeholder
+releasenotes/source/_templates/.placeholder
+tools/tox_install.sh
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/oslo.rootwrap-5.1.1/oslo.rootwrap.egg-info/pbr.json
new/oslo.rootwrap-5.4.0/oslo.rootwrap.egg-info/pbr.json
--- old/oslo.rootwrap-5.1.1/oslo.rootwrap.egg-info/pbr.json 2016-11-04
06:52:03.000000000 +0100
+++ new/oslo.rootwrap-5.4.0/oslo.rootwrap.egg-info/pbr.json 2017-01-18
20:32:57.000000000 +0100
@@ -1 +1 @@
-{"git_version": "36e9592", "is_release": true}
\ No newline at end of file
+{"is_release": true, "git_version": "698ce0b"}
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/oslo.rootwrap-5.1.1/oslo_rootwrap/filters.py
new/oslo.rootwrap-5.4.0/oslo_rootwrap/filters.py
--- old/oslo.rootwrap-5.1.1/oslo_rootwrap/filters.py 2016-11-04
06:50:51.000000000 +0100
+++ new/oslo.rootwrap-5.4.0/oslo_rootwrap/filters.py 2017-01-18
20:31:15.000000000 +0100
@@ -16,6 +16,7 @@
import os
import pwd
import re
+import shutil
def _getuid(user):
@@ -156,15 +157,26 @@
def __init__(self, *args):
super(KillFilter, self).__init__("/bin/kill", *args)
- def _program_path(self, command):
- """Determine the full path for command"""
+ @staticmethod
+ def _program_path(command):
+ """Try to determine the full path for command.
+
+ Return command if the full path cannot be found.
+ """
+
+ # shutil.which() was added to Python 3.3
+ if hasattr(shutil, 'which'):
+ return shutil.which(command)
+
if os.path.isabs(command):
return command
- else:
- for path in os.environ.get('PATH', '').split(os.pathsep):
- program = os.path.join(path, command)
- if os.path.isfile(program):
- return program
+
+ path = os.environ.get('PATH', os.defpath).split(os.pathsep)
+ for dir in path:
+ program = os.path.join(dir, command)
+ if os.path.isfile(program):
+ return program
+
return command
def _program(self, pid):
@@ -177,8 +189,8 @@
return None
# NOTE(yufang521247): /proc/PID/exe may have '\0' on the
- # end, because python doesn't stop at '\0' when read the
- # target path.
+ # end (ex: if an executable is updated or deleted), because python
+ # doesn't stop at '\0' when read the target path.
command = command.partition('\0')[0]
# NOTE(dprince): /proc/PID/exe may have ' (deleted)' on
@@ -186,23 +198,26 @@
if command.endswith(" (deleted)"):
command = command[:-len(" (deleted)")]
+ if os.path.isfile(command):
+ return command
+
# /proc/PID/exe may have been renamed with
# a ';......' or '.#prelink#......' suffix etc.
# So defer to /proc/PID/cmdline in that case.
- if not os.path.isfile(command):
- try:
- with open("/proc/%d/cmdline" % int(pid)) as pfile:
- cmdline = pfile.read().partition('\0')[0]
- cmdline = self._program_path(cmdline)
- if os.path.isfile(cmdline):
- command = cmdline
- # Note we don't return None if cmdline doesn't exist
- # as that will allow killing a process where the exe
- # has been removed from the system rather than updated.
- except EnvironmentError:
- return None
+ try:
+ with open("/proc/%d/cmdline" % int(pid)) as pfile:
+ cmdline = pfile.read().partition('\0')[0]
- return command
+ cmdline = self._program_path(cmdline)
+ if os.path.isfile(cmdline):
+ command = cmdline
+
+ # Note we don't return None if cmdline doesn't exist
+ # as that will allow killing a process where the exe
+ # has been removed from the system rather than updated.
+ return command
+ except EnvironmentError:
+ return None
def match(self, userargs):
if not userargs or userargs[0] != "kill":
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/oslo.rootwrap-5.1.1/oslo_rootwrap/tests/test_rootwrap.py
new/oslo.rootwrap-5.4.0/oslo_rootwrap/tests/test_rootwrap.py
--- old/oslo.rootwrap-5.1.1/oslo_rootwrap/tests/test_rootwrap.py
2016-11-04 06:50:51.000000000 +0100
+++ new/oslo.rootwrap-5.4.0/oslo_rootwrap/tests/test_rootwrap.py
2017-01-18 20:31:15.000000000 +0100
@@ -44,6 +44,18 @@
self.assertEqual(["/fake/privsep-helper", "--context", "foo"],
filtermatch.get_command(privsep))
+ def test_strict_switched_off_in_configparser(self):
+ temp_dir = self.useFixture(fixtures.TempDir()).path
+ temp_file = os.path.join(temp_dir, 'test.conf')
+ f = open(temp_file, 'w')
+ f.write("""[Filters]
+privsep: PathFilter, privsep-helper, root
+privsep: PathFilter, privsep-helper, root
+""")
+ f.close()
+ filterlist = wrapper.load_filters([temp_dir])
+ self.assertIsNotNone(filterlist)
+
class RootwrapTestCase(testtools.TestCase):
if os.path.exists('/sbin/ip'):
@@ -156,7 +168,7 @@
# check that environment variables are set
self.assertEqual('/some/thing', env.get('A'))
self.assertEqual('somethingelse', env.get('B'))
- self.assertFalse('sleep' in env.keys())
+ self.assertNotIn('sleep', env.keys())
def test_EnvFilter_without_leading_env(self):
envset = ['A=/some/thing', 'B=somethingelse']
@@ -175,7 +187,7 @@
# check that environment variables are set
self.assertEqual('/some/thing', env.get('A'))
self.assertEqual('somethingelse', env.get('B'))
- self.assertFalse('sleep' in env.keys())
+ self.assertNotIn('sleep', env.keys())
def test_KillFilter(self):
if not os.path.exists("/proc/%d" % os.getpid()):
@@ -254,33 +266,42 @@
exists.side_effect = fake_exists
self.assertTrue(f.match(usercmd))
- def test_KillFilter_upgraded_exe(self):
+ @mock.patch('os.readlink')
+ @mock.patch('os.path.isfile')
+ def test_KillFilter_upgraded_exe(self, mock_isfile, mock_readlink):
"""Makes sure upgraded exe's are killed correctly."""
f = filters.KillFilter("root", "/bin/commandddddd")
command = "/bin/commandddddd"
usercmd = ['kill', 1234]
- with mock.patch('os.readlink') as readlink:
- readlink.return_value = command + '\0\05190bfb2 (deleted)'
- with mock.patch('os.path.isfile') as exists:
- def fake_exists(path):
- return path == command
- exists.side_effect = fake_exists
- self.assertTrue(f.match(usercmd))
- def test_KillFilter_renamed_exe(self):
+ def fake_exists(path):
+ return path == command
+
+ mock_readlink.return_value = command + '\0\05190bfb2 (deleted)'
+ mock_isfile.side_effect = fake_exists
+ self.assertTrue(f.match(usercmd))
+
+ @mock.patch('os.readlink')
+ @mock.patch('os.path.isfile')
+ @mock.patch('os.path.exists')
+ @mock.patch('os.access')
+ def test_KillFilter_renamed_exe(self, mock_access, mock_exists,
+ mock_isfile, mock_readlink):
"""Makes sure renamed exe's are killed correctly."""
command = "/bin/commandddddd"
f = filters.KillFilter("root", command)
usercmd = ['kill', 1234]
- with mock.patch('os.readlink') as readlink:
- readlink.return_value = command + ';90bfb2 (deleted)'
- m = mock.mock_open(read_data=command)
- with mock.patch("six.moves.builtins.open", m, create=True):
- with mock.patch('os.path.isfile') as exists:
- def fake_exists(path):
- return path == command
- exists.side_effect = fake_exists
- self.assertTrue(f.match(usercmd))
+
+ def fake_os_func(path, *args):
+ return path == command
+
+ mock_readlink.return_value = command + ';90bfb2 (deleted)'
+ m = mock.mock_open(read_data=command)
+ with mock.patch("six.moves.builtins.open", m, create=True):
+ mock_isfile.side_effect = fake_os_func
+ mock_exists.side_effect = fake_os_func
+ mock_access.side_effect = fake_os_func
+ self.assertTrue(f.match(usercmd))
def test_ReadFileFilter(self):
goodfn = '/good/file.name'
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/oslo.rootwrap-5.1.1/oslo_rootwrap/version.py
new/oslo.rootwrap-5.4.0/oslo_rootwrap/version.py
--- old/oslo.rootwrap-5.1.1/oslo_rootwrap/version.py 1970-01-01
01:00:00.000000000 +0100
+++ new/oslo.rootwrap-5.4.0/oslo_rootwrap/version.py 2017-01-18
20:31:15.000000000 +0100
@@ -0,0 +1,18 @@
+# Copyright 2016 OpenStack Foundation
+#
+# 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
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+# License for the specific language governing permissions and limitations
+# under the License.
+
+
+import pbr.version
+
+version_info = pbr.version.VersionInfo('oslo_rootwrap')
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/oslo.rootwrap-5.1.1/oslo_rootwrap/wrapper.py
new/oslo.rootwrap-5.4.0/oslo_rootwrap/wrapper.py
--- old/oslo.rootwrap-5.1.1/oslo_rootwrap/wrapper.py 2016-11-04
06:50:51.000000000 +0100
+++ new/oslo.rootwrap-5.4.0/oslo_rootwrap/wrapper.py 2017-01-18
20:31:15.000000000 +0100
@@ -19,6 +19,7 @@
import pwd
import signal
+import six
from six import moves
from oslo_rootwrap import filters
@@ -116,7 +117,8 @@
continue
for filterfile in filter(lambda f: not f.startswith('.'),
os.listdir(filterdir)):
- filterconfig = moves.configparser.RawConfigParser()
+ kwargs = {"strict": False} if six.PY3 else {}
+ filterconfig = moves.configparser.RawConfigParser(**kwargs)
filterconfig.read(os.path.join(filterdir, filterfile))
for (name, value) in filterconfig.items("Filters"):
filterdefinition = [s.strip() for s in value.split(',')]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/oslo.rootwrap-5.1.1/releasenotes/notes/add_reno-3b4ae0789e9c45b4.yaml
new/oslo.rootwrap-5.4.0/releasenotes/notes/add_reno-3b4ae0789e9c45b4.yaml
--- old/oslo.rootwrap-5.1.1/releasenotes/notes/add_reno-3b4ae0789e9c45b4.yaml
1970-01-01 01:00:00.000000000 +0100
+++ new/oslo.rootwrap-5.4.0/releasenotes/notes/add_reno-3b4ae0789e9c45b4.yaml
2017-01-18 20:31:15.000000000 +0100
@@ -0,0 +1,3 @@
+---
+other:
+ - Switch to reno for managing release notes.
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/oslo.rootwrap-5.1.1/releasenotes/source/conf.py
new/oslo.rootwrap-5.4.0/releasenotes/source/conf.py
--- old/oslo.rootwrap-5.1.1/releasenotes/source/conf.py 1970-01-01
01:00:00.000000000 +0100
+++ new/oslo.rootwrap-5.4.0/releasenotes/source/conf.py 2017-01-18
20:31:15.000000000 +0100
@@ -0,0 +1,277 @@
+# -*- coding: utf-8 -*-
+# 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
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+# implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# This file is execfile()d with the current directory set to its
+# containing dir.
+#
+# Note that not all possible configuration values are present in this
+# autogenerated file.
+#
+# All configuration values have a default; values that are commented out
+# serve to show the default.
+
+# If extensions (or modules to document with autodoc) are in another directory,
+# add these directories to sys.path here. If the directory is relative to the
+# documentation root, use os.path.abspath to make it absolute, like shown here.
+# sys.path.insert(0, os.path.abspath('.'))
+
+# -- General configuration ------------------------------------------------
+
+# If your documentation needs a minimal Sphinx version, state it here.
+# needs_sphinx = '1.0'
+
+# Add any Sphinx extension module names here, as strings. They can be
+# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom
+# ones.
+extensions = [
+ 'oslosphinx',
+ 'reno.sphinxext',
+]
+
+# Add any paths that contain templates here, relative to this directory.
+templates_path = ['_templates']
+
+# The suffix of source filenames.
+source_suffix = '.rst'
+
+# The encoding of source files.
+# source_encoding = 'utf-8-sig'
+
+# The master toctree document.
+master_doc = 'index'
+
+# General information about the project.
+project = u'oslo.rootwrap Release Notes'
+copyright = u'2016, oslo.rootwrap Developers'
+
+# The version info for the project you're documenting, acts as replacement for
+# |version| and |release|, also used in various other places throughout the
+# built documents.
+#
+# The short X.Y version.
+from oslo_rootwrap.version import version_info as oslo_rootwrap_version
+# The full version, including alpha/beta/rc tags.
+release = oslo_rootwrap_version.version_string_with_vcs()
+# The short X.Y version.
+version = oslo_rootwrap_version.canonical_version_string()
+
+# The language for content autogenerated by Sphinx. Refer to documentation
+# for a list of supported languages.
+# language = None
+
+# There are two options for replacing |today|: either, you set today to some
+# non-false value, then it is used:
+# today = ''
+# Else, today_fmt is used as the format for a strftime call.
+# today_fmt = '%B %d, %Y'
+
+# List of patterns, relative to source directory, that match files and
+# directories to ignore when looking for source files.
+exclude_patterns = []
+
+# The reST default role (used for this markup: `text`) to use for all
+# documents.
+# default_role = None
+
+# If true, '()' will be appended to :func: etc. cross-reference text.
+# add_function_parentheses = True
+
+# If true, the current module name will be prepended to all description
+# unit titles (such as .. function::).
+# add_module_names = True
+
+# If true, sectionauthor and moduleauthor directives will be shown in the
+# output. They are ignored by default.
+# show_authors = False
+
+# The name of the Pygments (syntax highlighting) style to use.
+pygments_style = 'sphinx'
+
+# A list of ignored prefixes for module index sorting.
+# modindex_common_prefix = []
+
+# If true, keep warnings as "system message" paragraphs in the built documents.
+# keep_warnings = False
+
+
+# -- Options for HTML output ----------------------------------------------
+
+# The theme to use for HTML and HTML Help pages. See the documentation for
+# a list of builtin themes.
+html_theme = 'default'
+
+# Theme options are theme-specific and customize the look and feel of a theme
+# further. For a list of options available for each theme, see the
+# documentation.
+# html_theme_options = {}
+
+# Add any paths that contain custom themes here, relative to this directory.
+# html_theme_path = []
+
+# The name for this set of Sphinx documents. If None, it defaults to
+# "<project> v<release> documentation".
+# html_title = None
+
+# A shorter title for the navigation bar. Default is the same as html_title.
+# html_short_title = None
+
+# The name of an image file (relative to this directory) to place at the top
+# of the sidebar.
+# html_logo = None
+
+# The name of an image file (within the static path) to use as favicon of the
+# docs. This file should be a Windows icon file (.ico) being 16x16 or 32x32
+# pixels large.
+# html_favicon = None
+
+# Add any paths that contain custom static files (such as style sheets) here,
+# relative to this directory. They are copied after the builtin static files,
+# so a file named "default.css" will overwrite the builtin "default.css".
+html_static_path = ['_static']
+
+# Add any extra paths that contain custom files (such as robots.txt or
+# .htaccess) here, relative to this directory. These files are copied
+# directly to the root of the documentation.
+# html_extra_path = []
+
+# If not '', a 'Last updated on:' timestamp is inserted at every page bottom,
+# using the given strftime format.
+# html_last_updated_fmt = '%b %d, %Y'
+
+# If true, SmartyPants will be used to convert quotes and dashes to
+# typographically correct entities.
+# html_use_smartypants = True
+
+# Custom sidebar templates, maps document names to template names.
+# html_sidebars = {}
+
+# Additional templates that should be rendered to pages, maps page names to
+# template names.
+# html_additional_pages = {}
+
+# If false, no module index is generated.
+# html_domain_indices = True
+
+# If false, no index is generated.
+# html_use_index = True
+
+# If true, the index is split into individual pages for each letter.
+# html_split_index = False
+
+# If true, links to the reST sources are added to the pages.
+# html_show_sourcelink = True
+
+# If true, "Created using Sphinx" is shown in the HTML footer. Default is True.
+# html_show_sphinx = True
+
+# If true, "(C) Copyright ..." is shown in the HTML footer. Default is True.
+# html_show_copyright = True
+
+# If true, an OpenSearch description file will be output, and all pages will
+# contain a <link> tag referring to it. The value of this option must be the
+# base URL from which the finished HTML is served.
+# html_use_opensearch = ''
+
+# This is the file name suffix for HTML files (e.g. ".xhtml").
+# html_file_suffix = None
+
+# Output file base name for HTML help builder.
+htmlhelp_basename = 'oslo.rootwrapReleaseNotesDoc'
+
+
+# -- Options for LaTeX output ---------------------------------------------
+
+latex_elements = {
+ # The paper size ('letterpaper' or 'a4paper').
+ # 'papersize': 'letterpaper',
+
+ # The font size ('10pt', '11pt' or '12pt').
+ # 'pointsize': '10pt',
+
+ # Additional stuff for the LaTeX preamble.
+ # 'preamble': '',
+}
+
+# Grouping the document tree into LaTeX files. List of tuples
+# (source start file, target name, title,
+# author, documentclass [howto, manual, or own class]).
+latex_documents = [
+ ('index', 'oslo.rootwrapReleaseNotes.tex',
+ u'oslo.rootwrap Release Notes Documentation',
+ u'oslo.rootwrap Developers', 'manual'),
+]
+
+# The name of an image file (relative to this directory) to place at the top of
+# the title page.
+# latex_logo = None
+
+# For "manual" documents, if this is true, then toplevel headings are parts,
+# not chapters.
+# latex_use_parts = False
+
+# If true, show page references after internal links.
+# latex_show_pagerefs = False
+
+# If true, show URL addresses after external links.
+# latex_show_urls = False
+
+# Documents to append as an appendix to all manuals.
+# latex_appendices = []
+
+# If false, no module index is generated.
+# latex_domain_indices = True
+
+
+# -- Options for manual page output ---------------------------------------
+
+# One entry per manual page. List of tuples
+# (source start file, name, description, authors, manual section).
+man_pages = [
+ ('index', 'oslo.rootwrapReleaseNotes',
+ u'oslo.rootwrap Release Notes Documentation',
+ [u'oslo.rootwrap Developers'], 1)
+]
+
+# If true, show URL addresses after external links.
+# man_show_urls = False
+
+
+# -- Options for Texinfo output -------------------------------------------
+
+# Grouping the document tree into Texinfo files. List of tuples
+# (source start file, target name, title, author,
+# dir menu entry, description, category)
+texinfo_documents = [
+ ('index', 'oslo.rootwrapReleaseNotes',
+ u'oslo.rootwrap Release Notes Documentation',
+ u'oslo.rootwrap Developers', 'oslo.rootwrapReleaseNotes',
+ 'Allows fine-grained filtering of shell commands to run as root from'
+ ' OpenStack services.',
+ 'Miscellaneous'),
+]
+
+# Documents to append as an appendix to all manuals.
+# texinfo_appendices = []
+
+# If false, no module index is generated.
+# texinfo_domain_indices = True
+
+# How to display URL addresses: 'footnote', 'no', or 'inline'.
+# texinfo_show_urls = 'footnote'
+
+# If true, do not generate a @detailmenu in the "Top" node's menu.
+# texinfo_no_detailmenu = False
+
+# -- Options for Internationalization output ------------------------------
+locale_dirs = ['locale/']
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/oslo.rootwrap-5.1.1/releasenotes/source/index.rst
new/oslo.rootwrap-5.4.0/releasenotes/source/index.rst
--- old/oslo.rootwrap-5.1.1/releasenotes/source/index.rst 1970-01-01
01:00:00.000000000 +0100
+++ new/oslo.rootwrap-5.4.0/releasenotes/source/index.rst 2017-01-18
20:31:15.000000000 +0100
@@ -0,0 +1,8 @@
+=============================
+ oslo.rootwrap Release Notes
+=============================
+
+ .. toctree::
+ :maxdepth: 1
+
+ unreleased
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/oslo.rootwrap-5.1.1/releasenotes/source/unreleased.rst
new/oslo.rootwrap-5.4.0/releasenotes/source/unreleased.rst
--- old/oslo.rootwrap-5.1.1/releasenotes/source/unreleased.rst 1970-01-01
01:00:00.000000000 +0100
+++ new/oslo.rootwrap-5.4.0/releasenotes/source/unreleased.rst 2017-01-18
20:31:15.000000000 +0100
@@ -0,0 +1,5 @@
+==========================
+ Unreleased Release Notes
+==========================
+
+.. release-notes::
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/oslo.rootwrap-5.1.1/setup.cfg
new/oslo.rootwrap-5.4.0/setup.cfg
--- old/oslo.rootwrap-5.1.1/setup.cfg 2016-11-04 06:52:03.000000000 +0100
+++ new/oslo.rootwrap-5.4.0/setup.cfg 2017-01-18 20:32:58.000000000 +0100
@@ -5,7 +5,7 @@
summary = Oslo Rootwrap
description-file =
README.rst
-home-page = https://launchpad.net/oslo
+home-page = http://docs.openstack.org/developer/oslo.rootwrap
classifier =
Development Status :: 4 - Beta
Environment :: OpenStack
@@ -45,5 +45,4 @@
[egg_info]
tag_build =
tag_date = 0
-tag_svn_revision = 0
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/oslo.rootwrap-5.1.1/test-requirements.txt
new/oslo.rootwrap-5.4.0/test-requirements.txt
--- old/oslo.rootwrap-5.1.1/test-requirements.txt 2016-11-04
06:50:51.000000000 +0100
+++ new/oslo.rootwrap-5.4.0/test-requirements.txt 2017-01-18
20:31:15.000000000 +0100
@@ -4,7 +4,6 @@
hacking<0.11,>=0.10.0
-discover # BSD
fixtures>=3.0.0 # Apache-2.0/BSD
python-subunit>=0.0.18 # Apache-2.0/BSD
testrepository>=0.0.18 # Apache-2.0/BSD
@@ -12,8 +11,8 @@
testtools>=1.4.0 # MIT
# this is required for the docs build jobs
-sphinx!=1.3b1,<1.3,>=1.2.1 # BSD
-oslosphinx!=3.4.0,>=2.5.0 # Apache-2.0
+sphinx!=1.3b1,<1.4,>=1.2.1 # BSD
+oslosphinx>=4.7.0 # Apache-2.0
oslotest>=1.10.0 # Apache-2.0
@@ -22,3 +21,5 @@
# rootwrap daemon's client should be verified to run in eventlet
eventlet!=0.18.3,>=0.18.2 # MIT
+
+reno>=1.8.0 # Apache-2.0
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/oslo.rootwrap-5.1.1/tools/tox_install.sh
new/oslo.rootwrap-5.4.0/tools/tox_install.sh
--- old/oslo.rootwrap-5.1.1/tools/tox_install.sh 1970-01-01
01:00:00.000000000 +0100
+++ new/oslo.rootwrap-5.4.0/tools/tox_install.sh 2017-01-18
20:31:15.000000000 +0100
@@ -0,0 +1,30 @@
+#!/usr/bin/env bash
+
+# Client constraint file contains this client version pin that is in conflict
+# with installing the client from source. We should remove the version pin in
+# the constraints file before applying it for from-source installation.
+
+CONSTRAINTS_FILE=$1
+shift 1
+
+set -e
+
+# NOTE(tonyb): Place this in the tox enviroment's log dir so it will get
+# published to logs.openstack.org for easy debugging.
+localfile="$VIRTUAL_ENV/log/upper-constraints.txt"
+
+if [[ $CONSTRAINTS_FILE != http* ]]; then
+ CONSTRAINTS_FILE=file://$CONSTRAINTS_FILE
+fi
+# NOTE(tonyb): need to add curl to bindep.txt if the project supports bindep
+curl $CONSTRAINTS_FILE --insecure --progress-bar --output $localfile
+
+pip install -c$localfile openstack-requirements
+
+# This is the main purpose of the script: Allow local installation of
+# the current repo. It is listed in constraints file and thus any
+# install will be constrained and we need to unconstrain it.
+edit-constraints $localfile -- $CLIENT_NAME
+
+pip install -c$localfile -U $*
+exit $?
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/oslo.rootwrap-5.1.1/tox.ini
new/oslo.rootwrap-5.4.0/tox.ini
--- old/oslo.rootwrap-5.1.1/tox.ini 2016-11-04 06:50:51.000000000 +0100
+++ new/oslo.rootwrap-5.4.0/tox.ini 2017-01-18 20:31:15.000000000 +0100
@@ -1,8 +1,13 @@
[tox]
-minversion = 1.6
+minversion = 2.0
envlist = py35,py34,py27,pep8
[testenv]
+setenv =
+ VIRTUAL_ENV={envdir}
+ BRANCH_NAME=master
+ CLIENT_NAME=oslo.rootwrap
+install_command = {toxinidir}/tools/tox_install.sh
{env:UPPER_CONSTRAINTS_FILE:https://git.openstack.org/cgit/openstack/requirements/plain/upper-constraints.txt}
{opts} {packages}
deps = -r{toxinidir}/test-requirements.txt
# Functional tests with Eventlet involve monkeypatching, so force them to be
# run in a separate process
@@ -17,7 +22,6 @@
[testenv:cover]
deps = {[testenv]deps}
coverage
-setenv = VIRTUAL_ENV={envdir}
commands =
python setup.py testr --coverage
@@ -42,3 +46,6 @@
# of the requirements.txt files
deps = pip_missing_reqs
commands = pip-missing-reqs -d --ignore-module=oslo_rootwrap*
--ignore-module=pkg_resources --ignore-file=oslo_rootwrap/test.py
--ignore-file=oslo_rootwrap/tests/* oslo_rootwrap
+
+[testenv:releasenotes]
+commands = sphinx-build -a -E -W -d releasenotes/build/doctrees -b html
releasenotes/source releasenotes/build/html