From: Dmitry Burmistrov Date: Fri, 16 May 2014 12:09:48 +0000 (+0400) Subject: Update specs to 2013.2.3 version X-Git-Url: https://review.fuel-infra.org/gitweb?a=commitdiff_plain;h=f63dceee386daf1192314c90a2f6653c86c8e4b5;p=openstack-build%2Fneutron-build.git Update specs to 2013.2.3 version --- diff --git a/debian/changelog b/debian/changelog index 47fa9b981..6b6158d8f 100644 --- a/debian/changelog +++ b/debian/changelog @@ -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 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 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 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 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 Thu, 12 Dec 2013 13:16:08 -0800 + +neutron (1:2013.2-0ubuntu1) saucy; urgency=low + + * New upstream release (LP: #1236462). + + -- Chuck Short 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 index ff0e9c8c2..000000000 --- a/debian/patches/MIRA001-Send-DHCP-notifications-regardless-of-agent-status.patch +++ /dev/null @@ -1,201 +0,0 @@ -From 7f1af65475d5c3c1ea5440116ed1f03a186663ff Mon Sep 17 00:00:00 2001 -From: Maru Newby -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/debian/patches/bump-sqlalchemy-version.patch b/debian/patches/bump-sqlalchemy-version.patch index 52f60e700..891fdb420 100644 --- a/debian/patches/bump-sqlalchemy-version.patch +++ b/debian/patches/bump-sqlalchemy-version.patch @@ -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 diff --git a/debian/patches/disable-ml2-notification-tests.patch b/debian/patches/disable-ml2-notification-tests.patch index 8441d092f..0e3419cd6 100644 --- a/debian/patches/disable-ml2-notification-tests.patch +++ b/debian/patches/disable-ml2-notification-tests.patch @@ -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): diff --git a/debian/patches/disable-udev-tests.patch b/debian/patches/disable-udev-tests.patch index 3793c77ef..43fbdfcfa 100644 --- a/debian/patches/disable-udev-tests.patch +++ b/debian/patches/disable-udev-tests.patch @@ -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): diff --git a/debian/patches/fix-quantum-configuration.patch b/debian/patches/fix-quantum-configuration.patch index df77dbe6c..89a410e0b 100644 --- a/debian/patches/fix-quantum-configuration.patch +++ b/debian/patches/fix-quantum-configuration.patch @@ -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.) diff --git a/debian/patches/remove-jsonrpclib.patch b/debian/patches/remove-jsonrpclib.patch index b47279fa1..f3d645ad8 100644 --- a/debian/patches/remove-jsonrpclib.patch +++ b/debian/patches/remove-jsonrpclib.patch @@ -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 index 000000000..c1c5e3188 --- /dev/null +++ b/debian/patches/revert-stable-havana-requirements.patch @@ -0,0 +1,31 @@ +Author: Adam Gandelman +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 diff --git a/debian/patches/series b/debian/patches/series index aa0010058..374658799 100644 --- a/debian/patches/series +++ b/debian/patches/series @@ -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 diff --git a/rpm/SOURCES/0001-use-parallel-installed-versions-in-RHEL6.patch b/rpm/SOURCES/0001-use-parallel-installed-versions-in-RHEL6.patch index 0d2dbd4ae..24e054f26 100644 --- a/rpm/SOURCES/0001-use-parallel-installed-versions-in-RHEL6.patch +++ b/rpm/SOURCES/0001-use-parallel-installed-versions-in-RHEL6.patch @@ -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?= 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 index 000000000..e55aad928 --- /dev/null +++ b/rpm/SOURCES/0002-Remove-dnsmasq-version-warning.patch @@ -0,0 +1,31 @@ +From f43c149e5e589a586a60df5043b3fd7d0154df36 Mon Sep 17 00:00:00 2001 +From: Terry Wilson +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 index ff0e9c8c2..000000000 --- a/rpm/SOURCES/MIRA001-Send-DHCP-notifications-regardless-of-agent-status.patch +++ /dev/null @@ -1,201 +0,0 @@ -From 7f1af65475d5c3c1ea5440116ed1f03a186663ff Mon Sep 17 00:00:00 2001 -From: Maru Newby -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 index 000000000..19b870775 --- /dev/null +++ b/rpm/SOURCES/neutron-db-check @@ -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 diff --git a/rpm/SOURCES/neutron-dhcp-setup b/rpm/SOURCES/neutron-dhcp-setup old mode 100644 new mode 100755 diff --git a/rpm/SOURCES/neutron-dist.conf b/rpm/SOURCES/neutron-dist.conf index a4a55c8fe..091f7ebd8 100644 --- a/rpm/SOURCES/neutron-dist.conf +++ b/rpm/SOURCES/neutron-dist.conf @@ -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 diff --git a/rpm/SOURCES/neutron-l3-agent.init b/rpm/SOURCES/neutron-l3-agent.init index d37eea61c..a98aff30f 100644 --- a/rpm/SOURCES/neutron-l3-agent.init +++ b/rpm/SOURCES/neutron-l3-agent.init @@ -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" diff --git a/rpm/SOURCES/neutron-l3-agent.upstart b/rpm/SOURCES/neutron-l3-agent.upstart index 35e1d3261..81b4d4715 100644 --- a/rpm/SOURCES/neutron-l3-agent.upstart +++ b/rpm/SOURCES/neutron-l3-agent.upstart @@ -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 diff --git a/rpm/SOURCES/neutron-l3-setup b/rpm/SOURCES/neutron-l3-setup old mode 100644 new mode 100755 diff --git a/rpm/SOURCES/neutron-node-setup b/rpm/SOURCES/neutron-node-setup old mode 100644 new mode 100755 diff --git a/rpm/SOURCES/neutron-server-setup b/rpm/SOURCES/neutron-server-setup old mode 100644 new mode 100755 index d18782359..268c64c11 --- a/rpm/SOURCES/neutron-server-setup +++ b/rpm/SOURCES/neutron-server-setup @@ -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): " diff --git a/rpm/SOURCES/neutron-server.init b/rpm/SOURCES/neutron-server.init index ede214ffc..1a61a7955 100644 --- a/rpm/SOURCES/neutron-server.init +++ b/rpm/SOURCES/neutron-server.init @@ -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 diff --git a/rpm/SOURCES/neutron-server.upstart b/rpm/SOURCES/neutron-server.upstart index ec14e41a0..4cb1b79d8 100644 --- a/rpm/SOURCES/neutron-server.upstart +++ b/rpm/SOURCES/neutron-server.upstart @@ -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] diff --git a/rpm/SOURCES/neutron-sudoers b/rpm/SOURCES/neutron-sudoers index 3786adab4..b5448c895 100644 --- a/rpm/SOURCES/neutron-sudoers +++ b/rpm/SOURCES/neutron-sudoers @@ -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 * diff --git a/rpm/SOURCES/neutron-vpn-agent.init b/rpm/SOURCES/neutron-vpn-agent.init index 9c4d74b0d..7859f25b2 100644 --- a/rpm/SOURCES/neutron-vpn-agent.init +++ b/rpm/SOURCES/neutron-vpn-agent.init @@ -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" diff --git a/rpm/SOURCES/neutron-vpn-agent.upstart b/rpm/SOURCES/neutron-vpn-agent.upstart index 83c7a2d3d..94830d7db 100644 --- a/rpm/SOURCES/neutron-vpn-agent.upstart +++ b/rpm/SOURCES/neutron-vpn-agent.upstart @@ -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 index 000000000..8394337a4 --- /dev/null +++ b/rpm/SOURCES/openstack-neutron.sysconfig @@ -0,0 +1 @@ +NEUTRON_EXPECTED_DB_VERSION=havana diff --git a/rpm/SPECS/openstack-neutron.spec b/rpm/SPECS/openstack-neutron.spec index 82f809758..20660986b 100644 --- a/rpm/SPECS/openstack-neutron.spec +++ b/rpm/SPECS/openstack-neutron.spec @@ -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 < %{_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 2013.2.3-2 +- Remove signing_dir from neutron-dist.conf, bz#1050842 + +* Thu Apr 10 2014 Miguel Angel Ajo 2013.2.3-1 +- Update to upstream 2013.2.3 + +* Tue Mar 11 2014 Jakub Libosvar - 2013.2.2-3 +- Check whether db needs to be upgraded (rhbz#1031801 , rhbz#1045034) + +* Wed Feb 19 2014 Miguel Angel Ajo - 2013.2.2-2 +- Update to Havana stable release 2013.2.2 + +* Tue Jan 07 2014 Terry Wilson - 2013-2.1-3 +- Add python-psutil requirement for openvswitch agent, bz#1049235 + +* Fri Dec 27 2013 Terry Wilson - 2013.2.1-2 +- Add rootwrap.conf limitation to sudoers.d/neutron, bz#1039528 + +* Wed Dec 18 2013 Pádraig Brady - 2013.2.1-1 +- Update to Havana stable release 2013.2.1 + +* Fri Dec 13 2013 Terry Wilson - 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 - 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 - 2013.2-11 - Add missing debug and vpnaas rootwrap filters, bz#1034207