]> review.fuel-infra Code Review - openstack-build/neutron-build.git/commitdiff
Update specs to 2013.2.3 version openstack-ci/fuel-4.1.1/2013.2.3
authorDmitry Burmistrov <dburmistrov@mirantis.com>
Fri, 16 May 2014 12:09:48 +0000 (16:09 +0400)
committerDmitry Burmistrov <dburmistrov@mirantis.com>
Fri, 16 May 2014 12:09:48 +0000 (16:09 +0400)
27 files changed:
debian/changelog
debian/patches/MIRA001-Send-DHCP-notifications-regardless-of-agent-status.patch [deleted file]
debian/patches/bump-sqlalchemy-version.patch
debian/patches/disable-ml2-notification-tests.patch
debian/patches/disable-udev-tests.patch
debian/patches/fix-quantum-configuration.patch
debian/patches/remove-jsonrpclib.patch
debian/patches/revert-stable-havana-requirements.patch [new file with mode: 0644]
debian/patches/series
rpm/SOURCES/0001-use-parallel-installed-versions-in-RHEL6.patch
rpm/SOURCES/0002-Remove-dnsmasq-version-warning.patch [new file with mode: 0644]
rpm/SOURCES/MIRA001-Send-DHCP-notifications-regardless-of-agent-status.patch [deleted file]
rpm/SOURCES/neutron-db-check [new file with mode: 0644]
rpm/SOURCES/neutron-dhcp-setup [changed mode: 0644->0755]
rpm/SOURCES/neutron-dist.conf
rpm/SOURCES/neutron-l3-agent.init
rpm/SOURCES/neutron-l3-agent.upstart
rpm/SOURCES/neutron-l3-setup [changed mode: 0644->0755]
rpm/SOURCES/neutron-node-setup [changed mode: 0644->0755]
rpm/SOURCES/neutron-server-setup [changed mode: 0644->0755]
rpm/SOURCES/neutron-server.init
rpm/SOURCES/neutron-server.upstart
rpm/SOURCES/neutron-sudoers
rpm/SOURCES/neutron-vpn-agent.init
rpm/SOURCES/neutron-vpn-agent.upstart
rpm/SOURCES/openstack-neutron.sysconfig [new file with mode: 0644]
rpm/SPECS/openstack-neutron.spec

index 47fa9b98196591d3c1b3b2d42896710d750cffb4..6b6158d8f28a01a623e1b6a8da2617669cf9e377 100644 (file)
@@ -1,8 +1,120 @@
-neutron (1:2013.2-0ubuntu1~cloud0) precise-havana; urgency=low
-
-  * New usptream release candidate for the Ubuntu Cloud Archive. 
-
- -- Chuck Short <zulcss@ubuntu.com>  Wed, 16 Oct 2013 16:33:52 -0400
+neutron (1:2013.2.3-0ubuntu1~cloud0) precise-havana; urgency=medium
+
+  * New upstream release for the Ubuntu Cloud Archive.
+
+ -- Openstack Ubuntu Testing Bot <openstack-testing-bot@ubuntu.com>  Mon, 14 Apr 2014 06:57:54 -0400
+
+neutron (1:2013.2.3-0ubuntu1) saucy-proposed; urgency=medium
+
+  * Resynchronize with stable/havana (8cb9d89) (LP: #1284643):
+    - [8cb9d89] Use a temp dir for CONF.state_path
+    - [566321b] Subnets should be set as lazy='join'
+    - [eb4c045] Qpid, RabbitMQ: advance thru the list of brokers on reconnect
+    - [1faec83] Prevent cross plugging router ports from other tenants
+    - [858ec2e] Fixes Hyper-V port metrics enabling after service restart
+    - [d57ce79] Adds Hyper-V utils methods
+    - [5ccfeae] NSX: Sync do not pass around model object
+    - [7f2c41f] NSX: Fix possible deadlock in sync code
+    - [7871486] Use a more accurate max_delay for reconnects
+    - [8e92741] Adds id in update_floatingip API in PLUMgrid plugin driver
+    - [ab46900] Report proper error message in PLUMgrid Plugin
+    - [ece27c9] Update help message of flag 'enable_isolated_metadata'
+    - [a47fde6] Remove the warning for Scheduling Network
+    - [28ee2ac] vshield task manager: abort tasks in stop() on termination
+    - [c194262] Fix request timeout errors during calls to NSX controller
+    - [2b4cdcd] Fix error while connecting to busy NSX L2 Gateway
+    - [5158744] Tweak version nvp/nsx version validation logic for router operations
+    - [722746f] [ML2] l2-pop MD handle multi create/delete ports
+    - [99339a9] Fix metering iptables driver doesn't read root_helper param
+    - [2e9f5a7] Add support for managing async processes
+    - [5678fb8] fix --excluded of meter-label-rule-create is not working
+    - [c0586c4] Fix a typo in log exception in the metering agent
+  * debian/patches/bump-sqlalchemy-versions.patch: Rediffed 
+  * debian/patches/revert-stable-havana-requirements.patch: Updated not to 
+    bump the version of python-neutronclient.
+
+ -- Chuck Short <zulcss@ubuntu.com>  Mon, 31 Mar 2014 11:51:57 -0400
+
+neutron (1:2013.2.2-0ubuntu1) saucy-proposed; urgency=low
+
+  * Resynchronize with stable/havana (3c9fc6f) (LP: #1284643):
+    - [3f4c282] reduce severity of network notfound trace when looked up by
+      dhcp agent LP: 1251874
+    - [7a4842d] Mellanox Neutron Agent is using keystone port LP: 1245885
+    - [aa2502b] check_nvp_config.py erroneous config complaint LP: 1265353
+    - [94679f1] uncaught portnotfound exception on get_dhcp_port LP: 1252437
+    - [5bbc2f0] devstack-exercises floating_ips broken LP: 1262785
+    - [3738343] [neutron bandwidth metering] When I delete a label, router's
+      tenant_id disappeared. LP: 1249188
+    - [e631e89] dhcp dnsmasq lost port in host config file LP: 1192381
+    - [5f959d7] tenant does not see network that is routable from tenant-
+      visible network until neutron-server is restarted LP: 1254555
+    - [c7596bf] Remove and recreate interface in ovs if already exists
+      LP: 1268762
+    - [711106a] Multiple Neutron operations using a script fails on Brocade
+      Plugin LP: 1223754
+    - [927e8a6] Should RPC consume_in_thread() be more fault tolerant?
+      LP: 1189711
+    - [15a912b] neutron-metadata-agent incorrectly passes keystone token to
+      neutronclient LP: 1274487
+    - [4265436] Have tox install via setup.py develop
+    - [a72ab24] nicira: error occurs when net-gateway-connect with different
+      segmentation-type LP: 1270724
+    - [3c9fc6f] improve version validation for router operations with the
+      nsx/nvp plugin LP: 1274361
+
+ -- Chuck Short <zulcss@ubuntu.com>  Tue, 25 Feb 2014 09:32:04 -0500
+
+neutron (1:2013.2.1-0ubuntu1) saucy-proposed; urgency=low
+
+  * Resynchronize with stable/havana (c783944) (LP: #1262788):
+    - [f45cd4f] Open stable/havana
+    - [c783944] [OSSA 2013-033] Metadata queries from Neutron to Nova are not
+      restricted by tenant (CVE-2013-6419) LP: 1235450
+    - [cec8127] Creates multiple worker processes for API server
+    - [3383241] [messaging] QPID broadcast RPC requests to all servers for a
+      given topic LP: 1257293
+    - [cd3e714] openstack.common.local module is out of date LP: 1254046
+    - [11102ad] Allow using ipv6 address with omiting zero LP: 1240790
+    - [65986c9] NVP connection fails because port is a string LP: 1255519
+    - [2d2646a] Neither vpnaas.filters nor debug.filters are referenced in
+      setup.cfg LP: 1257523
+    - [c93d699] OVS agent doesn't reclaim local VLAN LP: 1252284
+    - [7d74411] IP lib fails when int name has '@' character and VLAN
+      interfaces LP: 1245799
+    - [496e6f0] Lower severity of log trace for DB integrity error
+    - [74b0a9b] internal neutron server error on tempest VolumesActionsTest
+      LP: 1239637
+    - [39c392e] neutron unittest require minimum 4gb memory LP: 1234857
+    - [03216e3] L3 agent can't handle updates that change floating ip id
+      LP: 1209011
+    - [3be1326] nvp_cluster_uuid is no longer used in nvp.ini LP: 1251086
+    - [37f5678] binding_failed because of l2 agent assumed down LP: 1244255
+    - [27ce7b5] traceback is suppressed when deploy.loadapp fails   LP: 1210236
+    - [ce458e0] Linux IP wrapper cannot handle VLAN interfaces LP: 1240125
+    - [b37987e] linuxbridge agent doesn't remove vxlan interface if no
+      interface mappings LP: 1240742
+    - [68b8af0] L2 pop mech driver sends notif. even no related port changes
+      LP: 1241874
+    - [f48a731] L2 pop sends updates for unrelated networks LP: 1240744
+    - [e331eb3] fix nvp version validation for distributed router creation
+      LP: 1243862
+    - [4b3162e] error while creating l2 gateway services in nvp LP: 1244259
+    - [4e94cb3] Nicira plugin: 500 when removing a router port desynchronized
+      from the backend LP: 1240720
+    - [02cd640] Connection to neutron failed: Maximum attempts reached
+      LP: 1211915
+  * debian/patches/revert-stable-havana-requirements.patch: Revert
+    version bumps to dependencies in stable/havana back to what was
+    shipped with Saucy.
+
+ -- Adam Gandelman <adamg@ubuntu.com>  Thu, 12 Dec 2013 13:16:08 -0800
+
+neutron (1:2013.2-0ubuntu1) saucy; urgency=low
+
+  * New upstream release (LP: #1236462).
+
+ -- Chuck Short <zulcss@ubuntu.com>  Thu, 17 Oct 2013 10:52:39 -0400
 
 neutron (1:2013.2~rc3-0ubuntu1) saucy; urgency=low
 
diff --git a/debian/patches/MIRA001-Send-DHCP-notifications-regardless-of-agent-status.patch b/debian/patches/MIRA001-Send-DHCP-notifications-regardless-of-agent-status.patch
deleted file mode 100644 (file)
index ff0e9c8..0000000
+++ /dev/null
@@ -1,201 +0,0 @@
-From 7f1af65475d5c3c1ea5440116ed1f03a186663ff Mon Sep 17 00:00:00 2001
-From: Maru Newby <marun@redhat.com>
-Date: Tue, 10 Dec 2013 16:10:42 +0000
-Subject: [PATCH 1/1] Send DHCP notifications regardless of agent status
-
-The Neutron service, when under load, may not be able to process
-agent heartbeats in a timely fashion.  This can result in
-agents being erroneously considered inactive.  Previously, DHCP
-notifications for which active agents could not be found were
-silently dropped.  This change ensures that notifications for
-a given network are sent to agents even if those agents do not
-appear to be active.
-
-Additionally, if no enabled dhcp agents can be found for a given
-network, an error will be logged.  Raising an exception might be
-preferable, but has such a large testing impact that it will be
-submitted as a separate patch if deemed necessary.
-
-Closes-bug: #1192381
-(cherry picked from commit 522f9f94681de5903422cfde11b93f5c0e71e532)
-
-Change-Id: Id3e639d9cf3d16708fd66a4baebd3fbeeed3dde8
----
- .../api/rpc/agentnotifiers/dhcp_rpc_agent_api.py   | 35 ++++++++--
- neutron/db/agents_db.py                            |  4 ++
- neutron/tests/unit/api/__init__.py                 |  0
- neutron/tests/unit/api/rpc/__init__.py             |  0
- .../tests/unit/api/rpc/agentnotifiers/__init__.py  |  0
- .../rpc/agentnotifiers/test_dhcp_rpc_agent_api.py  | 76 ++++++++++++++++++++++
- 6 files changed, 108 insertions(+), 7 deletions(-)
- create mode 100644 neutron/tests/unit/api/__init__.py
- create mode 100644 neutron/tests/unit/api/rpc/__init__.py
- create mode 100644 neutron/tests/unit/api/rpc/agentnotifiers/__init__.py
- create mode 100644 neutron/tests/unit/api/rpc/agentnotifiers/test_dhcp_rpc_agent_api.py
-
-diff --git a/neutron/api/rpc/agentnotifiers/dhcp_rpc_agent_api.py b/neutron/api/rpc/agentnotifiers/dhcp_rpc_agent_api.py
-index 1086a9e..4ed724d 100644
---- a/neutron/api/rpc/agentnotifiers/dhcp_rpc_agent_api.py
-+++ b/neutron/api/rpc/agentnotifiers/dhcp_rpc_agent_api.py
-@@ -43,12 +43,11 @@ class DhcpAgentNotifyAPI(proxy.RpcProxy):
-         super(DhcpAgentNotifyAPI, self).__init__(
-             topic=topic, default_version=self.BASE_RPC_API_VERSION)
--    def _get_dhcp_agents(self, context, network_id):
-+    def _get_enabled_dhcp_agents(self, context, network_id):
-+        """Return enabled dhcp agents associated with the given network."""
-         plugin = manager.NeutronManager.get_plugin()
--        dhcp_agents = plugin.get_dhcp_agents_hosting_networks(
--            context, [network_id], active=True)
--        return [(dhcp_agent.host, dhcp_agent.topic) for
--                dhcp_agent in dhcp_agents]
-+        agents = plugin.get_dhcp_agents_hosting_networks(context, [network_id])
-+        return [x for x in agents if x.admin_state_up]
-     def _notification_host(self, context, method, payload, host):
-         """Notify the agent on host."""
-@@ -76,11 +75,33 @@ class DhcpAgentNotifyAPI(proxy.RpcProxy):
-                             context, 'network_create_end',
-                             {'network': {'id': network_id}},
-                             agent['host'])
--            for (host, topic) in self._get_dhcp_agents(context, network_id):
-+            agents = self._get_enabled_dhcp_agents(context, network_id)
-+            if not agents:
-+                LOG.error(_("No DHCP agents are associated with network "
-+                            "'%(net_id)s'. Unable to send notification "
-+                            "for '%(method)s' with payload: %(payload)s"),
-+                          {
-+                              'net_id': network_id,
-+                              'method': method,
-+                              'payload': payload,
-+                          })
-+                return
-+            active_agents = [x for x in agents if x.is_active]
-+            if active_agents != agents:
-+                LOG.warning(_("Only %(active)d of %(total)d DHCP agents "
-+                              "associated with network '%(net_id)s' are "
-+                              "marked as active, so notifications may "
-+                              "be sent to inactive agents."),
-+                            {
-+                                'active': len(active_agents),
-+                                'total': len(agents),
-+                                'net_id': network_id,
-+                            })
-+            for agent in agents:
-                 self.cast(
-                     context, self.make_msg(method,
-                                            payload=payload),
--                    topic='%s.%s' % (topic, host))
-+                    topic='%s.%s' % (agent.topic, agent.host))
-         else:
-             # besides the non-agentscheduler plugin,
-             # There is no way to query who is hosting the network
-diff --git a/neutron/db/agents_db.py b/neutron/db/agents_db.py
-index e095a4c..fdcc6d3 100644
---- a/neutron/db/agents_db.py
-+++ b/neutron/db/agents_db.py
-@@ -60,6 +60,10 @@ class Agent(model_base.BASEV2, models_v2.HasId):
-     # configurations: a json dict string, I think 4095 is enough
-     configurations = sa.Column(sa.String(4095), nullable=False)
-+    @property
-+    def is_active(self):
-+        return not AgentDbMixin.is_agent_down(self.heartbeat_timestamp)
-+
- class AgentDbMixin(ext_agent.AgentPluginBase):
-     """Mixin class to add agent extension to db_plugin_base_v2."""
-diff --git a/neutron/tests/unit/api/__init__.py b/neutron/tests/unit/api/__init__.py
-new file mode 100644
-index 0000000..e69de29
-diff --git a/neutron/tests/unit/api/rpc/__init__.py b/neutron/tests/unit/api/rpc/__init__.py
-new file mode 100644
-index 0000000..e69de29
-diff --git a/neutron/tests/unit/api/rpc/agentnotifiers/__init__.py b/neutron/tests/unit/api/rpc/agentnotifiers/__init__.py
-new file mode 100644
-index 0000000..e69de29
-diff --git a/neutron/tests/unit/api/rpc/agentnotifiers/test_dhcp_rpc_agent_api.py b/neutron/tests/unit/api/rpc/agentnotifiers/test_dhcp_rpc_agent_api.py
-new file mode 100644
-index 0000000..b175d34
---- /dev/null
-+++ b/neutron/tests/unit/api/rpc/agentnotifiers/test_dhcp_rpc_agent_api.py
-@@ -0,0 +1,76 @@
-+# Copyright (c) 2013 Red Hat, Inc.
-+#
-+# 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 contextlib
-+
-+import mock
-+
-+from neutron.api.rpc.agentnotifiers import dhcp_rpc_agent_api
-+from neutron.common import utils
-+from neutron import manager
-+from neutron.tests import base
-+
-+
-+class TestDhcpAgentNotifyAPI(base.BaseTestCase):
-+
-+    def setUp(self):
-+        super(TestDhcpAgentNotifyAPI, self).setUp()
-+        self.notify = dhcp_rpc_agent_api.DhcpAgentNotifyAPI()
-+
-+    def test_get_enabled_dhcp_agents_filters_disabled_agents(self):
-+        disabled_agent = mock.Mock()
-+        disabled_agent.admin_state_up = False
-+        enabled_agent = mock.Mock()
-+        with mock.patch.object(manager.NeutronManager,
-+                               'get_plugin') as mock_get_plugin:
-+            mock_get_plugin.return_value = mock_plugin = mock.Mock()
-+            with mock.patch.object(
-+                mock_plugin, 'get_dhcp_agents_hosting_networks'
-+            ) as mock_get_agents:
-+                mock_get_agents.return_value = [disabled_agent, enabled_agent]
-+                result = self.notify._get_enabled_dhcp_agents('ctx', 'net_id')
-+        self.assertEqual(result, [enabled_agent])
-+
-+    def _test_notification(self, agents):
-+        with contextlib.nested(
-+            mock.patch.object(manager.NeutronManager, 'get_plugin'),
-+            mock.patch.object(utils, 'is_extension_supported'),
-+            mock.patch.object(self.notify, '_get_enabled_dhcp_agents')
-+        ) as (m1, m2, mock_get_agents):
-+            mock_get_agents.return_value = agents
-+            self.notify._notification(mock.Mock(), 'foo', {}, 'net_id')
-+
-+    def test_notification_sends_cast_for_enabled_agent(self):
-+        with mock.patch.object(self.notify, 'cast') as mock_cast:
-+            self._test_notification([mock.Mock()])
-+        self.assertEqual(mock_cast.call_count, 1)
-+
-+    def test_notification_logs_error_for_no_enabled_agents(self):
-+        with mock.patch.object(self.notify, 'cast') as mock_cast:
-+            with mock.patch.object(dhcp_rpc_agent_api.LOG,
-+                                   'error') as mock_log:
-+                self._test_notification([])
-+        self.assertEqual(mock_cast.call_count, 0)
-+        self.assertEqual(mock_log.call_count, 1)
-+
-+    def test_notification_logs_warning_for_inactive_agents(self):
-+        agent = mock.Mock()
-+        agent.is_active = False
-+        with mock.patch.object(self.notify, 'cast') as mock_cast:
-+            with mock.patch.object(dhcp_rpc_agent_api.LOG,
-+                                   'warning') as mock_log:
-+                self._test_notification([agent])
-+        self.assertEqual(mock_cast.call_count, 1)
-+        self.assertEqual(mock_log.call_count, 1)
--- 
-1.8.3.1
-
index 52f60e700bd18205c34419d15d0161bca0c21f55..891fdb420867f9cc324010e49c3b39794307ba3c 100644 (file)
@@ -1,9 +1,11 @@
+diff --git a/requirements.txt b/requirements.txt
+index 08cf471..272d7b8 100644
 --- a/requirements.txt
 +++ b/requirements.txt
 @@ -17,7 +17,7 @@ Jinja2
  kombu>=2.4.8
  netaddr
- python-neutronclient>=2.3.0,<3
+ python-neutronclient>=2.3.4,<3
 -SQLAlchemy>=0.7.8,<=0.7.99
 +SQLAlchemy>=0.7.8,<=0.8.99
  WebOb>=1.2.3,<1.3
index 8441d092f939995de6bbca360cc8c5886996d026..0e3419cd64541b4b2cdd01c689294ca979bffd98 100644 (file)
@@ -1,6 +1,8 @@
---- a/neutron/tests/unit/ml2/test_agent_scheduler.py
-+++ b/neutron/tests/unit/ml2/test_agent_scheduler.py
-@@ -19,18 +19,19 @@ from neutron.tests.unit.openvswitch impo
+Index: neutron/neutron/tests/unit/ml2/test_agent_scheduler.py
+===================================================================
+--- neutron.orig/neutron/tests/unit/ml2/test_agent_scheduler.py        2013-12-12 13:15:48.771181697 -0800
++++ neutron/neutron/tests/unit/ml2/test_agent_scheduler.py     2013-12-12 13:15:48.767181697 -0800
+@@ -19,18 +19,19 @@
  
  class Ml2AgentSchedulerTestCase(
      test_agent_scheduler.OvsAgentSchedulerTestCase):
index 3793c77efa14e962c1f19558f65f582fcfff0389..43fbdfcfa22fbe8cd238cc29e128c7a7d57e7228 100644 (file)
@@ -1,6 +1,8 @@
---- a/neutron/tests/unit/linuxbridge/test_lb_neutron_agent.py
-+++ b/neutron/tests/unit/linuxbridge/test_lb_neutron_agent.py
-@@ -45,6 +45,7 @@ class FakeIpDevice(object):
+Index: neutron/neutron/tests/unit/linuxbridge/test_lb_neutron_agent.py
+===================================================================
+--- neutron.orig/neutron/tests/unit/linuxbridge/test_lb_neutron_agent.py       2013-12-18 11:14:01.291233382 -0800
++++ neutron/neutron/tests/unit/linuxbridge/test_lb_neutron_agent.py    2013-12-18 11:14:01.287233382 -0800
+@@ -45,6 +45,7 @@
  class TestLinuxBridge(base.BaseTestCase):
  
      def setUp(self):
@@ -8,7 +10,7 @@
          super(TestLinuxBridge, self).setUp()
          self.addCleanup(cfg.CONF.reset)
          interface_mappings = {'physnet1': 'eth1'}
-@@ -160,6 +161,7 @@ class TestLinuxBridgeAgent(base.BaseTest
+@@ -157,6 +158,7 @@
  
  class TestLinuxBridgeManager(base.BaseTestCase):
      def setUp(self):
@@ -16,7 +18,7 @@
          super(TestLinuxBridgeManager, self).setUp()
          self.interface_mappings = {'physnet1': 'eth1'}
          self.root_helper = cfg.CONF.AGENT.root_helper
-@@ -639,6 +641,7 @@ class TestLinuxBridgeManager(base.BaseTe
+@@ -667,6 +669,7 @@
  
  class TestLinuxBridgeRpcCallbacks(base.BaseTestCase):
      def setUp(self):
index df77dbe6cc269500c0230cea371012d4e0ecb183..89a410e0b4f06bae8d30ec5487c035a37308cc5f 100644 (file)
@@ -1,5 +1,7 @@
---- a/etc/neutron.conf
-+++ b/etc/neutron.conf
+Index: neutron/etc/neutron.conf
+===================================================================
+--- neutron.orig/etc/neutron.conf      2013-12-12 13:15:35.443181576 -0800
++++ neutron/etc/neutron.conf   2013-12-12 13:15:35.439181576 -0800
 @@ -7,7 +7,7 @@
  
  # Where to store Neutron state files.  This directory must be writable by the
@@ -9,7 +11,7 @@
  
  # Where to store lock files
  lock_path = $state_path/lock
-@@ -45,7 +45,7 @@ lock_path = $state_path/lock
+@@ -45,7 +45,7 @@
  # api_extensions_path =
  
  # Neutron plugin provider module
@@ -18,7 +20,7 @@
  
  # Advanced service modules
  # service_plugins =
-@@ -295,7 +295,7 @@ notification_driver = neutron.openstack.
+@@ -299,7 +299,7 @@
  # Use "sudo neutron-rootwrap /etc/neutron/rootwrap.conf" to use the real
  # root filter facility.
  # Change to "sudo" to skip the filtering and just run the comand directly
@@ -27,7 +29,7 @@
  
  # =========== items for agent management extension =============
  # seconds between nodes reporting state to server; should be less than
-@@ -319,7 +319,7 @@ signing_dir = $state_path/keystone-signi
+@@ -323,7 +323,7 @@
  # connection = mysql://root:pass@127.0.0.1:3306/neutron
  # Replace 127.0.0.1 above with the IP address of the database used by the
  # main neutron server. (Leave it as is if the database runs on this host.)
index b47279fa12441a7f9bb9733bcac9cf223208b6e3..f3d645ad85b5f013591554a7ba3eaa240430344a 100644 (file)
@@ -1,6 +1,8 @@
---- a/requirements.txt
-+++ b/requirements.txt
-@@ -12,7 +12,6 @@ greenlet>=0.3.2
+Index: neutron/requirements.txt
+===================================================================
+--- neutron.orig/requirements.txt      2013-12-18 11:14:10.815233295 -0800
++++ neutron/requirements.txt   2013-12-18 11:14:10.807233295 -0800
+@@ -12,7 +12,6 @@
  httplib2
  requests>=1.1
  iso8601>=0.1.8
diff --git a/debian/patches/revert-stable-havana-requirements.patch b/debian/patches/revert-stable-havana-requirements.patch
new file mode 100644 (file)
index 0000000..c1c5e31
--- /dev/null
@@ -0,0 +1,31 @@
+Author: Adam Gandelman <adamg@ubuntu.com>
+Date: Wed Dec 18 10:06:25 PST 2013
+Subject: Reverts stable/havana version bumps to requirements.txt
+
+Reverts various version bumps to dependencies in stable/havana that
+were updated in global requirements to fix gating issues and synced
+across projects.
+
+diff -Naurp neutron-2013.2.3.orig/requirements.txt neutron-2013.2.3/requirements.txt
+--- neutron-2013.2.3.orig/requirements.txt     2014-04-04 14:58:32.555689226 -0400
++++ neutron-2013.2.3/requirements.txt  2014-04-04 15:01:57.823694120 -0400
+@@ -6,16 +6,16 @@ Routes>=1.12.3
+ amqplib>=0.6.1
+ anyjson>=0.3.3
+ argparse
+-Babel>=1.3
++Babel>=0.9.6
+ eventlet>=0.13.0
+ greenlet>=0.3.2
+ httplib2
+ requests>=1.1
+-iso8601>=0.1.8
++iso8601>=0.1.4
+ Jinja2
+ kombu>=2.4.8
+ netaddr
+-python-neutronclient>=2.3.4,<3
++python-neutronclient>=2.3.0,<3
+ SQLAlchemy>=0.7.8,<=0.8.99
+ WebOb>=1.2.3,<1.3
+ python-keystoneclient>=0.3.2
index aa0010058f494fb0797e47e3f43505d007e0f803..374658799655127fc7ddfa857a20ebe1126f7226 100644 (file)
@@ -3,3 +3,4 @@ disable-udev-tests.patch
 bump-sqlalchemy-version.patch
 disable-ml2-notification-tests.patch
 remove-jsonrpclib.patch
+revert-stable-havana-requirements.patch
index 0d2dbd4ae0a635e5cd50d384645c7590d4e1b62f..24e054f26c2eb7753279f63455c092973bff71ee 100644 (file)
@@ -1,4 +1,4 @@
-From 9e51bf76149105791742f84a4a639f9a0f661aad Mon Sep 17 00:00:00 2001
+From 57402408ac606b016e24ae7cfda4d201e9020d05 Mon Sep 17 00:00:00 2001
 From: =?UTF-8?q?P=C3=A1draig=20Brady?= <P@draigBrady.com>
 Date: Fri, 13 Apr 2012 17:24:40 +0100
 Subject: [PATCH] use parallel installed versions in RHEL6
diff --git a/rpm/SOURCES/0002-Remove-dnsmasq-version-warning.patch b/rpm/SOURCES/0002-Remove-dnsmasq-version-warning.patch
new file mode 100644 (file)
index 0000000..e55aad9
--- /dev/null
@@ -0,0 +1,31 @@
+From f43c149e5e589a586a60df5043b3fd7d0154df36 Mon Sep 17 00:00:00 2001
+From: Terry Wilson <twilson@redhat.com>
+Date: Fri, 13 Dec 2013 09:41:43 -0600
+Subject: [PATCH] Remove dnsmasq version warning
+
+---
+ neutron/agent/linux/dhcp.py | 11 +++++++----
+ 1 file changed, 7 insertions(+), 4 deletions(-)
+
+diff --git a/neutron/agent/linux/dhcp.py b/neutron/agent/linux/dhcp.py
+index 7d25bcf..98fd3db 100644
+--- a/neutron/agent/linux/dhcp.py
++++ b/neutron/agent/linux/dhcp.py
+@@ -277,10 +277,13 @@ class Dnsmasq(DhcpLocalProcess):
+             ver = re.findall("\d+.\d+", out)[0]
+             is_valid_version = float(ver) >= cls.MINIMUM_VERSION
+             if not is_valid_version:
+-                LOG.warning(_('FAILED VERSION REQUIREMENT FOR DNSMASQ. '
+-                              'DHCP AGENT MAY NOT RUN CORRECTLY! '
+-                              'Please ensure that its version is %s '
+-                              'or above!'), cls.MINIMUM_VERSION)
++                if float(ver) < 2.48:
++                    LOG.warning(_('FAILED VERSION REQUIREMENT FOR DNSMASQ. '
++                                  'DHCP AGENT MAY NOT RUN CORRECTLY! '
++                                  'Please ensure that its version is %s '
++                                  'or above!'), cls.MINIMUM_VERSION)
++                else:
++                    LOG.info(_('dnsmasq version: %s'), ver)
+         except (OSError, RuntimeError, IndexError, ValueError):
+             LOG.warning(_('Unable to determine dnsmasq version. '
+                           'Please ensure that its version is %s '
diff --git a/rpm/SOURCES/MIRA001-Send-DHCP-notifications-regardless-of-agent-status.patch b/rpm/SOURCES/MIRA001-Send-DHCP-notifications-regardless-of-agent-status.patch
deleted file mode 100644 (file)
index ff0e9c8..0000000
+++ /dev/null
@@ -1,201 +0,0 @@
-From 7f1af65475d5c3c1ea5440116ed1f03a186663ff Mon Sep 17 00:00:00 2001
-From: Maru Newby <marun@redhat.com>
-Date: Tue, 10 Dec 2013 16:10:42 +0000
-Subject: [PATCH 1/1] Send DHCP notifications regardless of agent status
-
-The Neutron service, when under load, may not be able to process
-agent heartbeats in a timely fashion.  This can result in
-agents being erroneously considered inactive.  Previously, DHCP
-notifications for which active agents could not be found were
-silently dropped.  This change ensures that notifications for
-a given network are sent to agents even if those agents do not
-appear to be active.
-
-Additionally, if no enabled dhcp agents can be found for a given
-network, an error will be logged.  Raising an exception might be
-preferable, but has such a large testing impact that it will be
-submitted as a separate patch if deemed necessary.
-
-Closes-bug: #1192381
-(cherry picked from commit 522f9f94681de5903422cfde11b93f5c0e71e532)
-
-Change-Id: Id3e639d9cf3d16708fd66a4baebd3fbeeed3dde8
----
- .../api/rpc/agentnotifiers/dhcp_rpc_agent_api.py   | 35 ++++++++--
- neutron/db/agents_db.py                            |  4 ++
- neutron/tests/unit/api/__init__.py                 |  0
- neutron/tests/unit/api/rpc/__init__.py             |  0
- .../tests/unit/api/rpc/agentnotifiers/__init__.py  |  0
- .../rpc/agentnotifiers/test_dhcp_rpc_agent_api.py  | 76 ++++++++++++++++++++++
- 6 files changed, 108 insertions(+), 7 deletions(-)
- create mode 100644 neutron/tests/unit/api/__init__.py
- create mode 100644 neutron/tests/unit/api/rpc/__init__.py
- create mode 100644 neutron/tests/unit/api/rpc/agentnotifiers/__init__.py
- create mode 100644 neutron/tests/unit/api/rpc/agentnotifiers/test_dhcp_rpc_agent_api.py
-
-diff --git a/neutron/api/rpc/agentnotifiers/dhcp_rpc_agent_api.py b/neutron/api/rpc/agentnotifiers/dhcp_rpc_agent_api.py
-index 1086a9e..4ed724d 100644
---- a/neutron/api/rpc/agentnotifiers/dhcp_rpc_agent_api.py
-+++ b/neutron/api/rpc/agentnotifiers/dhcp_rpc_agent_api.py
-@@ -43,12 +43,11 @@ class DhcpAgentNotifyAPI(proxy.RpcProxy):
-         super(DhcpAgentNotifyAPI, self).__init__(
-             topic=topic, default_version=self.BASE_RPC_API_VERSION)
--    def _get_dhcp_agents(self, context, network_id):
-+    def _get_enabled_dhcp_agents(self, context, network_id):
-+        """Return enabled dhcp agents associated with the given network."""
-         plugin = manager.NeutronManager.get_plugin()
--        dhcp_agents = plugin.get_dhcp_agents_hosting_networks(
--            context, [network_id], active=True)
--        return [(dhcp_agent.host, dhcp_agent.topic) for
--                dhcp_agent in dhcp_agents]
-+        agents = plugin.get_dhcp_agents_hosting_networks(context, [network_id])
-+        return [x for x in agents if x.admin_state_up]
-     def _notification_host(self, context, method, payload, host):
-         """Notify the agent on host."""
-@@ -76,11 +75,33 @@ class DhcpAgentNotifyAPI(proxy.RpcProxy):
-                             context, 'network_create_end',
-                             {'network': {'id': network_id}},
-                             agent['host'])
--            for (host, topic) in self._get_dhcp_agents(context, network_id):
-+            agents = self._get_enabled_dhcp_agents(context, network_id)
-+            if not agents:
-+                LOG.error(_("No DHCP agents are associated with network "
-+                            "'%(net_id)s'. Unable to send notification "
-+                            "for '%(method)s' with payload: %(payload)s"),
-+                          {
-+                              'net_id': network_id,
-+                              'method': method,
-+                              'payload': payload,
-+                          })
-+                return
-+            active_agents = [x for x in agents if x.is_active]
-+            if active_agents != agents:
-+                LOG.warning(_("Only %(active)d of %(total)d DHCP agents "
-+                              "associated with network '%(net_id)s' are "
-+                              "marked as active, so notifications may "
-+                              "be sent to inactive agents."),
-+                            {
-+                                'active': len(active_agents),
-+                                'total': len(agents),
-+                                'net_id': network_id,
-+                            })
-+            for agent in agents:
-                 self.cast(
-                     context, self.make_msg(method,
-                                            payload=payload),
--                    topic='%s.%s' % (topic, host))
-+                    topic='%s.%s' % (agent.topic, agent.host))
-         else:
-             # besides the non-agentscheduler plugin,
-             # There is no way to query who is hosting the network
-diff --git a/neutron/db/agents_db.py b/neutron/db/agents_db.py
-index e095a4c..fdcc6d3 100644
---- a/neutron/db/agents_db.py
-+++ b/neutron/db/agents_db.py
-@@ -60,6 +60,10 @@ class Agent(model_base.BASEV2, models_v2.HasId):
-     # configurations: a json dict string, I think 4095 is enough
-     configurations = sa.Column(sa.String(4095), nullable=False)
-+    @property
-+    def is_active(self):
-+        return not AgentDbMixin.is_agent_down(self.heartbeat_timestamp)
-+
- class AgentDbMixin(ext_agent.AgentPluginBase):
-     """Mixin class to add agent extension to db_plugin_base_v2."""
-diff --git a/neutron/tests/unit/api/__init__.py b/neutron/tests/unit/api/__init__.py
-new file mode 100644
-index 0000000..e69de29
-diff --git a/neutron/tests/unit/api/rpc/__init__.py b/neutron/tests/unit/api/rpc/__init__.py
-new file mode 100644
-index 0000000..e69de29
-diff --git a/neutron/tests/unit/api/rpc/agentnotifiers/__init__.py b/neutron/tests/unit/api/rpc/agentnotifiers/__init__.py
-new file mode 100644
-index 0000000..e69de29
-diff --git a/neutron/tests/unit/api/rpc/agentnotifiers/test_dhcp_rpc_agent_api.py b/neutron/tests/unit/api/rpc/agentnotifiers/test_dhcp_rpc_agent_api.py
-new file mode 100644
-index 0000000..b175d34
---- /dev/null
-+++ b/neutron/tests/unit/api/rpc/agentnotifiers/test_dhcp_rpc_agent_api.py
-@@ -0,0 +1,76 @@
-+# Copyright (c) 2013 Red Hat, Inc.
-+#
-+# 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 contextlib
-+
-+import mock
-+
-+from neutron.api.rpc.agentnotifiers import dhcp_rpc_agent_api
-+from neutron.common import utils
-+from neutron import manager
-+from neutron.tests import base
-+
-+
-+class TestDhcpAgentNotifyAPI(base.BaseTestCase):
-+
-+    def setUp(self):
-+        super(TestDhcpAgentNotifyAPI, self).setUp()
-+        self.notify = dhcp_rpc_agent_api.DhcpAgentNotifyAPI()
-+
-+    def test_get_enabled_dhcp_agents_filters_disabled_agents(self):
-+        disabled_agent = mock.Mock()
-+        disabled_agent.admin_state_up = False
-+        enabled_agent = mock.Mock()
-+        with mock.patch.object(manager.NeutronManager,
-+                               'get_plugin') as mock_get_plugin:
-+            mock_get_plugin.return_value = mock_plugin = mock.Mock()
-+            with mock.patch.object(
-+                mock_plugin, 'get_dhcp_agents_hosting_networks'
-+            ) as mock_get_agents:
-+                mock_get_agents.return_value = [disabled_agent, enabled_agent]
-+                result = self.notify._get_enabled_dhcp_agents('ctx', 'net_id')
-+        self.assertEqual(result, [enabled_agent])
-+
-+    def _test_notification(self, agents):
-+        with contextlib.nested(
-+            mock.patch.object(manager.NeutronManager, 'get_plugin'),
-+            mock.patch.object(utils, 'is_extension_supported'),
-+            mock.patch.object(self.notify, '_get_enabled_dhcp_agents')
-+        ) as (m1, m2, mock_get_agents):
-+            mock_get_agents.return_value = agents
-+            self.notify._notification(mock.Mock(), 'foo', {}, 'net_id')
-+
-+    def test_notification_sends_cast_for_enabled_agent(self):
-+        with mock.patch.object(self.notify, 'cast') as mock_cast:
-+            self._test_notification([mock.Mock()])
-+        self.assertEqual(mock_cast.call_count, 1)
-+
-+    def test_notification_logs_error_for_no_enabled_agents(self):
-+        with mock.patch.object(self.notify, 'cast') as mock_cast:
-+            with mock.patch.object(dhcp_rpc_agent_api.LOG,
-+                                   'error') as mock_log:
-+                self._test_notification([])
-+        self.assertEqual(mock_cast.call_count, 0)
-+        self.assertEqual(mock_log.call_count, 1)
-+
-+    def test_notification_logs_warning_for_inactive_agents(self):
-+        agent = mock.Mock()
-+        agent.is_active = False
-+        with mock.patch.object(self.notify, 'cast') as mock_cast:
-+            with mock.patch.object(dhcp_rpc_agent_api.LOG,
-+                                   'warning') as mock_log:
-+                self._test_notification([agent])
-+        self.assertEqual(mock_cast.call_count, 1)
-+        self.assertEqual(mock_log.call_count, 1)
--- 
-1.8.3.1
-
diff --git a/rpm/SOURCES/neutron-db-check b/rpm/SOURCES/neutron-db-check
new file mode 100644 (file)
index 0000000..19b8707
--- /dev/null
@@ -0,0 +1,41 @@
+#!/bin/sh
+#
+# This script checks to make sure the database used by Neutron is at the
+# correct version.  If the database is not at $NEUTRON_EXPECTED_DB_VERSION, as
+# set in /etc/sysconfig/openstack-neutron, log an error and exit with an error
+# code.
+#
+# This script is meant to be called from an init script or via ExecPreStart in
+# a systemd unit.
+
+RETCODE=0
+
+[ -f /etc/sysconfig/openstack-neutron ] && . /etc/sysconfig/openstack-neutron
+
+[ "$NEUTRON_EXPECTED_DB_VERSION" ] || exit 0
+
+neutron_db_version=$(
+        neutron-db-manage \
+            --config-file /etc/neutron/neutron.conf \
+            --config-file /etc/neutron/plugin.ini current 2>/dev/null |
+        awk '{print $NF}')
+
+if [ "x$neutron_db_version" = "x" ]; then
+    logger -s -p daemon.error -t neutron-db-check \
+        "ERROR: unable to find version information for the neutron database."\
+        "Check your logs for additional information."
+    RETCODE=1
+elif [ "x$neutron_db_version" = "xNone" ]; then
+    logger -s -p daemon.error -t neutron-db-check \
+        "ERROR: neutron database does not have version information."\
+        "You must run the \"neutron-db-manage stamp\" command before"\
+        "starting neutron services."
+    RETCODE=1
+elif [ "x$neutron_db_version" != "x$NEUTRON_EXPECTED_DB_VERSION" ]; then
+    logger -s -p daemon.error -t neutron-db-check \
+        "ERROR: you must upgrade the neutron database before starting"\
+        "neutron services."
+    RETCODE=1
+fi
+
+exit $RETCODE
old mode 100644 (file)
new mode 100755 (executable)
index a4a55c8fe64c17042e7c2f22a7f02af49142691b..091f7ebd831a2b426aa554ee49a311bd20c08aa2 100644 (file)
@@ -18,7 +18,6 @@ auth_protocol = http
 admin_tenant_name = %SERVICE_TENANT_NAME%
 admin_user = %SERVICE_USER%
 admin_password = %SERVICE_PASSWORD%
-signing_dir = $state_path/keystone-signing
 
 [database]
 max_pool_size = 10
index d37eea61cba1de1145be2c41e35af1c67b75f892..a98aff30ffb60a3963eda6d9bd3d16e42a55b2e8 100644 (file)
@@ -15,6 +15,7 @@ exec="/usr/bin/$prog"
 configs=(
     "/etc/$proj/$proj.conf" \
     "/etc/$proj/l3_agent.ini" \
+    "/etc/$proj/fwaas_driver.ini" \
 )
 pidfile="/var/run/$proj/$prog.pid"
 logfile="/var/log/$proj/l3-agent.log"
index 35e1d3261f05049fa0ca60aa913ed784b2434097..81b4d4715fbeeddc39d78a0f6d3ba66923a9338b 100644 (file)
@@ -5,4 +5,4 @@ stop on runlevel [S016]
 
 respawn
 
-exec su -s /bin/sh -c "exec /usr/bin/neutron-l3-agent --log-file /var/log/neutron/l3-agent.log --config-file /usr/share/neutron/neutron-dist.conf --config-file /etc/neutron/neutron.conf --config-file /etc/neutron/l3_agent.ini" neutron
+exec su -s /bin/sh -c "exec /usr/bin/neutron-l3-agent --log-file /var/log/neutron/l3-agent.log --config-file /usr/share/neutron/neutron-dist.conf --config-file /etc/neutron/neutron.conf --config-file /etc/neutron/l3_agent.ini" --config-file /etc/neutron/fwaas_driver.ini neutron
old mode 100644 (file)
new mode 100755 (executable)
old mode 100644 (file)
new mode 100755 (executable)
old mode 100644 (file)
new mode 100755 (executable)
index d187823..268c64c
@@ -167,7 +167,7 @@ case "${NEUTRON_PLUGIN}" in
 ;;
 
 "openvswitch")
-       if ! rpm -q openvswitch > /dev/null 
+       if ! rpm -q --whatprovides openvswitch > /dev/null 
        then
                echo "Please install openvswitch"
                exit 0
@@ -199,7 +199,7 @@ echo "Plugin: ${NEUTRON_PLUGIN} => Database: ${DB_NAME}"
 # Make sure MySQL is installed.
 
 NEW_MYSQL_INSTALL=0
-if ! rpm -q mysql-server > /dev/null
+if ! rpm -q --whatprovides mysql-server > /dev/null
 then
        if [ -z "${ASSUME_YES}" ] ; then
                printf "mysql-server is not installed.  Would you like to install it now? (y/n): "
index ede214ffccb280d27f6db789d0f94ab6a6d6c139..1a61a7955b18cecabdb40cca1443ffa1764ccc99 100644 (file)
@@ -11,6 +11,7 @@
 
 prog=neutron
 exec="/usr/bin/$prog-server"
+dbcheck="/usr/bin/$prog-db-check"
 configs=(
     "/etc/$prog/$prog.conf" \
     "/etc/$prog/plugin.ini" \
@@ -24,6 +25,10 @@ lockfile=/var/lock/subsys/$prog-server
 
 start() {
     [ -x $exec ] || exit 5
+
+    # Make sure database is at the currect version.
+    [ -x $dbcheck ] && $dbcheck || exit 6
+
     for config in ${configs[@]}; do
         [ -f $config ] || exit 6
     done
index ec14e41a0a6ebb20c9b2b7c296b2eeca8812ec87..4cb1b79d898b26955b00c527420fb603ebcea92c 100644 (file)
@@ -1,5 +1,11 @@
 description "OpenStack Neutron Server"
 
+pre-start
+    if ! /usr/bin/neutron-db-check; then
+        stop; exit 0
+    fi
+end script
+
 start on stopped rc RUNLEVEL=[2345]
 stop on runlevel [S016]
 
index 3786adab43f4b73d003b8c3c449d1c87ca18a8c6..b5448c89527d038b40e21b917db9f5b95bf17cfa 100644 (file)
@@ -1,3 +1,3 @@
 Defaults:neutron !requiretty
 
-neutron ALL = (root) NOPASSWD: SETENV: /usr/bin/neutron-rootwrap
+neutron ALL = (root) NOPASSWD: /usr/bin/neutron-rootwrap /etc/neutron/rootwrap.conf *
index 9c4d74b0ddd8eca30f91e52ed0278a3c84ddc878..7859f25b266faa0f9da655910c38f4c5cbd1417e 100644 (file)
@@ -15,6 +15,7 @@ exec="/usr/bin/$prog"
 configs=(
     "/etc/$proj/$proj.conf" \
     "/etc/$proj/vpn_agent.ini" \
+    "/etc/$proj/l3_agent.ini" \
 )
 pidfile="/var/run/$proj/$prog.pid"
 
index 83c7a2d3d92b48141c365576e0d71e8feba3e634..94830d7db239c49b99587e39eda79d7bc9739f78 100644 (file)
@@ -5,4 +5,4 @@ stop on runlevel [S016]
 
 respawn
 
-exec su -s /bin/sh -c "exec /usr/bin/neutron-vpn-agent --log-file /var/log/neutron/vpn-agent.log --config-file /usr/share/neutron/neutron-dist.conf --config-file /etc/neutron/neutron.conf --config-file /etc/neutron/vpn_agent.ini" neutron
+exec su -s /bin/sh -c "exec /usr/bin/neutron-vpn-agent --log-file /var/log/neutron/vpn-agent.log --config-file /usr/share/neutron/neutron-dist.conf --config-file /etc/neutron/neutron.conf --config-file /etc/neutron/vpn_agent.ini --config-file /etc/neutron/l3_agent.ini" neutron
diff --git a/rpm/SOURCES/openstack-neutron.sysconfig b/rpm/SOURCES/openstack-neutron.sysconfig
new file mode 100644 (file)
index 0000000..8394337
--- /dev/null
@@ -0,0 +1 @@
+NEUTRON_EXPECTED_DB_VERSION=havana
index 82f8097582849f5c2c6951f8af1d8be07b390ad4..20660986b8dffb4b0e8c479955998b83e61fa75e 100644 (file)
@@ -1,11 +1,8 @@
-#
-# This is 2013.2 release
-#
 %global release_name havana
 
 Name:          openstack-neutron
-Version:       2013.2
-Release:       11%{?dist}
+Version:       2013.2.3
+Release:       2%{?dist}
 Provides:      openstack-quantum = %{version}-%{release}
 Obsoletes:     openstack-quantum < 2013.2-0.3.b3
 
@@ -50,12 +47,15 @@ Source41:   neutron-vpn-agent.upstart
 Source32:      neutron-metering-agent.init
 Source42:      neutron-metering-agent.upstart
 
+Source50:   neutron-db-check
+Source51:   openstack-neutron.sysconfig
+
 Source90:      neutron-dist.conf
 #
-# patches_base=2013.2+1
+# patches_base=2013.2.3+1
 #
 Patch0001: 0001-use-parallel-installed-versions-in-RHEL6.patch
-Patch0002: MIRA001-Send-DHCP-notifications-regardless-of-agent-status.patch
+Patch0002: 0002-Remove-dnsmasq-version-warning.patch
 
 BuildArch:     noarch
 
@@ -68,7 +68,7 @@ BuildRequires:        python-sqlalchemy0.7
 BuildRequires: python-webob1.2
 BuildRequires: python-paste-deploy1.5
 BuildRequires: python-routes1.12
-BuildRequires:  python-jinja2-26
+BuildRequires: python-jinja2-26
 BuildRequires: dos2unix
 BuildRequires: python-pbr
 BuildRequires: python-d2to1
@@ -128,7 +128,7 @@ Requires:   python-webob1.2
 Requires:      python-netaddr
 Requires:      python-oslo-config >= 1:1.2.0
 Requires:      python-qpid
-Requires:      python-neutronclient
+Requires:      python-neutronclient >= 2.3.0
 Requires:      sudo
 
 %description -n python-neutron
@@ -422,10 +422,16 @@ IPSec.
 %setup -q -n neutron-%{version}
 
 %patch0001 -p1
-#%patch0002 -p1
+%patch0002 -p1
 
 find neutron -name \*.py -exec sed -i '/\/usr\/bin\/env python/{d;q}' {} +
 
+# Ensure SOURCES.txt ends in a newline and if any patches have added files, append them to SOURCES.txt
+[ -n "$(tail -c 1 < neutron.egg-info/SOURCES.txt)" ] && echo >> neutron.egg-info/SOURCES.txt
+if ls %{_sourcedir}/*.patch >/dev/null 2>&1; then
+awk '/^new file/ {split(a,files," ");print substr(files[3],3)} {a = $0}' %{_sourcedir}/*.patch >> neutron.egg-info/SOURCES.txt
+fi
+
 chmod 644 neutron/plugins/cisco/README
 
 # Let's handle dependencies ourseleves
@@ -522,6 +528,12 @@ install -p -m 644 %{SOURCE42} %{buildroot}%{_datadir}/neutron/
 # Install dist conf
 install -p -D -m 640 %{SOURCE90} %{buildroot}%{_datadir}/neutron/neutron-dist.conf
 
+# Install neutron-db-check
+install -m 755 %{SOURCE50} %{buildroot}%{_bindir}/neutron-db-check
+install -d -m 755 %{buildroot}%{_sysconfdir}/sysconfig
+install -m 644 %{SOURCE51} %{buildroot}%{_sysconfdir}/sysconfig/openstack-neutron
+
+
 # Install version info file
 cat > %{buildroot}%{_sysconfdir}/neutron/release <<EOF
 [Neutron]
@@ -577,6 +589,7 @@ if rpm --quiet -q openstack-quantum; then
       sed -re 's/[0-6]:off//g
                s/([0-6]):on\s*/\1/g
                s/quantum/neutron/g
+               s/^([a-z0-9-]+)\s+$/chkconfig \1 off/
                s/^([a-z0-9-]+)\s+([0-6]+)/chkconfig --levels \2 \1 on/' > %{_localstatedir}/lib/rpm-state/UPGRADE_FROM_QUANTUM
 fi
 
@@ -599,8 +612,10 @@ if [ -e %{_localstatedir}/lib/rpm-state/UPGRADE_FROM_QUANTUM ];then
         ln -s ${plugin_ini//quantum/neutron} %{_sysconfdir}/neutron/plugin.ini
     fi
 
-    # Stamp the existing db as grizzly to avoid neutron-server breaking db migration
-    neutron-db-manage --config-file %{_sysconfdir}/neutron/neutron.conf --config-file %{_sysconfdir}/neutron/plugin.ini stamp grizzly || :
+    # Stamp the existing db as grizzly to avoid neutron-server breaking db
+    # migration after upgrade
+    neutron-db-manage --config-file %{_sysconfdir}/neutron/neutron.conf \
+        --config-file %{_sysconfdir}/neutron/plugin.ini stamp grizzly || :
 
     # Restore the enablement of the various neutron services
     source %{_localstatedir}/lib/rpm-state/UPGRADE_FROM_QUANTUM
@@ -783,6 +798,8 @@ fi
 %{_bindir}/neutron-server-setup
 %{_bindir}/neutron-usage-audit
 
+%{_bindir}/neutron-db-check
+
 %{_initrddir}/neutron-server
 %{_initrddir}/neutron-dhcp-agent
 %{_initrddir}/neutron-l3-agent
@@ -807,6 +824,7 @@ fi
 %config(noreplace) %attr(0640, root, neutron) %{_sysconfdir}/neutron/policy.json
 %config(noreplace) %attr(0640, root, neutron) %{_sysconfdir}/neutron/neutron.conf
 %config(noreplace) %{_sysconfdir}/neutron/rootwrap.conf
+%config %{_sysconfdir}/sysconfig/openstack-neutron
 %dir %{_sysconfdir}/neutron/plugins
 %config(noreplace) %{_sysconfdir}/logrotate.d/*
 %config(noreplace) %{_sysconfdir}/sudoers.d/neutron
@@ -1004,6 +1022,36 @@ fi
 
 
 %changelog
+* Thu Apr 10 2014 Ihar Hrachyshka <ihrachys@redhat.com> 2013.2.3-2
+- Remove signing_dir from neutron-dist.conf, bz#1050842
+
+* Thu Apr 10 2014 Miguel Angel Ajo <mangelajo@redhat.com> 2013.2.3-1
+- Update to upstream 2013.2.3
+
+* Tue Mar 11 2014 Jakub Libosvar <jlibosva@redhat.com> - 2013.2.2-3
+- Check whether db needs to be upgraded (rhbz#1031801 , rhbz#1045034)
+
+* Wed Feb 19 2014 Miguel Angel Ajo <majopela@redhat.com> - 2013.2.2-2
+- Update to Havana stable release 2013.2.2
+
+* Tue Jan 07 2014 Terry Wilson <twilson@redhat.com> - 2013-2.1-3
+- Add python-psutil requirement for openvswitch agent, bz#1049235
+
+* Fri Dec 27 2013 Terry Wilson <twilson@redhat.com> - 2013.2.1-2
+- Add rootwrap.conf limitation to sudoers.d/neutron, bz#1039528
+
+* Wed Dec 18 2013 Pádraig Brady <pbrady@redhat.com> - 2013.2.1-1
+- Update to Havana stable release 2013.2.1
+
+* Fri Dec 13 2013 Terry Wilson <twilson@redhat.com> - 2013.2-13
+- QPID fixes from oslo-incubator, bz#1038711, bz#1038717
+- Remove dnsmasq version warning, bz#997961
+- Ensure that disabled services are properly handled on upgrade, bz#1040704
+
+* Mon Dec 09 2013 Terry Wilson <twilson@redhat.com> - 2013.2-12
+- Add vpnaas/fwaas configs to init scripts, bz#1032450
+- Pass neutron rootwrap.conf in sudoers.d/neutron, bz#984097
+
 * Wed Dec 04 2013 Terry Wilson <twilson@redhat.com> - 2013.2-11
 - Add missing debug and vpnaas rootwrap filters, bz#1034207