diff -Nru neutron-12.0.0/AUTHORS neutron-12.0.1/AUTHORS --- neutron-12.0.0/AUTHORS 2018-02-28 11:33:28.000000000 +0000 +++ neutron-12.0.1/AUTHORS 2018-03-29 17:36:26.000000000 +0000 @@ -783,6 +783,7 @@ Trygve Vea Tu Hong Jun Tyler Smith +Vadim ponomarev Vadivel Poonathan Van Hung Pham Vasiliy Khomenko diff -Nru neutron-12.0.0/ChangeLog neutron-12.0.1/ChangeLog --- neutron-12.0.0/ChangeLog 2018-02-28 11:33:27.000000000 +0000 +++ neutron-12.0.1/ChangeLog 2018-03-29 17:36:25.000000000 +0000 @@ -1,6 +1,28 @@ CHANGES ======= +12.0.1 +------ + +* Set trusted port only once in iptables firewall driver +* Spawn/stop metadata proxies upon adding/deleting router interfaces +* Process conntrack updates in worker threads +* Iptables firewall driver adds forward rules for trusted ports +* Try to enable L3 agent extension \`fip\_qos\` +* [Scenario tests] Try longer SSH timeout for ubuntu image +* Imported Translations from Zanata +* Config privsep in the linuxbridge agent +* ovsfw: Use bundle when adding security group rules +* ovs-fw: Don't modify passed rules to update +* Fix creation of port when network has admin's QoS policy set +* DVR: verify subnet has gateway\_ip before installing IPv4 flow +* [Fullstack] Respawn dhclient process in case of error +* Update documentation for DNS integration +* Always pass device\_owner to \_ipam\_get\_subnets() +* Fixing the filter in get MTU by network list query +* DVR: Fix dvr\_no\_external agent restart with fips +* Fix error message when duplicate QoS rule is created + 12.0.0 ------ diff -Nru neutron-12.0.0/debian/changelog neutron-12.0.1/debian/changelog --- neutron-12.0.0/debian/changelog 2018-04-16 20:06:25.000000000 +0000 +++ neutron-12.0.1/debian/changelog 2018-04-18 16:07:48.000000000 +0000 @@ -1,3 +1,11 @@ +neutron (2:12.0.1-0ubuntu1) bionic; urgency=medium + + * d/p/dvr-inter-tenant-traffic.patch: Cherry-picked from upstream + stable/queens branch (LP: #1751396). + * New stable point release for OpenStack Queens (LP: #1765138). + + -- Corey Bryant Wed, 18 Apr 2018 12:07:48 -0400 + neutron (2:12.0.0-0ubuntu3) bionic; urgency=medium * d/p/refresh-router-objects-after-port-binding.patch: Cherry-picked diff -Nru neutron-12.0.0/debian/patches/dvr-inter-tenant-traffic.patch neutron-12.0.1/debian/patches/dvr-inter-tenant-traffic.patch --- neutron-12.0.0/debian/patches/dvr-inter-tenant-traffic.patch 1970-01-01 00:00:00.000000000 +0000 +++ neutron-12.0.1/debian/patches/dvr-inter-tenant-traffic.patch 2018-04-18 16:07:48.000000000 +0000 @@ -0,0 +1,310 @@ +From 02d31ffb8abb157dff02fc977241ebdbf8ead89c Mon Sep 17 00:00:00 2001 +From: Swaminathan Vasudevan +Date: Fri, 23 Feb 2018 16:22:33 -0800 +Subject: [PATCH] DVR: Inter Tenant Traffic between networks not possible with + shared net + +Inter Tenant Traffic between two different networks that belong +to two different Tenants is not possible when connected through +a shared network that are internally connected through DVR +routers. + +This issue can be seen in multinode environment where there +is network isolation. + +The issue is, we have two different IP for the ports that are +connecting the two routers and DVR does not expose the router +interfaces outside a compute and is blocked by ovs tunnel bridge +rules. + +This patch fixes the issue by not applying the DVR specific +rules in the tunnel-bridge to the shared network ports that +are connecting the routers. + +Closes-Bug: #1751396 +Change-Id: I0717f29209f1354605d2f4128949ddbaefd99629 +(cherry picked from commit d019790fe436b72cb05b8d0ff1f3a62ebd9e9bee) +--- + neutron/api/rpc/handlers/dvr_rpc.py | 14 +++ + .../agent/ovs_dvr_neutron_agent.py | 29 ++++-- + .../unit/api/rpc/handlers/test_dvr_rpc.py | 7 ++ + .../agent/test_ovs_neutron_agent.py | 97 +++++++++++++------ + 4 files changed, 111 insertions(+), 36 deletions(-) + +diff --git a/neutron/api/rpc/handlers/dvr_rpc.py b/neutron/api/rpc/handlers/dvr_rpc.py +index f211adea7..9b2812805 100644 +--- a/neutron/api/rpc/handlers/dvr_rpc.py ++++ b/neutron/api/rpc/handlers/dvr_rpc.py +@@ -59,6 +59,13 @@ class DVRServerRpcApi(object): + return cctxt.call(context, 'get_ports_on_host_by_subnet', + host=host, subnet=subnet) + ++ @log_helpers.log_method_call ++ def get_network_info_for_id(self, context, network_id): ++ """Get network info for DVR router ports.""" ++ cctxt = self.client.prepare() ++ return cctxt.call(context, 'get_network_info_for_id', ++ network_id=network_id) ++ + @log_helpers.log_method_call + def get_subnet_for_dvr(self, context, subnet, fixed_ips): + cctxt = self.client.prepare() +@@ -105,6 +112,13 @@ class DVRServerRpcCallback(object): + return self.plugin.get_ports_on_host_by_subnet(context, + host, subnet) + ++ def get_network_info_for_id(self, context, **kwargs): ++ """Get network info for DVR port.""" ++ network_id = kwargs.get('network_id') ++ LOG.debug("DVR Agent requests network info for id %s", network_id) ++ net_filter = {'id': [network_id]} ++ return self.plugin.get_networks(context, filters=net_filter) ++ + def get_subnet_for_dvr(self, context, **kwargs): + fixed_ips = kwargs.get('fixed_ips') + subnet = kwargs.get('subnet') +diff --git a/neutron/plugins/ml2/drivers/openvswitch/agent/ovs_dvr_neutron_agent.py b/neutron/plugins/ml2/drivers/openvswitch/agent/ovs_dvr_neutron_agent.py +index 3de6a023a..9199bd8b6 100644 +--- a/neutron/plugins/ml2/drivers/openvswitch/agent/ovs_dvr_neutron_agent.py ++++ b/neutron/plugins/ml2/drivers/openvswitch/agent/ovs_dvr_neutron_agent.py +@@ -420,16 +420,27 @@ class OVSDVRNeutronAgent(object): + br = self.tun_br + # TODO(vivek) remove the IPv6 related flows once SNAT is not + # used for IPv6 DVR. +- if ip_version == 4: +- if subnet_info['gateway_ip']: +- br.install_dvr_process_ipv4( +- vlan_tag=lvm.vlan, gateway_ip=subnet_info['gateway_ip']) ++ port_net_info = ( ++ self.plugin_rpc.get_network_info_for_id( ++ self.context, subnet_info.get('network_id'))) ++ net_shared_only = ( ++ port_net_info[0]['shared'] and ++ not port_net_info[0]['router:external']) ++ if net_shared_only: ++ LOG.debug("Not applying DVR rules to tunnel bridge because %s " ++ "is a shared network", subnet_info.get('network_id')) + else: +- br.install_dvr_process_ipv6( +- vlan_tag=lvm.vlan, gateway_mac=subnet_info['gateway_mac']) +- br.install_dvr_process( +- vlan_tag=lvm.vlan, vif_mac=port.vif_mac, +- dvr_mac_address=self.dvr_mac_address) ++ if ip_version == 4: ++ if subnet_info['gateway_ip']: ++ br.install_dvr_process_ipv4( ++ vlan_tag=lvm.vlan, ++ gateway_ip=subnet_info['gateway_ip']) ++ else: ++ br.install_dvr_process_ipv6( ++ vlan_tag=lvm.vlan, gateway_mac=subnet_info['gateway_mac']) ++ br.install_dvr_process( ++ vlan_tag=lvm.vlan, vif_mac=port.vif_mac, ++ dvr_mac_address=self.dvr_mac_address) + + # the dvr router interface is itself a port, so capture it + # queue this subnet to that port. A subnet appears only once as +diff --git a/neutron/tests/unit/api/rpc/handlers/test_dvr_rpc.py b/neutron/tests/unit/api/rpc/handlers/test_dvr_rpc.py +index 0931604db..b8a3fb4b6 100644 +--- a/neutron/tests/unit/api/rpc/handlers/test_dvr_rpc.py ++++ b/neutron/tests/unit/api/rpc/handlers/test_dvr_rpc.py +@@ -46,6 +46,13 @@ class DVRServerRpcApiTestCase(base.BaseTestCase): + self.ctxt, 'get_ports_on_host_by_subnet', + host='foo_host', subnet='foo_subnet') + ++ def test_get_network_info_for_id(self): ++ self.rpc.get_network_info_for_id( ++ self.ctxt, 'fake-network-id') ++ self.mock_cctxt.call.assert_called_with( ++ self.ctxt, 'get_network_info_for_id', ++ network_id='fake-network-id') ++ + def test_get_subnet_for_dvr(self): + self.rpc.get_subnet_for_dvr( + self.ctxt, 'foo_subnet', fixed_ips='foo_fixed_ips') +diff --git a/neutron/tests/unit/plugins/ml2/drivers/openvswitch/agent/test_ovs_neutron_agent.py b/neutron/tests/unit/plugins/ml2/drivers/openvswitch/agent/test_ovs_neutron_agent.py +index 85a4c863a..efd49f591 100644 +--- a/neutron/tests/unit/plugins/ml2/drivers/openvswitch/agent/test_ovs_neutron_agent.py ++++ b/neutron/tests/unit/plugins/ml2/drivers/openvswitch/agent/test_ovs_neutron_agent.py +@@ -2442,29 +2442,33 @@ class TestOvsDvrNeutronAgent(object): + return resp + + def _expected_install_dvr_process(self, lvid, port, ip_version, +- gateway_ip, gateway_mac): +- if ip_version == 4: +- ipvx_calls = [ +- mock.call.install_dvr_process_ipv4( ++ gateway_ip, gateway_mac, shared=False): ++ if not shared: ++ if ip_version == 4: ++ ipvx_calls = [ ++ mock.call.install_dvr_process_ipv4( ++ vlan_tag=lvid, ++ gateway_ip=gateway_ip), ++ ] ++ else: ++ ipvx_calls = [ ++ mock.call.install_dvr_process_ipv6( ++ vlan_tag=lvid, ++ gateway_mac=gateway_mac), ++ ] ++ return ipvx_calls + [ ++ mock.call.install_dvr_process( + vlan_tag=lvid, +- gateway_ip=gateway_ip), ++ dvr_mac_address=self.agent.dvr_agent.dvr_mac_address, ++ vif_mac=port.vif_mac, ++ ), + ] + else: +- ipvx_calls = [ +- mock.call.install_dvr_process_ipv6( +- vlan_tag=lvid, +- gateway_mac=gateway_mac), +- ] +- return ipvx_calls + [ +- mock.call.install_dvr_process( +- vlan_tag=lvid, +- dvr_mac_address=self.agent.dvr_agent.dvr_mac_address, +- vif_mac=port.vif_mac, +- ), +- ] ++ return [] + + def _test_port_bound_for_dvr_on_vlan_network(self, device_owner, +- ip_version=4): ++ ip_version=4, ++ shared=False): + self._setup_for_dvr_test() + if ip_version == 4: + gateway_ip = '1.1.1.1' +@@ -2487,7 +2491,12 @@ class TestOvsDvrNeutronAgent(object): + return_value={'gateway_ip': gateway_ip, + 'cidr': cidr, + 'ip_version': ip_version, +- 'gateway_mac': gateway_mac}),\ ++ 'gateway_mac': gateway_mac, ++ 'network_id': 'fake-id'}),\ ++ mock.patch.object(self.agent.dvr_agent.plugin_rpc, ++ 'get_network_info_for_id', ++ return_value=[{'shared': shared, ++ 'router:external': False}]),\ + mock.patch.object(self.agent.dvr_agent.plugin_rpc, + 'get_ports_on_host_by_subnet', + return_value=[]),\ +@@ -2521,7 +2530,8 @@ class TestOvsDvrNeutronAgent(object): + lvid=lvid, + ip_version=ip_version, + gateway_ip=gateway_ip, +- gateway_mac=gateway_mac) ++ gateway_mac=gateway_mac, ++ shared=shared) + expected_on_int_br = [ + mock.call.provision_local_vlan( + port=int_ofp, +@@ -2554,7 +2564,8 @@ class TestOvsDvrNeutronAgent(object): + self.assertFalse([], phys_br.mock_calls) + + def _test_port_bound_for_dvr_on_vxlan_network(self, device_owner, +- ip_version=4): ++ ip_version=4, ++ shared=False): + self._setup_for_dvr_test() + if ip_version == 4: + gateway_ip = '1.1.1.1' +@@ -2577,7 +2588,12 @@ class TestOvsDvrNeutronAgent(object): + return_value={'gateway_ip': gateway_ip, + 'cidr': cidr, + 'ip_version': ip_version, +- 'gateway_mac': gateway_mac}),\ ++ 'gateway_mac': gateway_mac, ++ 'network_id': 'fake-id'}),\ ++ mock.patch.object(self.agent.dvr_agent.plugin_rpc, ++ 'get_network_info_for_id', ++ return_value=[{'shared': shared, ++ 'router:external': False}]),\ + mock.patch.object(self.agent.dvr_agent.plugin_rpc, + 'get_ports_on_host_by_subnet', + return_value=[]),\ +@@ -2610,7 +2626,8 @@ class TestOvsDvrNeutronAgent(object): + lvid=lvid, + ip_version=ip_version, + gateway_ip=gateway_ip, +- gateway_mac=gateway_mac) ++ gateway_mac=gateway_mac, ++ shared=shared) + self.assertEqual(expected_on_int_br, int_br.mock_calls) + self.assertEqual(expected_on_tun_br, tun_br.mock_calls) + self.assertEqual([], phys_br.mock_calls) +@@ -2645,6 +2662,16 @@ class TestOvsDvrNeutronAgent(object): + self._test_port_bound_for_dvr_on_vxlan_network( + device_owner=DEVICE_OWNER_COMPUTE, ip_version=6) + ++ def test_port_bound_for_dvr_with_compute_ports_on_shared_network(self): ++ self._test_port_bound_for_dvr_on_vlan_network( ++ device_owner=DEVICE_OWNER_COMPUTE, shared=True) ++ self._test_port_bound_for_dvr_on_vlan_network( ++ device_owner=DEVICE_OWNER_COMPUTE, ip_version=6, shared=True) ++ self._test_port_bound_for_dvr_on_vxlan_network( ++ device_owner=DEVICE_OWNER_COMPUTE, shared=True) ++ self._test_port_bound_for_dvr_on_vxlan_network( ++ device_owner=DEVICE_OWNER_COMPUTE, ip_version=6, shared=True) ++ + def test_port_bound_for_dvr_with_lbaas_vip_ports(self): + self._test_port_bound_for_dvr_on_vlan_network( + device_owner=n_const.DEVICE_OWNER_LOADBALANCER) +@@ -2738,7 +2765,8 @@ class TestOvsDvrNeutronAgent(object): + return_value={'gateway_ip': '1.1.1.1', + 'cidr': '1.1.1.0/24', + 'ip_version': 4, +- 'gateway_mac': 'aa:bb:cc:11:22:33'}),\ ++ 'gateway_mac': 'aa:bb:cc:11:22:33', ++ 'network_id': 'faked-id'}),\ + mock.patch.object(self.agent.dvr_agent.plugin_rpc, + 'get_ports_on_host_by_subnet', + return_value=[]),\ +@@ -2802,7 +2830,12 @@ class TestOvsDvrNeutronAgent(object): + return_value={'gateway_ip': gateway_ip, + 'cidr': cidr, + 'ip_version': ip_version, +- 'gateway_mac': gateway_mac}),\ ++ 'gateway_mac': gateway_mac, ++ 'network_id': 'fake-id'}),\ ++ mock.patch.object(self.agent.dvr_agent.plugin_rpc, ++ 'get_network_info_for_id', ++ return_value=[{'shared': False, ++ 'router:external': False}]),\ + mock.patch.object(self.agent.dvr_agent.plugin_rpc, + 'get_ports_on_host_by_subnet', + return_value=[]),\ +@@ -2907,7 +2940,12 @@ class TestOvsDvrNeutronAgent(object): + return_value={'gateway_ip': gateway_ip, + 'cidr': cidr, + 'ip_version': ip_version, +- 'gateway_mac': gateway_mac}),\ ++ 'gateway_mac': gateway_mac, ++ 'network_id': 'faked-id'}),\ ++ mock.patch.object(self.agent.dvr_agent.plugin_rpc, ++ 'get_network_info_for_id', ++ return_value=[{'shared': False, ++ 'router:external': False}]),\ + mock.patch.object(self.agent.dvr_agent.plugin_rpc, + 'get_ports_on_host_by_subnet', + return_value=[]),\ +@@ -3022,7 +3060,12 @@ class TestOvsDvrNeutronAgent(object): + return_value={'gateway_ip': '1.1.1.1', + 'cidr': '1.1.1.0/24', + 'ip_version': 4, +- 'gateway_mac': gateway_mac}),\ ++ 'gateway_mac': gateway_mac, ++ 'network_id': 'fake-id'}),\ ++ mock.patch.object(self.agent.dvr_agent.plugin_rpc, ++ 'get_network_info_for_id', ++ return_value=[{'shared': False, ++ 'router:external': False}]),\ + mock.patch.object(self.agent.dvr_agent.plugin_rpc, + 'get_ports_on_host_by_subnet', + return_value=[]),\ +-- +2.17.0 + diff -Nru neutron-12.0.0/debian/patches/series neutron-12.0.1/debian/patches/series --- neutron-12.0.0/debian/patches/series 2018-04-16 20:06:25.000000000 +0000 +++ neutron-12.0.1/debian/patches/series 2018-04-18 16:07:48.000000000 +0000 @@ -2,3 +2,4 @@ flake8-legacy.patch refresh-router-objects-after-port-binding.patch use-cidr-during-tenant-network-rule-deletion.patch +dvr-inter-tenant-traffic.patch diff -Nru neutron-12.0.0/devstack/lib/l3_agent neutron-12.0.1/devstack/lib/l3_agent --- neutron-12.0.0/devstack/lib/l3_agent 1970-01-01 00:00:00.000000000 +0000 +++ neutron-12.0.1/devstack/lib/l3_agent 2018-03-29 17:33:08.000000000 +0000 @@ -0,0 +1,13 @@ +function plugin_agent_add_l3_agent_extension { + local l3_agent_extension=$1 + if [[ -z "$L3_AGENT_EXTENSIONS" ]]; then + L3_AGENT_EXTENSIONS=$l3_agent_extension + elif [[ ! ,${L3_AGENT_EXTENSIONS}, =~ ,${l3_agent_extension}, ]]; then + L3_AGENT_EXTENSIONS+=",$l3_agent_extension" + fi +} + + +function configure_l3_agent { + iniset $NEUTRON_L3_CONF agent extensions "$L3_AGENT_EXTENSIONS" +} diff -Nru neutron-12.0.0/devstack/lib/qos neutron-12.0.1/devstack/lib/qos --- neutron-12.0.0/devstack/lib/qos 2018-02-28 11:30:28.000000000 +0000 +++ neutron-12.0.1/devstack/lib/qos 2018-03-29 17:33:08.000000000 +0000 @@ -18,3 +18,7 @@ configure_qos_core_plugin configure_qos_l2_agent } + +function configure_l3_agent_extension_fip_qos { + plugin_agent_add_l3_agent_extension "fip_qos" +} diff -Nru neutron-12.0.0/devstack/plugin.sh neutron-12.0.1/devstack/plugin.sh --- neutron-12.0.0/devstack/plugin.sh 2018-02-28 11:30:28.000000000 +0000 +++ neutron-12.0.1/devstack/plugin.sh 2018-03-29 17:33:08.000000000 +0000 @@ -4,6 +4,7 @@ source $LIBDIR/flavors source $LIBDIR/l2_agent source $LIBDIR/l2_agent_sriovnicswitch +source $LIBDIR/l3_agent source $LIBDIR/ml2 source $LIBDIR/qos source $LIBDIR/ovs @@ -63,6 +64,12 @@ configure_l2_agent configure_l2_agent_sriovnicswitch fi + if is_service_enabled q-l3 neutron-l3; then + if is_service_enabled q-qos neutron-qos; then + configure_l3_agent_extension_fip_qos + fi + configure_l3_agent + fi if [ $NEUTRON_CORE_PLUGIN = ml2 ]; then configure_ml2_extension_drivers fi diff -Nru neutron-12.0.0/devstack/settings neutron-12.0.1/devstack/settings --- neutron-12.0.0/devstack/settings 2018-02-28 11:30:28.000000000 +0000 +++ neutron-12.0.1/devstack/settings 2018-03-29 17:33:08.000000000 +0000 @@ -1,4 +1,5 @@ L2_AGENT_EXTENSIONS=${L2_AGENT_EXTENSIONS:-} +L3_AGENT_EXTENSIONS=${L3_AGENT_EXTENSIONS:-} if is_neutron_legacy_enabled; then NEUTRON_CORE_PLUGIN=$Q_PLUGIN diff -Nru neutron-12.0.0/doc/source/admin/config-dns-int-ext-serv.rst neutron-12.0.1/doc/source/admin/config-dns-int-ext-serv.rst --- neutron-12.0.0/doc/source/admin/config-dns-int-ext-serv.rst 1970-01-01 00:00:00.000000000 +0000 +++ neutron-12.0.1/doc/source/admin/config-dns-int-ext-serv.rst 2018-03-29 17:33:26.000000000 +0000 @@ -0,0 +1,745 @@ +.. _config-dns-int-ext-serv: + +======================================== +DNS integration with an external service +======================================== + +This page serves as a guide for how to use the DNS integration functionality of +the Networking service with an external DNSaaS (DNS-as-a-Service). + +As a prerequisite this needs the internal DNS functionality offered by the +Networking service to be enabled, see :ref:`config-dns-int`. + +Configuring OpenStack Networking for integration with an external DNS service +----------------------------------------------------------------------------- + +The first step to configure the integration with an external DNS service is to +enable the functionality described in :ref:`config-dns-int-dns-resolution`. +Once this is done, the user has to take the following steps and restart +``neutron-server``. + +#. Edit the ``[default]`` section of ``/etc/neutron/neutron.conf`` and specify + the external DNS service driver to be used in parameter + ``external_dns_driver``. The valid options are defined in namespace + ``neutron.services.external_dns_drivers``. The following example shows how + to set up the driver for the OpenStack DNS service: + + .. code-block:: console + + external_dns_driver = designate + +#. If the OpenStack DNS service is the target external DNS, the ``[designate]`` + section of ``/etc/neutron/neutron.conf`` must define the following + parameters: + + * ``url``: the OpenStack DNS service public endpoint URL. Note that + this must always be the versioned endpoint currently. + * ``auth_type``: the authorization plugin to use. + Usually this should be ``password``, see + https://docs.openstack.org/keystoneauth/latest/authentication-plugins.html + for other options. + * ``auth_url``: the Identity service authorization endpoint url. + This endpoint will be used by the Networking service to authenticate as an + user to create and update reverse lookup (PTR) zones. + * ``username``: the username to be used by the Networking service to + create and update reverse lookup (PTR) zones. + * ``password``: the password of the user to be used by the + Networking service to create and update reverse lookup (PTR) zones. + * ``project_name``: the name of the project to be used by the + Networking service to create and update reverse lookup (PTR) zones. + * ``project_domain_name``: the name of the domain for the project to be used by the + Networking service to create and update reverse lookup (PTR) zones. + * ``user_domain_name``: the name of the domain for the user to be used by the + Networking service to create and update reverse lookup (PTR) zones. + * ``region_name``: the name of the region to be used by the + Networking service to create and update reverse lookup (PTR) zones. + * ``allow_reverse_dns_lookup``: a boolean value specifying whether to enable + or not the creation of reverse lookup (PTR) records. + * ``ipv4_ptr_zone_prefix_size``: the size in bits of the prefix for the IPv4 + reverse lookup (PTR) zones. + * ``ipv6_ptr_zone_prefix_size``: the size in bits of the prefix for the IPv6 + reverse lookup (PTR) zones. + * ``ptr_zone_email``: the email address to use when creating new reverse + lookup (PTR) zones. The default is ``admin@`` where ```` + is the domain for the first record being created in that zone. + * ``insecure``: whether to disable SSL certificate validation. By default, certificates + are validated. + * ``cafile``: Path to a valid Certificate Authority (CA) certificate. + Optional, the system CAs are used as default. + * ``auth_uri``: the unversioned public endpoint of the Identity service. + + The following is an example: + + .. code-block:: console + + [designate] + url = http://192.0.2.240:9001/v2 + auth_type = password + auth_url = http://192.0.2.240:35357 + username = neutron + password = PASSWORD + project_name = service + project_domain_name = Default + user_domain_name = Default + allow_reverse_dns_lookup = True + ipv4_ptr_zone_prefix_size = 24 + ipv6_ptr_zone_prefix_size = 116 + ptr_zone_email = admin@example.org + cafile = /etc/ssl/certs/my_ca_cert + auth_uri = http://192.0.2.240:5000 + + +Once the ``neutron-server`` has been configured and restarted, users will have +functionality that covers three use cases, described in the following sections. +In each of the use cases described below: + +* The examples assume the OpenStack DNS service as the external DNS. +* A, AAAA and PTR records will be created in the DNS service. +* Before executing any of the use cases, the user must create in the DNS + service under his project a DNS zone where the A and AAAA records will be + created. For the description of the use cases below, it is assumed the zone + ``example.org.`` was created previously. +* The PTR records will be created in zones owned by the project specified + for ``project_name`` above. +* Despite officially being deprecated, using the neutron CLI is still necessary + for some of the tasks, as the corresponding features are not yet implemented + for the openstack client. + +Use case 1: Floating IPs are published with associated port DNS attributes +-------------------------------------------------------------------------- + +In this use case, the address of a floating IP is published in the external +DNS service in conjunction with the ``dns_name`` of its associated port and the +``dns_domain`` of the port's network. The steps to execute in this use case are +the following: + +#. Assign a valid domain name to the network's ``dns_domain`` attribute. This + name must end with a period (``.``). +#. Boot an instance or alternatively, create a port specifying a valid value to + its ``dns_name`` attribute. If the port is going to be used for an instance + boot, the value assigned to ``dns_name`` must be equal to the ``hostname`` + that the Compute service will assign to the instance. Otherwise, the boot + will fail. +#. Create a floating IP and associate it to the port. + +Following is an example of these steps: + +.. code-block:: console + + $ neutron net-update 38c5e950-b450-4c30-83d4-ee181c28aad3 --dns_domain example.org. + Updated network: 38c5e950-b450-4c30-83d4-ee181c28aad3 + + $ neutron net-show 38c5e950-b450-4c30-83d4-ee181c28aad3 + +-------------------------+--------------------------------------+ + | Field | Value | + +-------------------------+--------------------------------------+ + | admin_state_up | True | + | availability_zone_hints | | + | availability_zones | nova | + | dns_domain | example.org. | + | id | 38c5e950-b450-4c30-83d4-ee181c28aad3 | + | mtu | 1450 | + | name | private | + | port_security_enabled | True | + | revision_number | 1 | + | router:external | False | + | shared | False | + | status | ACTIVE | + | subnets | 43414c53-62ae-49bc-aa6c-c9dd7705818a | + | | 5b9282a1-0be1-4ade-b478-7868ad2a16ff | + | tags | [] | + | tenant_id | d5660cb1e6934612a01b4fb2fb630725 | + +-------------------------+--------------------------------------+ + + $ openstack server create --image cirros --flavor 42 \ + --nic net-id=38c5e950-b450-4c30-83d4-ee181c28aad3 my_vm + +--------------------------------------+----------------------------------------------------------------+ + | Field | Value | + +--------------------------------------+----------------------------------------------------------------+ + | OS-DCF:diskConfig | MANUAL | + | OS-EXT-AZ:availability_zone | | + | OS-EXT-STS:power_state | 0 | + | OS-EXT-STS:task_state | scheduling | + | OS-EXT-STS:vm_state | building | + | OS-SRV-USG:launched_at | - | + | OS-SRV-USG:terminated_at | - | + | accessIPv4 | | + | accessIPv6 | | + | adminPass | oTLQLR3Kezmt | + | config_drive | | + | created | 2016-02-15T19:27:34Z | + | flavor | m1.nano (42) | + | hostId | | + | id | 43f328bb-b2d1-4cf1-a36f-3b2593397cb1 | + | image | cirros-0.3.5-x86_64-uec (b9d981eb-d21c-4ce2-9dbc-dd38f3d9015f) | + | key_name | - | + | locked | False | + | metadata | {} | + | name | my_vm | + | os-extended-volumes:volumes_attached | [] | + | progress | 0 | + | security_groups | default | + | status | BUILD | + | tenant_id | d5660cb1e6934612a01b4fb2fb630725 | + | updated | 2016-02-15T19:27:34Z | + | user_id | 8bb6e578cba24e7db9d3810633124525 | + +--------------------------------------+----------------------------------------------------------------+ + + $ openstack server list + +--------------------------------------+-------+--------+------------+-------------+----------------------------------------------------------+------------+ + | ID | Name | Status | Task State | Power State | Networks | Image Name | + +--------------------------------------+-------+--------+------------+-------------+----------------------------------------------------------+------------+ + | 43f328bb-b2d1-4cf1-a36f-3b2593397cb1 | my_vm | ACTIVE | - | Running | private=fda4:653e:71b0:0:f816:3eff:fe16:b5f2, 192.0.2.15 | cirros | + +--------------------------------------+-------+--------+------------+-------------+----------------------------------------------------------+------------+ + + $ neutron port-list --device_id 43f328bb-b2d1-4cf1-a36f-3b2593397cb1 + +--------------------------------------+------+-------------------+-------------------------------------------------------------------------------------------------------------+ + | id | name | mac_address | fixed_ips | + +--------------------------------------+------+-------------------+-------------------------------------------------------------------------------------------------------------+ + | da0b1f75-c895-460f-9fc1-4d6ec84cf85f | | fa:16:3e:16:b5:f2 | {"subnet_id": "5b9282a1-0be1-4ade-b478-7868ad2a16ff", "ip_address": "192.0.2.15"} | + | | | | {"subnet_id": "43414c53-62ae-49bc-aa6c-c9dd7705818a", "ip_address": "fda4:653e:71b0:0:f816:3eff:fe16:b5f2"} | + +--------------------------------------+------+-------------------+-------------------------------------------------------------------------------------------------------------+ + + $ neutron port-show da0b1f75-c895-460f-9fc1-4d6ec84cf85f + +-----------------------+-------------------------------------------------------------------------------------------------------------+ + | Field | Value | + +-----------------------+-------------------------------------------------------------------------------------------------------------+ + | admin_state_up | True | + | allowed_address_pairs | | + | binding:vnic_type | normal | + | device_id | 43f328bb-b2d1-4cf1-a36f-3b2593397cb1 | + | device_owner | compute:None | + | dns_assignment | {"hostname": "my-vm", "ip_address": "192.0.2.15", "fqdn": "my-vm.example.org."} | + | | {"hostname": "my-vm", "ip_address": "fda4:653e:71b0:0:f816:3eff:fe16:b5f2", "fqdn": "my-vm.example.org."} | + | dns_name | my-vm | + | extra_dhcp_opts | | + | fixed_ips | {"subnet_id": "5b9282a1-0be1-4ade-b478-7868ad2a16ff", "ip_address": "192.0.2.15"} | + | | {"subnet_id": "43414c53-62ae-49bc-aa6c-c9dd7705818a", "ip_address": "fda4:653e:71b0:0:f816:3eff:fe16:b5f2"} | + | id | da0b1f75-c895-460f-9fc1-4d6ec84cf85f | + | mac_address | fa:16:3e:16:b5:f2 | + | name | | + | network_id | 38c5e950-b450-4c30-83d4-ee181c28aad3 | + | port_security_enabled | True | + | revision_number | 1 | + | security_groups | 1f0ddd73-7e3c-48bd-a64c-7ded4fe0e635 | + | status | ACTIVE | + | tags | [] | + | tenant_id | d5660cb1e6934612a01b4fb2fb630725 | + +-----------------------+-------------------------------------------------------------------------------------------------------------+ + + $ openstack recordset list example.org. + +--------------------------------------+--------------------+------+-----------------------------------------------------------------------+--------+--------+ + | id | name | type | records | status | action | + +--------------------------------------+--------------------+------+-----------------------------------------------------------------------+--------+--------+ + | a5fe696d-203f-4018-b0d8-590221adb513 | example.org. | NS | ns1.devstack.org. | ACTIVE | NONE | + | e7c05a5d-83a0-4fe5-8bd5-ab058a3326aa | example.org. | SOA | ns1.devstack.org. malavall.us.ibm.com. 1513767794 3532 600 86400 3600 | ACTIVE | NONE | + +--------------------------------------+--------------------+------+-----------------------------------------------------------------------+--------+--------+ + + $ neutron floatingip-create 41fa3995-9e4a-4cd9-bb51-3e5424f2ff2a \ + --port_id da0b1f75-c895-460f-9fc1-4d6ec84cf85f + Created a new floatingip: + +---------------------+--------------------------------------+ + | Field | Value | + +---------------------+--------------------------------------+ + | dns_domain | | + | dns_name | | + | fixed_ip_address | 192.0.2.15 | + | floating_ip_address | 198.51.100.4 | + | floating_network_id | 41fa3995-9e4a-4cd9-bb51-3e5424f2ff2a | + | id | e78f6eb1-a35f-4a90-941d-87c888d5fcc7 | + | port_id | da0b1f75-c895-460f-9fc1-4d6ec84cf85f | + | revision_number | 1 | + | router_id | 970ebe83-c4a3-4642-810e-43ab7b0c2b5f | + | status | DOWN | + | tags | [] | + | tenant_id | d5660cb1e6934612a01b4fb2fb630725 | + +---------------------+--------------------------------------+ + + $ openstack recordset list example.org. + +--------------------------------------+--------------------+------+-----------------------------------------------------------------------+--------+--------+ + | id | name | type | records | status | action | + +--------------------------------------+--------------------+------+-----------------------------------------------------------------------+--------+--------+ + | a5fe696d-203f-4018-b0d8-590221adb513 | example.org. | NS | ns1.devstack.org. | ACTIVE | NONE | + | e7c05a5d-83a0-4fe5-8bd5-ab058a3326aa | example.org. | SOA | ns1.devstack.org. malavall.us.ibm.com. 1513768814 3532 600 86400 3600 | ACTIVE | NONE | + | 5ff53fd0-3746-48da-b9c9-77ed3004ec67 | my-vm.example.org. | A | 198.51.100.4 | ACTIVE | NONE | + +--------------------------------------+--------------------+------+-----------------------------------------------------------------------+--------+--------+ + +In this example, notice that the data is published in the DNS service when the +floating IP is associated to the port. + +Following are the PTR records created for this example. Note that for +IPv4, the value of ``ipv4_ptr_zone_prefix_size`` is 24. Also, since the zone +for the PTR records is created in the ``service`` project, you need to use +admin credentials in order to be able to view it. + + +.. code-block:: console + + $ openstack recordset list --all-projects 100.51.198.in-addr.arpa. + +--------------------------------------+----------------------------------+----------------------------+------+---------------------------------------------------------------------+--------+--------+ + | id | project_id | name | type | data | status | action | + +--------------------------------------+----------------------------------+-----------------------------------+---------------------------------------------------------------------+--------+--------+ + | 2dd0b894-25fa-4563-9d32-9f13bd67f329 | 07224d17d76d42499a38f00ba4339710 | 100.51.198.in-addr.arpa. | NS | ns1.devstack.org. | ACTIVE | NONE | + | 47b920f1-5eff-4dfa-9616-7cb5b7cb7ca6 | 07224d17d76d42499a38f00ba4339710 | 100.51.198.in-addr.arpa. | SOA | ns1.devstack.org. admin.example.org. 1455564862 3600 600 86400 3600 | ACTIVE | NONE | + | fb1edf42-abba-410c-8397-831f45fd0cd7 | 07224d17d76d42499a38f00ba4339710 | 4.100.51.198.in-addr.arpa. | PTR | my-vm.example.org. | ACTIVE | NONE | + +--------------------------------------+----------------------------------+----------------------------+------+---------------------------------------------------------------------+--------+--------+ + + +Use case 2: Floating IPs are published in the external DNS service +------------------------------------------------------------------ + +In this use case, the user assigns ``dns_name`` and ``dns_domain`` attributes +to a floating IP when it is created. The floating IP data becomes visible in +the external DNS service as soon as it is created. The floating IP can be +associated with a port on creation or later on. The following example shows a +user booting an instance and then creating a floating IP associated to the port +allocated for the instance: + +.. code-block:: console + + $ neutron net-show 38c5e950-b450-4c30-83d4-ee181c28aad3 + +-------------------------+--------------------------------------+ + | Field | Value | + +-------------------------+--------------------------------------+ + | admin_state_up | True | + | availability_zone_hints | | + | availability_zones | nova | + | dns_domain | example.org. | + | id | 38c5e950-b450-4c30-83d4-ee181c28aad3 | + | mtu | 1450 | + | name | private | + | port_security_enabled | True | + | revision_number | 1 | + | router:external | False | + | shared | False | + | status | ACTIVE | + | subnets | 43414c53-62ae-49bc-aa6c-c9dd7705818a | + | | 5b9282a1-0be1-4ade-b478-7868ad2a16ff | + | tags | [] | + | tenant_id | d5660cb1e6934612a01b4fb2fb630725 | + +-------------------------+--------------------------------------+ + + $ openstack server create --image cirros --flavor 42 \ + --nic net-id=38c5e950-b450-4c30-83d4-ee181c28aad3 my_vm + +--------------------------------------+----------------------------------------------------------------+ + | Field | Value | + +--------------------------------------+----------------------------------------------------------------+ + | OS-DCF:diskConfig | MANUAL | + | OS-EXT-AZ:availability_zone | | + | OS-EXT-STS:power_state | 0 | + | OS-EXT-STS:task_state | scheduling | + | OS-EXT-STS:vm_state | building | + | OS-SRV-USG:launched_at | - | + | OS-SRV-USG:terminated_at | - | + | accessIPv4 | | + | accessIPv6 | | + | adminPass | HLXGznYqXM4J | + | config_drive | | + | created | 2016-02-15T19:42:44Z | + | flavor | m1.nano (42) | + | hostId | | + | id | 71fb4ac8-eed8-4644-8113-0641962bb125 | + | image | cirros-0.3.5-x86_64-uec (b9d981eb-d21c-4ce2-9dbc-dd38f3d9015f) | + | key_name | - | + | locked | False | + | metadata | {} | + | name | my_vm | + | os-extended-volumes:volumes_attached | [] | + | progress | 0 | + | security_groups | default | + | status | BUILD | + | tenant_id | d5660cb1e6934612a01b4fb2fb630725 | + | updated | 2016-02-15T19:42:44Z | + | user_id | 8bb6e578cba24e7db9d3810633124525 | + +--------------------------------------+----------------------------------------------------------------+ + + $ openstack server list + +--------------------------------------+-------+--------+------------+-------------+----------------------------------------------------------+------------+ + | ID | Name | Status | Task State | Power State | Networks | Image Name | + +--------------------------------------+-------+--------+------------+-------------+----------------------------------------------------------+------------+ + | 71fb4ac8-eed8-4644-8113-0641962bb125 | my_vm | ACTIVE | - | Running | private=fda4:653e:71b0:0:f816:3eff:fe24:8614, 192.0.2.16 | cirros | + +--------------------------------------+-------+--------+------------+-------------+----------------------------------------------------------+------------+ + + $ neutron port-list --device_id 71fb4ac8-eed8-4644-8113-0641962bb125 + +--------------------------------------+------+-------------------+-------------------------------------------------------------------------------------------------------------+ + | id | name | mac_address | fixed_ips | + +--------------------------------------+------+-------------------+-------------------------------------------------------------------------------------------------------------+ + | 1e7033fb-8e9d-458b-89ed-8312cafcfdcb | | fa:16:3e:24:86:14 | {"subnet_id": "5b9282a1-0be1-4ade-b478-7868ad2a16ff", "ip_address": "192.0.2.16"} | + | | | | {"subnet_id": "43414c53-62ae-49bc-aa6c-c9dd7705818a", "ip_address": "fda4:653e:71b0:0:f816:3eff:fe24:8614"} | + +--------------------------------------+------+-------------------+-------------------------------------------------------------------------------------------------------------+ + + $ neutron port-show 1e7033fb-8e9d-458b-89ed-8312cafcfdcb + +-----------------------+-------------------------------------------------------------------------------------------------------------+ + | Field | Value | + +-----------------------+-------------------------------------------------------------------------------------------------------------+ + | admin_state_up | True | + | allowed_address_pairs | | + | binding:vnic_type | normal | + | device_id | 71fb4ac8-eed8-4644-8113-0641962bb125 | + | device_owner | compute:None | + | dns_assignment | {"hostname": "my-vm", "ip_address": "192.0.2.16", "fqdn": "my-vm.example.org."} | + | | {"hostname": "my-vm", "ip_address": "fda4:653e:71b0:0:f816:3eff:fe24:8614", "fqdn": "my-vm.example.org."} | + | dns_name | my-vm | + | extra_dhcp_opts | | + | fixed_ips | {"subnet_id": "5b9282a1-0be1-4ade-b478-7868ad2a16ff", "ip_address": "192.0.2.16"} | + | | {"subnet_id": "43414c53-62ae-49bc-aa6c-c9dd7705818a", "ip_address": "fda4:653e:71b0:0:f816:3eff:fe24:8614"} | + | id | 1e7033fb-8e9d-458b-89ed-8312cafcfdcb | + | mac_address | fa:16:3e:24:86:14 | + | name | | + | network_id | 38c5e950-b450-4c30-83d4-ee181c28aad3 | + | port_security_enabled | True | + | revision_number | 1 | + | security_groups | 1f0ddd73-7e3c-48bd-a64c-7ded4fe0e635 | + | status | ACTIVE | + | tags | [] | + | tenant_id | d5660cb1e6934612a01b4fb2fb630725 | + +-----------------------+-------------------------------------------------------------------------------------------------------------+ + + $ openstack recordset list example.org. + +--------------------------------------+--------------------+------+-----------------------------------------------------------------------+--------+--------+ + | id | name | type | records | status | action | + +--------------------------------------+--------------------+------+-----------------------------------------------------------------------+--------+--------+ + | 56ca0b88-e343-4c98-8faa-19746e169baf | example.org. | NS | ns1.devstack.org. | ACTIVE | NONE | + | 10a36008-6ecf-47c3-b321-05652a929b04 | example.org. | SOA | ns1.devstack.org. malavall.us.ibm.com. 1455565110 3532 600 86400 3600 | ACTIVE | NONE | + +--------------------------------------+--------------------+------+-----------------------------------------------------------------------+--------+--------+ + + $ neutron floatingip-create 41fa3995-9e4a-4cd9-bb51-3e5424f2ff2a \ + --dns_domain example.org. --dns_name my-floatingip + Created a new floatingip: + +---------------------+--------------------------------------+ + | Field | Value | + +---------------------+--------------------------------------+ + | dns_domain | example.org. | + | dns_name | my-floatingip | + | fixed_ip_address | | + | floating_ip_address | 198.51.100.5 | + | floating_network_id | 41fa3995-9e4a-4cd9-bb51-3e5424f2ff2a | + | id | 9f23a9c6-eceb-42eb-9f45-beb58c473728 | + | port_id | | + | revision_number | 1 | + | router_id | | + | status | DOWN | + | tags | [] | + | tenant_id | d5660cb1e6934612a01b4fb2fb630725 | + +---------------------+--------------------------------------+ + + $ openstack recordset list example.org. + +--------------------------------------+----------------------------+------+-----------------------------------------------------------------------+--------+--------+ + | id | name | type | records | status | action | + +--------------------------------------+----------------------------+------+-----------------------------------------------------------------------+--------+--------+ + | 56ca0b88-e343-4c98-8faa-19746e169baf | example.org. | NS | ns1.devstack.org. | ACTIVE | NONE | + | 10a36008-6ecf-47c3-b321-05652a929b04 | example.org. | SOA | ns1.devstack.org. malavall.us.ibm.com. 1455565110 3532 600 86400 3600 | ACTIVE | NONE | + | 8884c56f-3ef5-446e-ae4d-8053cc8bc2b4 | my-floatingip.example.org. | A | 198.51.100.53 | ACTIVE | NONE | + +--------------------------------------+----------------------------+------+-----------------------------------------------------------------------+--------+--------+ + +Note that in this use case: + +* The ``dns_name`` and ``dns_domain`` attributes of a floating IP must be + specified together on creation. They cannot be assigned to the floating IP + separately and they cannot be changed after the floating IP has been + created. +* The ``dns_name`` and ``dns_domain`` of a floating IP have precedence, for + purposes of being published in the external DNS service, over the + ``dns_name`` of its associated port and the ``dns_domain`` of the port's + network, whether they are specified or not. Only the ``dns_name`` and the + ``dns_domain`` of the floating IP are published in the external DNS service. + +Following are the PTR records created for this example. Note that for +IPv4, the value of ``ipv4_ptr_zone_prefix_size`` is 24. Also, since the zone +for the PTR records is created in the ``service`` project, you need to use +admin credentials in order to be able to view it. + + +.. code-block:: console + + $ openstack recordset list --all-projects 100.51.198.in-addr.arpa. + +--------------------------------------+----------------------------------+----------------------------+------+---------------------------------------------------------------------+--------+--------+ + | id | project_id | name | type | data | status | action | + +--------------------------------------+----------------------------------+-----------------------------------+---------------------------------------------------------------------+--------+--------+ + | 2dd0b894-25fa-4563-9d32-9f13bd67f329 | 07224d17d76d42499a38f00ba4339710 | 100.51.198.in-addr.arpa. | NS | ns1.devstack.org. | ACTIVE | NONE | + | 47b920f1-5eff-4dfa-9616-7cb5b7cb7ca6 | 07224d17d76d42499a38f00ba4339710 | 100.51.198.in-addr.arpa. | SOA | ns1.devstack.org. admin.example.org. 1455564862 3600 600 86400 3600 | ACTIVE | NONE | + | 589a0171-e77a-4ab6-ba6e-23114f2b9366 | 07224d17d76d42499a38f00ba4339710 | 5.100.51.198.in-addr.arpa. | PTR | my-floatingip.example.org. | ACTIVE | NONE | + +--------------------------------------+----------------------------------+----------------------------+------+---------------------------------------------------------------------+--------+--------+ + +.. _config-dns-use-case-3: + +Use case 3: Ports are published directly in the external DNS service +-------------------------------------------------------------------- + +In this case, the user is creating ports or booting instances on a network +that is accessible externally. If the user wants to publish a port in the +external DNS service in a zone specified by the ``dns_domain`` attribute of the +network, these are the steps to be taken: + +#. Assign a valid domain name to the network's ``dns_domain`` attribute. This + name must end with a period (``.``). +#. Boot an instance specifying the externally accessible network. + Alternatively, create a port on the externally accessible network specifying + a valid value to its ``dns_name`` attribute. If the port is going to be used + for an instance boot, the value assigned to ``dns_name`` must be equal to + the ``hostname`` that the Compute service will assign to the instance. + Otherwise, the boot will fail. + +Once these steps are executed, the port's DNS data will be published in the +external DNS service. This is an example: + +.. code-block:: console + + $ neutron net-list + +--------------------------------------+----------+----------------------------------------------------------+ + | id | name | subnets | + +--------------------------------------+----------+----------------------------------------------------------+ + | 41fa3995-9e4a-4cd9-bb51-3e5424f2ff2a | public | a67cfdf7-9d5d-406f-8a19-3f38e4fc3e74 | + | | | cbd8c6dc-ca81-457e-9c5d-f8ece7ef67f8 | + | 37aaff3a-6047-45ac-bf4f-a825e56fd2b3 | external | 277eca5d-9869-474b-960e-6da5951d09f7 203.0.113.0/24 | + | | | eab47748-3f0a-4775-a09f-b0c24bb64bc4 2001:db8:10::/64 | + | bf2802a0-99a0-4e8c-91e4-107d03f158ea | my-net | 6141b474-56cd-430f-b731-71660bb79b79 192.0.2.64/26 | + | 38c5e950-b450-4c30-83d4-ee181c28aad3 | private | 43414c53-62ae-49bc-aa6c-c9dd7705818a fda4:653e:71b0::/64 | + | | | 5b9282a1-0be1-4ade-b478-7868ad2a16ff 192.0.2.0/26 | + +--------------------------------------+----------+----------------------------------------------------------+ + + $ neutron net-update 37aaff3a-6047-45ac-bf4f-a825e56fd2b3 --dns_domain example.org. + Updated network: 37aaff3a-6047-45ac-bf4f-a825e56fd2b3 + + $ neutron net-show 37aaff3a-6047-45ac-bf4f-a825e56fd2b3 + +---------------------------+--------------------------------------+ + | Field | Value | + +---------------------------+--------------------------------------+ + | admin_state_up | True | + | availability_zone_hints | | + | availability_zones | nova | + | dns_domain | example.org. | + | id | 37aaff3a-6047-45ac-bf4f-a825e56fd2b3 | + | mtu | 1450 | + | name | external | + | port_security_enabled | True | + | provider:network_type | vlan | + | provider:physical_network | | + | provider:segmentation_id | 2016 | + | revision_number | 4 | + | router:external | False | + | shared | True | + | status | ACTIVE | + | subnets | eab47748-3f0a-4775-a09f-b0c24bb64bc4 | + | | 277eca5d-9869-474b-960e-6da5951d09f7 | + | tags | [] | + | tenant_id | 04fc2f83966245dba907efb783f8eab9 | + +---------------------------+--------------------------------------+ + + $ openstack recordset list example.org. + +--------------------------------------+--------------+------+-----------------------------------------------------------------------+--------+--------+ + | id | name | type | records | status | action | + +--------------------------------------+--------------+------+-----------------------------------------------------------------------+--------+--------+ + | a5fe696d-203f-4018-b0d8-590221adb513 | example.org. | NS | ns1.devstack.org. | ACTIVE | NONE | + | e7c05a5d-83a0-4fe5-8bd5-ab058a3326aa | example.org. | SOA | ns1.devstack.org. malavall.us.ibm.com. 1513767619 3532 600 86400 3600 | ACTIVE | NONE | + +--------------------------------------+--------------+------+-----------------------------------------------------------------------+--------+--------+ + + $ neutron port-create 37aaff3a-6047-45ac-bf4f-a825e56fd2b3 --dns_name my-vm + Created a new port: + +-----------------------+---------------------------------------------------------------------------------------+ + | Field | Value | + +-----------------------+---------------------------------------------------------------------------------------+ + | admin_state_up | True | + | allowed_address_pairs | | + | binding:vnic_type | normal | + | device_id | | + | device_owner | | + | dns_assignment | {"hostname": "my-vm", "ip_address": "203.0.113.9", "fqdn": "my-vm.example.org."} | + | | {"hostname": "my-vm", "ip_address": "2001:db8:10::9", "fqdn": "my-vm.example.org."} | + | dns_name | my-vm | + | fixed_ips | {"subnet_id": "277eca5d-9869-474b-960e-6da5951d09f7", "ip_address": "203.0.113.9"} | + | | {"subnet_id": "eab47748-3f0a-4775-a09f-b0c24bb64bc4", "ip_address": "2001:db8:10::9"} | + | id | 04be331b-dc5e-410a-9103-9c8983aeb186 | + | mac_address | fa:16:3e:0f:4b:e4 | + | name | | + | network_id | 37aaff3a-6047-45ac-bf4f-a825e56fd2b3 | + | port_security_enabled | True | + | revision_number | 1 | + | security_groups | 1f0ddd73-7e3c-48bd-a64c-7ded4fe0e635 | + | status | DOWN | + | tags | [] | + | tenant_id | d5660cb1e6934612a01b4fb2fb630725 | + +-----------------------+---------------------------------------------------------------------------------------+ + + $ openstack recordset list example.org. + +--------------------------------------+--------------------+------+-----------------------------------------------------------------------+--------+--------+ + | id | name | type | records | status | action | + +--------------------------------------+--------------------+------+-----------------------------------------------------------------------+--------+--------+ + | a5fe696d-203f-4018-b0d8-590221adb513 | example.org. | NS | ns1.devstack.org. | ACTIVE | NONE | + | e7c05a5d-83a0-4fe5-8bd5-ab058a3326aa | example.org. | SOA | ns1.devstack.org. malavall.us.ibm.com. 1513767794 3532 600 86400 3600 | ACTIVE | NONE | + | fa753ab8-bffa-400d-9ef8-d4a3b1a7ffbf | my-vm.example.org. | A | 203.0.113.9 | ACTIVE | NONE | + | 04abf9f8-c7a3-43f6-9a55-95cee9b144a9 | my-vm.example.org. | AAAA | 2001:db8:10::9 | ACTIVE | NONE | + +--------------------------------------+--------------------+------+-----------------------------------------------------------------------+--------+--------+ + + $ openstack server create --image cirros --flavor 42 \ + --nic port-id=04be331b-dc5e-410a-9103-9c8983aeb186 my_vm + +--------------------------------------+----------------------------------------------------------------+ + | Field | Value | + +--------------------------------------+----------------------------------------------------------------+ + | OS-DCF:diskConfig | MANUAL | + | OS-EXT-AZ:availability_zone | | + | OS-EXT-STS:power_state | 0 | + | OS-EXT-STS:task_state | scheduling | + | OS-EXT-STS:vm_state | building | + | OS-SRV-USG:launched_at | - | + | OS-SRV-USG:terminated_at | - | + | accessIPv4 | | + | accessIPv6 | | + | adminPass | TDc9EpBT3B9W | + | config_drive | | + | created | 2016-02-15T19:10:43Z | + | flavor | m1.nano (42) | + | hostId | | + | id | 62c19691-d1c7-4d7b-a88e-9cc4d95d4f41 | + | image | cirros-0.3.5-x86_64-uec (b9d981eb-d21c-4ce2-9dbc-dd38f3d9015f) | + | key_name | - | + | locked | False | + | metadata | {} | + | name | my_vm | + | os-extended-volumes:volumes_attached | [] | + | progress | 0 | + | security_groups | default | + | status | BUILD | + | tenant_id | d5660cb1e6934612a01b4fb2fb630725 | + | updated | 2016-02-15T19:10:43Z | + | user_id | 8bb6e578cba24e7db9d3810633124525 | + +--------------------------------------+----------------------------------------------------------------+ + + $ openstack server list + +--------------------------------------+-------+--------+------------+-------------+--------------------------------------+------------+ + | ID | Name | Status | Task State | Power State | Networks | Image Name | + +--------------------------------------+-------+--------+------------+-------------+--------------------------------------+------------+ + | 62c19691-d1c7-4d7b-a88e-9cc4d95d4f41 | my_vm | ACTIVE | - | Running | external=203.0.113.9, 2001:db8:10::9 | cirros | + +--------------------------------------+-------+--------+------------+-------------+--------------------------------------+------------+ + +In this example the port is created manually by the user and then used to boot +an instance. Notice that: + +* The port's data was visible in the DNS service as soon as it was created. +* See :ref:`config-dns-performance-considerations` for an explanation of + the potential performance impact associated with this use case. + +Following are the PTR records created for this example. Note that for +IPv4, the value of ipv4_ptr_zone_prefix_size is 24. In the case of IPv6, the +value of ipv6_ptr_zone_prefix_size is 116. + +.. code-block:: console + + $ openstack recordset list --all-projects 113.0.203.in-addr.arpa. + +--------------------------------------+----------------------------------+---------------------------+------+---------------------------------------------------------------------+--------+--------+ + | id | project_id | name | type | records | status | action | + +--------------------------------------+----------------------------------+---------------------------+------+---------------------------------------------------------------------+--------+--------+ + | 32f1c05b-7c5d-4230-9088-961a0a462d28 | 07224d17d76d42499a38f00ba4339710 | 113.0.203.in-addr.arpa. | SOA | ns1.devstack.org. admin.example.org. 1455563035 3600 600 86400 3600 | ACTIVE | NONE | + | 3d402c43-b215-4a75-a730-51cbb8999cb8 | 07224d17d76d42499a38f00ba4339710 | 113.0.203.in-addr.arpa. | NS | ns1.devstack.org. | ACTIVE | NONE | + | 8e4e618c-24b0-43db-ab06-91b741a91c10 | 07224d17d76d42499a38f00ba4339710 | 9.113.0.203.in-addr.arpa. | PTR | my-vm.example.org. | ACTIVE | NONE | + +--------------------------------------+----------------------------------+---------------------------+------+---------------------------------------------------------------------+--------+--------+ + + $ openstack recordset list --all-projects 0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.1.0.0.8.b.d.0.1.0.0.2.ip6.arpa. + +--------------------------------------+----------------------------------+---------------------------------------------------------------------------+------+---------------------------------------------------------------------+--------+--------+ + | id | project_id | name | type | records | status | action | + +--------------------------------------+----------------------------------+---------------------------------------------------------------------------+------+---------------------------------------------------------------------+--------+--------+ + | d8923354-13eb-4bd9-914a-0a2ae5f95989 | 07224d17d76d42499a38f00ba4339710 | 0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.1.0.0.8.b.d.0.1.0.0.2.ip6.arpa. | SOA | ns1.devstack.org. admin.example.org. 1455563036 3600 600 86400 3600 | ACTIVE | NONE | + | 72e60acd-098d-41ea-9771-5b6546c9c06f | 07224d17d76d42499a38f00ba4339710 | 0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.1.0.0.8.b.d.0.1.0.0.2.ip6.arpa. | NS | ns1.devstack.org. | ACTIVE | NONE | + | 877e0215-2ddf-4d01-a7da-47f1092dfd56 | 07224d17d76d42499a38f00ba4339710 | 9.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.1.0.0.8.b.d.0.1.0.0.2.ip6.arpa. | PTR | my-vm.example.org. | ACTIVE | NONE | + +--------------------------------------+----------------------------------+---------------------------------------------------------------------------+------+---------------------------------------------------------------------+--------+--------+ + +See :ref:`config-dns-int-ext-serv-net` for detailed instructions on how +to create the externally accessible network. + +Alternatively, if the ``dns_domain for ports`` extension has been configured, +the user can create a port specifying a non-blank value in its +``dns_domain`` attribute, as shown here: + +.. code-block:: console + + $ neutron port-create 37aaff3a-6047-45ac-bf4f-a825e56fd2b3 \ + --dns-name my-vm --dns_domain port-domain.org. + Created a new port: + +-----------------------+---------------------------------------------------------------------------------------+ + | Field | Value | + +-----------------------+---------------------------------------------------------------------------------------+ + | admin_state_up | True | + | allowed_address_pairs | | + | binding:vnic_type | normal | + | created_at | 2017-08-16T22:05:57Z | + | description | | + | device_id | | + | device_owner | | + | dns_assignment | {"hostname": "my-vm", "ip_address": "203.0.113.9", "fqdn": "my-vm.example.org."} | + | | {"hostname": "my-vm", "ip_address": "2001:db8:10::9", "fqdn": "my-vm.example.org."} | + | dns_domain | port-domain.org. | + | dns_name | my-vm | + | extra_dhcp_opts | | + | fixed_ips | {"subnet_id": "277eca5d-9869-474b-960e-6da5951d09f7", "ip_address": "203.0.113.9"} | + | | {"subnet_id": "eab47748-3f0a-4775-a09f-b0c24bb64bc4", "ip_address": "2001:db8:10::9"} | + | id | 422134a8-1088-458d-adbd-880863d8c07c | + | ip_allocation | immediate | + | mac_address | fa:16:3e:fb:d6:24 | + | name | | + | network_id | 37aaff3a-6047-45ac-bf4f-a825e56fd2b3 | + | port_security_enabled | True | + | project_id | d5660cb1e6934612a01b4fb2fb630725 | + | revision_number | 5 | + | security_groups | 07b21ad4-edb6-420b-bd76-9bb4aab0d135 | + | status | DOWN | + | tags | | + | tenant_id | d5660cb1e6934612a01b4fb2fb630725 | + | updated_at | 2017-08-16T22:05:58Z | + +-----------------------+---------------------------------------------------------------------------------------+ + +In this case, the port's ``dns_name`` (``my-vm``) will be published in the +``port-domain.org.`` zone, as shown here: + +.. code-block:: console + + $ openstack recordset list port-domain.org. + +--------------------------------------+-------------------------+------+-----------------------------------------------------------------------+--------+--------+ + | id | name | type | records | status | action | + +--------------------------------------+-------------------------+------+-----------------------------------------------------------------------+--------+--------+ + | 03e5a35b-d984-4d10-942a-2de8ccb9b941 | port-domain.org. | SOA | ns1.devstack.org. malavall.us.ibm.com. 1503272259 3549 600 86400 3600 | ACTIVE | NONE | + | d2dd1dfe-531d-4fea-8c0e-f5b559942ac5 | port-domain.org. | NS | ns1.devstack.org. | ACTIVE | NONE | + | 67a8e83d-7e3c-4fb1-9261-0481318bb7b5 | my-vm.port-domain.org. | A | 203.0.113.9 | ACTIVE | NONE | + | 5a4f671c-9969-47aa-82e1-e05754021852 | my-vm.port-domain.org. | AAAA | 2001:db8:10::9 | ACTIVE | NONE | + +--------------------------------------+-------------------------+------+-----------------------------------------------------------------------+--------+--------+ + +.. note:: + If both the port and its network have a valid non-blank string assigned to + their ``dns_domain`` attributes, the port's ``dns_domain`` takes precedence + over the network's. + +.. note:: + The name assigned to the port's ``dns_domain`` attribute must end with a + period (``.``). + +.. note:: + In the above example, the ``port-domain.org.`` zone must be created before + Neutron can publish any port data to it. + +.. _config-dns-performance-considerations: + +Performance considerations +-------------------------- + +Only for :ref:`config-dns-use-case-3`, if the port binding extension is +enabled in the Networking service, the Compute service will execute one +additional port update operation when allocating the port for the instance +during the boot process. This may have a noticeable adverse effect in the +performance of the boot process that should be evaluated before adoption of this +use case. + +.. _config-dns-int-ext-serv-net: + +Configuration of the externally accessible network for use case 3 +----------------------------------------------------------------- + +In :ref:`config-dns-use-case-3`, the externally accessible network must +meet the following requirements: + +* The network may not have attribute ``router:external`` set to ``True``. +* The network type can be FLAT, VLAN, GRE, VXLAN or GENEVE. +* For network types VLAN, GRE, VXLAN or GENEVE, the segmentation ID must be + outside the ranges assigned to project networks. + +This usually implies that this use case only works for networks specifically +created for this purpose by an admin, it does not work for networks +which tenants can create. diff -Nru neutron-12.0.0/doc/source/admin/config-dns-int.rst neutron-12.0.1/doc/source/admin/config-dns-int.rst --- neutron-12.0.0/doc/source/admin/config-dns-int.rst 2018-02-28 11:30:39.000000000 +0000 +++ neutron-12.0.1/doc/source/admin/config-dns-int.rst 2018-03-29 17:33:08.000000000 +0000 @@ -215,734 +215,3 @@ must be equal to the value that Compute service will assign to the instance's ``hostname``, in this example ``my-vm``. Otherwise, the instance boot will fail. - -Integration with an external DNS service -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -Users can also integrate the Networking and Compute services with an external -DNS. To accomplish this, the users have to: - -#. Enable the functionality described in - :ref:`config-dns-int-dns-resolution`. -#. Configure an external DNS driver. The Networking service provides a driver - reference implementation based on the OpenStack DNS service. It is expected - that third party vendors will provide other implementations in the future. - For detailed configuration instructions, see - :ref:`config-dns-int-ext-serv`. - -Once the ``neutron-server`` has been configured and restarted, users will have -functionality that covers three use cases, described in the following sections. -In each of the use cases described below: - -* The examples assume the OpenStack DNS service as the external DNS. -* A, AAAA and PTR records will be created in the DNS service. -* Before executing any of the use cases, the user must create in the DNS - service under his project a DNS zone where the A and AAAA records will be - created. For the description of the use cases below, it is assumed the zone - ``example.org.`` was created previously. -* The PTR records will be created in zones owned by a project with admin - privileges. See :ref:`config-dns-int-ext-serv` for more details. - -.. _config-dns-use-case-1: - -Use case 1: Ports are published directly in the external DNS service --------------------------------------------------------------------- - -In this case, the user is creating ports or booting instances on a network -that is accessible externally. If the user wants to publish a port in the -external DNS service in a zone specified by the ``dns_domain`` attribute of the -network, these are the steps to be taken: - -#. Assign a valid domain name to the network's ``dns_domain`` attribute. This - name must end with a period (``.``). -#. Boot an instance specifying the externally accessible network. - Alternatively, create a port on the externally accessible network specifying - a valid value to its ``dns_name`` attribute. If the port is going to be used - for an instance boot, the value assigned to ``dns_name`` must be equal to - the ``hostname`` that the Compute service will assign to the instance. - Otherwise, the boot will fail. - -Once these steps are executed, the port's DNS data will be published in the -external DNS service. This is an example: - -.. code-block:: console - - $ neutron net-list - +--------------------------------------+----------+----------------------------------------------------------+ - | id | name | subnets | - +--------------------------------------+----------+----------------------------------------------------------+ - | 41fa3995-9e4a-4cd9-bb51-3e5424f2ff2a | public | a67cfdf7-9d5d-406f-8a19-3f38e4fc3e74 | - | | | cbd8c6dc-ca81-457e-9c5d-f8ece7ef67f8 | - | 37aaff3a-6047-45ac-bf4f-a825e56fd2b3 | external | 277eca5d-9869-474b-960e-6da5951d09f7 203.0.113.0/24 | - | | | eab47748-3f0a-4775-a09f-b0c24bb64bc4 2001:db8:10::/64 | - | bf2802a0-99a0-4e8c-91e4-107d03f158ea | my-net | 6141b474-56cd-430f-b731-71660bb79b79 192.0.2.64/26 | - | 38c5e950-b450-4c30-83d4-ee181c28aad3 | private | 43414c53-62ae-49bc-aa6c-c9dd7705818a fda4:653e:71b0::/64 | - | | | 5b9282a1-0be1-4ade-b478-7868ad2a16ff 192.0.2.0/26 | - +--------------------------------------+----------+----------------------------------------------------------+ - - $ neutron net-update 37aaff3a-6047-45ac-bf4f-a825e56fd2b3 --dns_domain example.org. - Updated network: 37aaff3a-6047-45ac-bf4f-a825e56fd2b3 - - $ neutron net-show 37aaff3a-6047-45ac-bf4f-a825e56fd2b3 - +---------------------------+--------------------------------------+ - | Field | Value | - +---------------------------+--------------------------------------+ - | admin_state_up | True | - | availability_zone_hints | | - | availability_zones | nova | - | dns_domain | example.org. | - | id | 37aaff3a-6047-45ac-bf4f-a825e56fd2b3 | - | mtu | 1450 | - | name | external | - | port_security_enabled | True | - | provider:network_type | vlan | - | provider:physical_network | | - | provider:segmentation_id | 2016 | - | revision_number | 4 | - | router:external | False | - | shared | True | - | status | ACTIVE | - | subnets | eab47748-3f0a-4775-a09f-b0c24bb64bc4 | - | | 277eca5d-9869-474b-960e-6da5951d09f7 | - | tags | [] | - | tenant_id | 04fc2f83966245dba907efb783f8eab9 | - +---------------------------+--------------------------------------+ - - $ designate record-list example.org. - +--------------------------------------+------+--------------+-----------------------------------------------------------------------+ - | id | type | name | data | - +--------------------------------------+------+--------------+-----------------------------------------------------------------------+ - | 10a36008-6ecf-47c3-b321-05652a929b04 | SOA | example.org. | ns1.devstack.org. malavall.us.ibm.com. 1454729414 3600 600 86400 3600 | - | 56ca0b88-e343-4c98-8faa-19746e169baf | NS | example.org. | ns1.devstack.org. | - +--------------------------------------+------+--------------+-----------------------------------------------------------------------+ - - $ neutron port-create 37aaff3a-6047-45ac-bf4f-a825e56fd2b3 --dns_name my-vm - Created a new port: - +-----------------------+---------------------------------------------------------------------------------------+ - | Field | Value | - +-----------------------+---------------------------------------------------------------------------------------+ - | admin_state_up | True | - | allowed_address_pairs | | - | binding:vnic_type | normal | - | device_id | | - | device_owner | | - | dns_assignment | {"hostname": "my-vm", "ip_address": "203.0.113.9", "fqdn": "my-vm.example.org."} | - | | {"hostname": "my-vm", "ip_address": "2001:db8:10::9", "fqdn": "my-vm.example.org."} | - | dns_name | my-vm | - | fixed_ips | {"subnet_id": "277eca5d-9869-474b-960e-6da5951d09f7", "ip_address": "203.0.113.9"} | - | | {"subnet_id": "eab47748-3f0a-4775-a09f-b0c24bb64bc4", "ip_address": "2001:db8:10::9"} | - | id | 04be331b-dc5e-410a-9103-9c8983aeb186 | - | mac_address | fa:16:3e:0f:4b:e4 | - | name | | - | network_id | 37aaff3a-6047-45ac-bf4f-a825e56fd2b3 | - | port_security_enabled | True | - | revision_number | 1 | - | security_groups | 1f0ddd73-7e3c-48bd-a64c-7ded4fe0e635 | - | status | DOWN | - | tags | [] | - | tenant_id | d5660cb1e6934612a01b4fb2fb630725 | - +-----------------------+---------------------------------------------------------------------------------------+ - - $ designate record-list example.org. - +--------------------------------------+------+--------------------+-----------------------------------------------------------------------+ - | id | type | name | data | - +--------------------------------------+------+--------------------+-----------------------------------------------------------------------+ - | 10a36008-6ecf-47c3-b321-05652a929b04 | SOA | example.org. | ns1.devstack.org. malavall.us.ibm.com. 1455563035 3600 600 86400 3600 | - | 56ca0b88-e343-4c98-8faa-19746e169baf | NS | example.org. | ns1.devstack.org. | - | 3593591b-181f-4beb-9ab7-67fad7413b37 | A | my-vm.example.org. | 203.0.113.9 | - | 5649c68f-7a88-48f5-9f87-ccb1f6ae67ca | AAAA | my-vm.example.org. | 2001:db8:10::9 | - +--------------------------------------+------+--------------------+-----------------------------------------------------------------------+ - - $ openstack server create --image cirros --flavor 42 \ - --nic port-id=04be331b-dc5e-410a-9103-9c8983aeb186 my_vm - +--------------------------------------+----------------------------------------------------------------+ - | Field | Value | - +--------------------------------------+----------------------------------------------------------------+ - | OS-DCF:diskConfig | MANUAL | - | OS-EXT-AZ:availability_zone | | - | OS-EXT-STS:power_state | 0 | - | OS-EXT-STS:task_state | scheduling | - | OS-EXT-STS:vm_state | building | - | OS-SRV-USG:launched_at | - | - | OS-SRV-USG:terminated_at | - | - | accessIPv4 | | - | accessIPv6 | | - | adminPass | TDc9EpBT3B9W | - | config_drive | | - | created | 2016-02-15T19:10:43Z | - | flavor | m1.nano (42) | - | hostId | | - | id | 62c19691-d1c7-4d7b-a88e-9cc4d95d4f41 | - | image | cirros-0.3.5-x86_64-uec (b9d981eb-d21c-4ce2-9dbc-dd38f3d9015f) | - | key_name | - | - | locked | False | - | metadata | {} | - | name | my_vm | - | os-extended-volumes:volumes_attached | [] | - | progress | 0 | - | security_groups | default | - | status | BUILD | - | tenant_id | d5660cb1e6934612a01b4fb2fb630725 | - | updated | 2016-02-15T19:10:43Z | - | user_id | 8bb6e578cba24e7db9d3810633124525 | - +--------------------------------------+----------------------------------------------------------------+ - - $ openstack server list - +--------------------------------------+-------+--------+------------+-------------+--------------------------------------+------------+ - | ID | Name | Status | Task State | Power State | Networks | Image Name | - +--------------------------------------+-------+--------+------------+-------------+--------------------------------------+------------+ - | 62c19691-d1c7-4d7b-a88e-9cc4d95d4f41 | my_vm | ACTIVE | - | Running | external=203.0.113.9, 2001:db8:10::9 | cirros | - +--------------------------------------+-------+--------+------------+-------------+--------------------------------------+------------+ - -In this example the port is created manually by the user and then used to boot -an instance. Notice that: - -* The port's data was visible in the DNS service as soon as it was created. -* See :ref:`config-dns-performance-considerations` for an explanation of - the potential performance impact associated with this use case. - -Following are the PTR records created for this example. Note that for -IPv4, the value of ipv4_ptr_zone_prefix_size is 24. In the case of IPv6, the -value of ipv6_ptr_zone_prefix_size is 116. For more details, see -:ref:`config-dns-int-ext-serv`: - -.. code-block:: console - - $ designate record-list 113.0.203.in-addr.arpa. - +--------------------------------------+------+---------------------------+---------------------------------------------------------------------+ - | id | type | name | data | - +--------------------------------------+------+---------------------------+---------------------------------------------------------------------+ - | ab7ada72-7e64-4bed-913e-04718a80fafc | NS | 113.0.203.in-addr.arpa. | ns1.devstack.org. | - | 28346a94-790c-4ae1-9f7b-069d98d9efbd | SOA | 113.0.203.in-addr.arpa. | ns1.devstack.org. admin.example.org. 1455563035 3600 600 86400 3600 | - | cfcaf537-844a-4c1b-9b5f-464ff07dca33 | PTR | 9.113.0.203.in-addr.arpa. | my-vm.example.org. | - +--------------------------------------+------+---------------------------+---------------------------------------------------------------------+ - - $ designate record-list 0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.1.0.0.8.b.d.0.1.0.0.2.ip6.arpa. - +--------------------------------------+------+---------------------------------------------------------------------------+---------------------------------------------------------------------+ - | id | type | name | data | - +--------------------------------------+------+---------------------------------------------------------------------------+---------------------------------------------------------------------+ - | d8923354-13eb-4bd9-914a-0a2ae5f95989 | SOA | 0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.1.0.0.8.b.d.0.1.0.0.2.ip6.arpa. | ns1.devstack.org. admin.example.org. 1455563036 3600 600 86400 3600 | - | 72e60acd-098d-41ea-9771-5b6546c9c06f | NS | 0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.1.0.0.8.b.d.0.1.0.0.2.ip6.arpa. | ns1.devstack.org. | - | 877e0215-2ddf-4d01-a7da-47f1092dfd56 | PTR | 9.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.1.0.0.8.b.d.0.1.0.0.2.ip6.arpa. | my-vm.example.org. | - +--------------------------------------+------+---------------------------------------------------------------------------+---------------------------------------------------------------------+ - -See :ref:`config-dns-int-ext-serv` for detailed instructions on how -to create the externally accessible network. - -Alternatively, if the ``dns_domain for ports`` extension has been configured, -the user can create a port specifying a non-blank value in its -``dns_domain`` attribute, as shown here: - -.. code-block:: console - - $ neutron port-create 37aaff3a-6047-45ac-bf4f-a825e56fd2b3 \ - --dns-name my-vm --dns_domain port-domain.org. - Created a new port: - +-----------------------+---------------------------------------------------------------------------------------+ - | Field | Value | - +-----------------------+---------------------------------------------------------------------------------------+ - | admin_state_up | True | - | allowed_address_pairs | | - | binding:vnic_type | normal | - | created_at | 2017-08-16T22:05:57Z | - | description | | - | device_id | | - | device_owner | | - | dns_assignment | {"hostname": "my-vm", "ip_address": "203.0.113.9", "fqdn": "my-vm.example.org."} | - | | {"hostname": "my-vm", "ip_address": "2001:db8:10::9", "fqdn": "my-vm.example.org."} | - | dns_domain | port-domain.org. | - | dns_name | my-vm | - | extra_dhcp_opts | | - | fixed_ips | {"subnet_id": "277eca5d-9869-474b-960e-6da5951d09f7", "ip_address": "203.0.113.9"} | - | | {"subnet_id": "eab47748-3f0a-4775-a09f-b0c24bb64bc4", "ip_address": "2001:db8:10::9"} | - | id | 422134a8-1088-458d-adbd-880863d8c07c | - | ip_allocation | immediate | - | mac_address | fa:16:3e:fb:d6:24 | - | name | | - | network_id | 37aaff3a-6047-45ac-bf4f-a825e56fd2b3 | - | port_security_enabled | True | - | project_id | d5660cb1e6934612a01b4fb2fb630725 | - | revision_number | 5 | - | security_groups | 07b21ad4-edb6-420b-bd76-9bb4aab0d135 | - | status | DOWN | - | tags | | - | tenant_id | d5660cb1e6934612a01b4fb2fb630725 | - | updated_at | 2017-08-16T22:05:58Z | - +-----------------------+---------------------------------------------------------------------------------------+ - -In this case, the port's ``dns_name`` (``my-vm``) will be published in the -``port-domain.org.`` zone, as shown here: - -.. code-block:: console - - $ designate record-list port-domain.org. - +--------------------------------------+------+-------------------------+-----------------------------------------------------------------------+ - | id | type | name | data | - +--------------------------------------+------+-------------------------+-----------------------------------------------------------------------+ - | 03e5a35b-d984-4d10-942a-2de8ccb9b941 | SOA | port-domain.org. | ns1.devstack.org. malavall.us.ibm.com. 1503272259 3549 600 86400 3600 | - | d2dd1dfe-531d-4fea-8c0e-f5b559942ac5 | NS | port-domain.org. | ns1.devstack.org. | - | 67a8e83d-7e3c-4fb1-9261-0481318bb7b5 | A | my-vm.port-domain.org. | 203.0.113.9 | - | 5a4f671c-9969-47aa-82e1-e05754021852 | AAAA | my-vm.port-domain.org. | 2001:db8:10::9 | - +--------------------------------------+------+-------------------------+-----------------------------------------------------------------------+ - -.. note:: - If both the port and its network have a valid non-blank string assigned to - their ``dns_domain`` attributes, the port's ``dns_domain`` takes precedence - over the network's. - -.. note:: - The name assigned to the port's ``dns_domain`` attribute must end with a - period (``.``). - -.. note:: - In the above example, the ``port-domain.org.`` zone must be created before - Neutron can publish any port data to it. - -Use case 2: Floating IPs are published with associated port DNS attributes --------------------------------------------------------------------------- - -In this use case, the address of a floating IP is published in the external -DNS service in conjunction with the ``dns_name`` of its associated port and the -``dns_domain`` of the port's network. The steps to execute in this use case are -the following: - -#. Assign a valid domain name to the network's ``dns_domain`` attribute. This - name must end with a period (``.``). -#. Boot an instance or alternatively, create a port specifying a valid value to - its ``dns_name`` attribute. If the port is going to be used for an instance - boot, the value assigned to ``dns_name`` must be equal to the ``hostname`` - that the Compute service will assign to the instance. Otherwise, the boot - will fail. -#. Create a floating IP and associate it to the port. - -Following is an example of these steps: - -.. code-block:: console - - $ neutron net-update 38c5e950-b450-4c30-83d4-ee181c28aad3 --dns_domain example.org. - Updated network: 38c5e950-b450-4c30-83d4-ee181c28aad3 - - $ neutron net-show 38c5e950-b450-4c30-83d4-ee181c28aad3 - +-------------------------+--------------------------------------+ - | Field | Value | - +-------------------------+--------------------------------------+ - | admin_state_up | True | - | availability_zone_hints | | - | availability_zones | nova | - | dns_domain | example.org. | - | id | 38c5e950-b450-4c30-83d4-ee181c28aad3 | - | mtu | 1450 | - | name | private | - | port_security_enabled | True | - | revision_number | 1 | - | router:external | False | - | shared | False | - | status | ACTIVE | - | subnets | 43414c53-62ae-49bc-aa6c-c9dd7705818a | - | | 5b9282a1-0be1-4ade-b478-7868ad2a16ff | - | tags | [] | - | tenant_id | d5660cb1e6934612a01b4fb2fb630725 | - +-------------------------+--------------------------------------+ - - $ openstack server create --image cirros --flavor 42 \ - --nic net-id=38c5e950-b450-4c30-83d4-ee181c28aad3 my_vm - +--------------------------------------+----------------------------------------------------------------+ - | Field | Value | - +--------------------------------------+----------------------------------------------------------------+ - | OS-DCF:diskConfig | MANUAL | - | OS-EXT-AZ:availability_zone | | - | OS-EXT-STS:power_state | 0 | - | OS-EXT-STS:task_state | scheduling | - | OS-EXT-STS:vm_state | building | - | OS-SRV-USG:launched_at | - | - | OS-SRV-USG:terminated_at | - | - | accessIPv4 | | - | accessIPv6 | | - | adminPass | oTLQLR3Kezmt | - | config_drive | | - | created | 2016-02-15T19:27:34Z | - | flavor | m1.nano (42) | - | hostId | | - | id | 43f328bb-b2d1-4cf1-a36f-3b2593397cb1 | - | image | cirros-0.3.5-x86_64-uec (b9d981eb-d21c-4ce2-9dbc-dd38f3d9015f) | - | key_name | - | - | locked | False | - | metadata | {} | - | name | my_vm | - | os-extended-volumes:volumes_attached | [] | - | progress | 0 | - | security_groups | default | - | status | BUILD | - | tenant_id | d5660cb1e6934612a01b4fb2fb630725 | - | updated | 2016-02-15T19:27:34Z | - | user_id | 8bb6e578cba24e7db9d3810633124525 | - +--------------------------------------+----------------------------------------------------------------+ - - $ openstack server list - +--------------------------------------+-------+--------+------------+-------------+----------------------------------------------------------+------------+ - | ID | Name | Status | Task State | Power State | Networks | Image Name | - +--------------------------------------+-------+--------+------------+-------------+----------------------------------------------------------+------------+ - | 43f328bb-b2d1-4cf1-a36f-3b2593397cb1 | my_vm | ACTIVE | - | Running | private=fda4:653e:71b0:0:f816:3eff:fe16:b5f2, 192.0.2.15 | cirros | - +--------------------------------------+-------+--------+------------+-------------+----------------------------------------------------------+------------+ - - $ neutron port-list --device_id 43f328bb-b2d1-4cf1-a36f-3b2593397cb1 - +--------------------------------------+------+-------------------+-------------------------------------------------------------------------------------------------------------+ - | id | name | mac_address | fixed_ips | - +--------------------------------------+------+-------------------+-------------------------------------------------------------------------------------------------------------+ - | da0b1f75-c895-460f-9fc1-4d6ec84cf85f | | fa:16:3e:16:b5:f2 | {"subnet_id": "5b9282a1-0be1-4ade-b478-7868ad2a16ff", "ip_address": "192.0.2.15"} | - | | | | {"subnet_id": "43414c53-62ae-49bc-aa6c-c9dd7705818a", "ip_address": "fda4:653e:71b0:0:f816:3eff:fe16:b5f2"} | - +--------------------------------------+------+-------------------+-------------------------------------------------------------------------------------------------------------+ - - $ neutron port-show da0b1f75-c895-460f-9fc1-4d6ec84cf85f - +-----------------------+-------------------------------------------------------------------------------------------------------------+ - | Field | Value | - +-----------------------+-------------------------------------------------------------------------------------------------------------+ - | admin_state_up | True | - | allowed_address_pairs | | - | binding:vnic_type | normal | - | device_id | 43f328bb-b2d1-4cf1-a36f-3b2593397cb1 | - | device_owner | compute:None | - | dns_assignment | {"hostname": "my-vm", "ip_address": "192.0.2.15", "fqdn": "my-vm.example.org."} | - | | {"hostname": "my-vm", "ip_address": "fda4:653e:71b0:0:f816:3eff:fe16:b5f2", "fqdn": "my-vm.example.org."} | - | dns_name | my-vm | - | extra_dhcp_opts | | - | fixed_ips | {"subnet_id": "5b9282a1-0be1-4ade-b478-7868ad2a16ff", "ip_address": "192.0.2.15"} | - | | {"subnet_id": "43414c53-62ae-49bc-aa6c-c9dd7705818a", "ip_address": "fda4:653e:71b0:0:f816:3eff:fe16:b5f2"} | - | id | da0b1f75-c895-460f-9fc1-4d6ec84cf85f | - | mac_address | fa:16:3e:16:b5:f2 | - | name | | - | network_id | 38c5e950-b450-4c30-83d4-ee181c28aad3 | - | port_security_enabled | True | - | revision_number | 1 | - | security_groups | 1f0ddd73-7e3c-48bd-a64c-7ded4fe0e635 | - | status | ACTIVE | - | tags | [] | - | tenant_id | d5660cb1e6934612a01b4fb2fb630725 | - +-----------------------+-------------------------------------------------------------------------------------------------------------+ - - $ designate record-list example.org. - +--------------------------------------+------+--------------+-----------------------------------------------------------------------+ - | id | type | name | data | - +--------------------------------------+------+--------------+-----------------------------------------------------------------------+ - | 10a36008-6ecf-47c3-b321-05652a929b04 | SOA | example.org. | ns1.devstack.org. malavall.us.ibm.com. 1455563783 3600 600 86400 3600 | - | 56ca0b88-e343-4c98-8faa-19746e169baf | NS | example.org. | ns1.devstack.org. | - +--------------------------------------+------+--------------+-----------------------------------------------------------------------+ - - $ neutron floatingip-create 41fa3995-9e4a-4cd9-bb51-3e5424f2ff2a \ - --port_id da0b1f75-c895-460f-9fc1-4d6ec84cf85f - Created a new floatingip: - +---------------------+--------------------------------------+ - | Field | Value | - +---------------------+--------------------------------------+ - | dns_domain | | - | dns_name | | - | fixed_ip_address | 192.0.2.15 | - | floating_ip_address | 198.51.100.4 | - | floating_network_id | 41fa3995-9e4a-4cd9-bb51-3e5424f2ff2a | - | id | e78f6eb1-a35f-4a90-941d-87c888d5fcc7 | - | port_id | da0b1f75-c895-460f-9fc1-4d6ec84cf85f | - | revision_number | 1 | - | router_id | 970ebe83-c4a3-4642-810e-43ab7b0c2b5f | - | status | DOWN | - | tags | [] | - | tenant_id | d5660cb1e6934612a01b4fb2fb630725 | - +---------------------+--------------------------------------+ - - $ designate record-list example.org. - +--------------------------------------+------+--------------------+-----------------------------------------------------------------------+ - | id | type | name | data | - +--------------------------------------+------+--------------------+-----------------------------------------------------------------------+ - | 10a36008-6ecf-47c3-b321-05652a929b04 | SOA | example.org. | ns1.devstack.org. malavall.us.ibm.com. 1455564861 3600 600 86400 3600 | - | 56ca0b88-e343-4c98-8faa-19746e169baf | NS | example.org. | ns1.devstack.org. | - | 5ff53fd0-3746-48da-b9c9-77ed3004ec67 | A | my-vm.example.org. | 198.51.100.4 | - +--------------------------------------+------+--------------------+-----------------------------------------------------------------------+ - -In this example, notice that the data is published in the DNS service when the -floating IP is associated to the port. - -Following are the PTR records created for this example. Note that for -IPv4, the value of ``ipv4_ptr_zone_prefix_size`` is 24. For more details, see -:ref:`config-dns-int-ext-serv`: - -.. code-block:: console - - $ designate record-list 100.51.198.in-addr.arpa. - +--------------------------------------+------+----------------------------+---------------------------------------------------------------------+ - | id | type | name | data | - +--------------------------------------+------+----------------------------+---------------------------------------------------------------------+ - | 2dd0b894-25fa-4563-9d32-9f13bd67f329 | NS | 100.51.198.in-addr.arpa. | ns1.devstack.org. | - | 47b920f1-5eff-4dfa-9616-7cb5b7cb7ca6 | SOA | 100.51.198.in-addr.arpa. | ns1.devstack.org. admin.example.org. 1455564862 3600 600 86400 3600 | - | fb1edf42-abba-410c-8397-831f45fd0cd7 | PTR | 4.100.51.198.in-addr.arpa. | my-vm.example.org. | - +--------------------------------------+------+----------------------------+---------------------------------------------------------------------+ - - -Use case 3: Floating IPs are published in the external DNS service ------------------------------------------------------------------- - -In this use case, the user assigns ``dns_name`` and ``dns_domain`` attributes -to a floating IP when it is created. The floating IP data becomes visible in -the external DNS service as soon as it is created. The floating IP can be -associated with a port on creation or later on. The following example shows a -user booting an instance and then creating a floating IP associated to the port -allocated for the instance: - -.. code-block:: console - - $ neutron net-show 38c5e950-b450-4c30-83d4-ee181c28aad3 - +-------------------------+--------------------------------------+ - | Field | Value | - +-------------------------+--------------------------------------+ - | admin_state_up | True | - | availability_zone_hints | | - | availability_zones | nova | - | dns_domain | example.org. | - | id | 38c5e950-b450-4c30-83d4-ee181c28aad3 | - | mtu | 1450 | - | name | private | - | port_security_enabled | True | - | revision_number | 1 | - | router:external | False | - | shared | False | - | status | ACTIVE | - | subnets | 43414c53-62ae-49bc-aa6c-c9dd7705818a | - | | 5b9282a1-0be1-4ade-b478-7868ad2a16ff | - | tags | [] | - | tenant_id | d5660cb1e6934612a01b4fb2fb630725 | - +-------------------------+--------------------------------------+ - - $ openstack server create --image cirros --flavor 42 \ - --nic net-id=38c5e950-b450-4c30-83d4-ee181c28aad3 my_vm - +--------------------------------------+----------------------------------------------------------------+ - | Field | Value | - +--------------------------------------+----------------------------------------------------------------+ - | OS-DCF:diskConfig | MANUAL | - | OS-EXT-AZ:availability_zone | | - | OS-EXT-STS:power_state | 0 | - | OS-EXT-STS:task_state | scheduling | - | OS-EXT-STS:vm_state | building | - | OS-SRV-USG:launched_at | - | - | OS-SRV-USG:terminated_at | - | - | accessIPv4 | | - | accessIPv6 | | - | adminPass | HLXGznYqXM4J | - | config_drive | | - | created | 2016-02-15T19:42:44Z | - | flavor | m1.nano (42) | - | hostId | | - | id | 71fb4ac8-eed8-4644-8113-0641962bb125 | - | image | cirros-0.3.5-x86_64-uec (b9d981eb-d21c-4ce2-9dbc-dd38f3d9015f) | - | key_name | - | - | locked | False | - | metadata | {} | - | name | my_vm | - | os-extended-volumes:volumes_attached | [] | - | progress | 0 | - | security_groups | default | - | status | BUILD | - | tenant_id | d5660cb1e6934612a01b4fb2fb630725 | - | updated | 2016-02-15T19:42:44Z | - | user_id | 8bb6e578cba24e7db9d3810633124525 | - +--------------------------------------+----------------------------------------------------------------+ - - $ openstack server list - +--------------------------------------+-------+--------+------------+-------------+----------------------------------------------------------+------------+ - | ID | Name | Status | Task State | Power State | Networks | Image Name | - +--------------------------------------+-------+--------+------------+-------------+----------------------------------------------------------+------------+ - | 71fb4ac8-eed8-4644-8113-0641962bb125 | my_vm | ACTIVE | - | Running | private=fda4:653e:71b0:0:f816:3eff:fe24:8614, 192.0.2.16 | cirros | - +--------------------------------------+-------+--------+------------+-------------+----------------------------------------------------------+------------+ - - $ neutron port-list --device_id 71fb4ac8-eed8-4644-8113-0641962bb125 - +--------------------------------------+------+-------------------+-------------------------------------------------------------------------------------------------------------+ - | id | name | mac_address | fixed_ips | - +--------------------------------------+------+-------------------+-------------------------------------------------------------------------------------------------------------+ - | 1e7033fb-8e9d-458b-89ed-8312cafcfdcb | | fa:16:3e:24:86:14 | {"subnet_id": "5b9282a1-0be1-4ade-b478-7868ad2a16ff", "ip_address": "192.0.2.16"} | - | | | | {"subnet_id": "43414c53-62ae-49bc-aa6c-c9dd7705818a", "ip_address": "fda4:653e:71b0:0:f816:3eff:fe24:8614"} | - +--------------------------------------+------+-------------------+-------------------------------------------------------------------------------------------------------------+ - - $ neutron port-show 1e7033fb-8e9d-458b-89ed-8312cafcfdcb - +-----------------------+-------------------------------------------------------------------------------------------------------------+ - | Field | Value | - +-----------------------+-------------------------------------------------------------------------------------------------------------+ - | admin_state_up | True | - | allowed_address_pairs | | - | binding:vnic_type | normal | - | device_id | 71fb4ac8-eed8-4644-8113-0641962bb125 | - | device_owner | compute:None | - | dns_assignment | {"hostname": "my-vm", "ip_address": "192.0.2.16", "fqdn": "my-vm.example.org."} | - | | {"hostname": "my-vm", "ip_address": "fda4:653e:71b0:0:f816:3eff:fe24:8614", "fqdn": "my-vm.example.org."} | - | dns_name | my-vm | - | extra_dhcp_opts | | - | fixed_ips | {"subnet_id": "5b9282a1-0be1-4ade-b478-7868ad2a16ff", "ip_address": "192.0.2.16"} | - | | {"subnet_id": "43414c53-62ae-49bc-aa6c-c9dd7705818a", "ip_address": "fda4:653e:71b0:0:f816:3eff:fe24:8614"} | - | id | 1e7033fb-8e9d-458b-89ed-8312cafcfdcb | - | mac_address | fa:16:3e:24:86:14 | - | name | | - | network_id | 38c5e950-b450-4c30-83d4-ee181c28aad3 | - | port_security_enabled | True | - | revision_number | 1 | - | security_groups | 1f0ddd73-7e3c-48bd-a64c-7ded4fe0e635 | - | status | ACTIVE | - | tags | [] | - | tenant_id | d5660cb1e6934612a01b4fb2fb630725 | - +-----------------------+-------------------------------------------------------------------------------------------------------------+ - - $ designate record-list example.org. - +--------------------------------------+------+--------------+-----------------------------------------------------------------------+ - | id | type | name | data | - +--------------------------------------+------+--------------+-----------------------------------------------------------------------+ - | 10a36008-6ecf-47c3-b321-05652a929b04 | SOA | example.org. | ns1.devstack.org. malavall.us.ibm.com. 1455565110 3600 600 86400 3600 | - | 56ca0b88-e343-4c98-8faa-19746e169baf | NS | example.org. | ns1.devstack.org. | - +--------------------------------------+------+--------------+-----------------------------------------------------------------------+ - - $ neutron floatingip-create 41fa3995-9e4a-4cd9-bb51-3e5424f2ff2a \ - --dns_domain example.org. --dns_name my-floatingip - Created a new floatingip: - +---------------------+--------------------------------------+ - | Field | Value | - +---------------------+--------------------------------------+ - | dns_domain | example.org. | - | dns_name | my-floatingip | - | fixed_ip_address | | - | floating_ip_address | 198.51.100.5 | - | floating_network_id | 41fa3995-9e4a-4cd9-bb51-3e5424f2ff2a | - | id | 9f23a9c6-eceb-42eb-9f45-beb58c473728 | - | port_id | | - | revision_number | 1 | - | router_id | | - | status | DOWN | - | tags | [] | - | tenant_id | d5660cb1e6934612a01b4fb2fb630725 | - +---------------------+--------------------------------------+ - - $ designate record-list example.org. - +--------------------------------------+------+----------------------------+-----------------------------------------------------------------------+ - | id | type | name | data | - +--------------------------------------+------+----------------------------+-----------------------------------------------------------------------+ - | 10a36008-6ecf-47c3-b321-05652a929b04 | SOA | example.org. | ns1.devstack.org. malavall.us.ibm.com. 1455566486 3600 600 86400 3600 | - | 56ca0b88-e343-4c98-8faa-19746e169baf | NS | example.org. | ns1.devstack.org. | - | 8884c56f-3ef5-446e-ae4d-8053cc8bc2b4 | A | my-floatingip.example.org. | 198.51.100.53 | - +--------------------------------------+------+----------------------------+-----------------------------------------------------------------------+ - -Note that in this use case: - -* The ``dns_name`` and ``dns_domain`` attributes of a floating IP must be - specified together on creation. They cannot be assigned to the floating IP - separately. -* The ``dns_name`` and ``dns_domain`` of a floating IP have precedence, for - purposes of being published in the external DNS service, over the - ``dns_name`` of its associated port and the ``dns_domain`` of the port's - network, whether they are specified or not. Only the ``dns_name`` and the - ``dns_domain`` of the floating IP are published in the external DNS service. - -Following are the PTR records created for this example. Note that for -IPv4, the value of ipv4_ptr_zone_prefix_size is 24. For more details, see -:ref:`config-dns-int-ext-serv`: - -.. code-block:: console - - $ designate record-list 100.51.198.in-addr.arpa. - +--------------------------------------+------+----------------------------+---------------------------------------------------------------------+ - | id | type | name | data | - +--------------------------------------+------+----------------------------+---------------------------------------------------------------------+ - | 2dd0b894-25fa-4563-9d32-9f13bd67f329 | NS | 100.51.198.in-addr.arpa. | ns1.devstack.org. | - | 47b920f1-5eff-4dfa-9616-7cb5b7cb7ca6 | SOA | 100.51.198.in-addr.arpa. | ns1.devstack.org. admin.example.org. 1455566487 3600 600 86400 3600 | - | 589a0171-e77a-4ab6-ba6e-23114f2b9366 | PTR | 5.100.51.198.in-addr.arpa. | my-floatingip.example.org. | - +--------------------------------------+------+----------------------------+---------------------------------------------------------------------+ - -.. _config-dns-performance-considerations: - -Performance considerations --------------------------- - -Only for :ref:`config-dns-use-case-1`, if the port binding extension is -enabled in the Networking service, the Compute service will execute one -additional port update operation when allocating the port for the instance -during the boot process. This may have a noticeable adverse effect in the -performance of the boot process that must be evaluated before adoption of this -use case. - -.. _config-dns-int-ext-serv: - -Configuring OpenStack Networking for integration with an external DNS service ------------------------------------------------------------------------------ - -The first step to configure the integration with an external DNS service is to -enable the functionality described in :ref:`config-dns-int-dns-resolution`. -Once this is done, the user has to take the following steps and restart -``neutron-server``. - -#. Edit the ``[default]`` section of ``/etc/neutron/neutron.conf`` and specify - the external DNS service driver to be used in parameter - ``external_dns_driver``. The valid options are defined in namespace - ``neutron.services.external_dns_drivers``. The following example shows how - to set up the driver for the OpenStack DNS service: - - .. code-block:: console - - external_dns_driver = designate - -#. If the OpenStack DNS service is the target external DNS, the ``[designate]`` - section of ``/etc/neutron/neutron.conf`` must define the following - parameters: - - * ``url``: the OpenStack DNS service public endpoint URL. - * ``allow_reverse_dns_lookup``: a boolean value specifying whether to enable - or not the creation of reverse lookup (PTR) records. - * ``admin_auth_url``: the Identity service admin authorization endpoint url. - This endpoint will be used by the Networking service to authenticate as an - admin user to create and update reverse lookup (PTR) zones. - * ``admin_username``: the admin user to be used by the Networking service to - create and update reverse lookup (PTR) zones. - * ``admin_password``: the password of the admin user to be used by - Networking service to create and update reverse lookup (PTR) zones. - * ``admin_tenant_name``: the project of the admin user to be used by the - Networking service to create and update reverse lookup (PTR) zones. - * ``ipv4_ptr_zone_prefix_size``: the size in bits of the prefix for the IPv4 - reverse lookup (PTR) zones. - * ``ipv6_ptr_zone_prefix_size``: the size in bits of the prefix for the IPv6 - reverse lookup (PTR) zones. - * ``insecure``: Disable SSL certificate validation. By default, certificates - are validated. - * ``cafile``: Path to a valid Certificate Authority (CA) certificate. - * ``auth_uri``: the unversioned public endpoint of the Identity service. - * ``project_domain_id``: the domain ID of the admin user's project. - * ``user_domain_id``: the domain ID of the admin user to be used by the - Networking service. - * ``project_name``: the project of the admin user to be used by the - Networking service. - * ``username``: the admin user to be used by the Networking service to - create and update reverse lookup (PTR) zones. - * ``password``: the password of the admin user to be used by - Networking service. - - The following is an example: - - .. code-block:: console - - [designate] - url = http://192.0.2.240:9001/v2 - auth_uri = http://192.0.2.240:5000 - admin_auth_url = http://192.0.2.240:35357 - admin_username = neutron - admin_password = PASSWORD - admin_tenant_name = service - project_domain_id = default - user_domain_id = default - project_name = service - username = neutron - password = PASSWORD - allow_reverse_dns_lookup = True - ipv4_ptr_zone_prefix_size = 24 - ipv6_ptr_zone_prefix_size = 116 - cafile = /etc/ssl/certs/my_ca_cert - -Configuration of the externally accessible network for use case 1 ------------------------------------------------------------------ - -In :ref:`config-dns-use-case-1`, the externally accessible network must -meet the following requirements: - -* The network cannot have attribute ``router:external`` set to ``True``. -* The network type can be FLAT, VLAN, GRE, VXLAN or GENEVE. -* For network types VLAN, GRE, VXLAN or GENEVE, the segmentation ID must be - outside the ranges assigned to project networks. diff -Nru neutron-12.0.0/doc/source/admin/config.rst neutron-12.0.1/doc/source/admin/config.rst --- neutron-12.0.0/doc/source/admin/config.rst 2018-02-28 11:30:39.000000000 +0000 +++ neutron-12.0.1/doc/source/admin/config.rst 2018-03-29 17:33:08.000000000 +0000 @@ -15,6 +15,7 @@ config-bgp-dynamic-routing config-dhcp-ha config-dns-int + config-dns-int-ext-serv config-dns-res config-dvr-ha-snat config-ipam diff -Nru neutron-12.0.0/doc/source/admin/index.rst neutron-12.0.1/doc/source/admin/index.rst --- neutron-12.0.0/doc/source/admin/index.rst 2018-02-28 11:30:39.000000000 +0000 +++ neutron-12.0.1/doc/source/admin/index.rst 2018-03-29 17:33:08.000000000 +0000 @@ -10,8 +10,6 @@ This guide targets OpenStack administrators seeking to deploy and manage OpenStack Networking (neutron). -This guide documents the OpenStack Ocata release. - .. toctree:: :maxdepth: 2 diff -Nru neutron-12.0.0/neutron/agent/common/ovs_lib.py neutron-12.0.1/neutron/agent/common/ovs_lib.py --- neutron-12.0.0/neutron/agent/common/ovs_lib.py 2018-02-28 11:30:29.000000000 +0000 +++ neutron-12.0.1/neutron/agent/common/ovs_lib.py 2018-03-29 17:33:08.000000000 +0000 @@ -378,7 +378,7 @@ self.br_name) raise RuntimeError('No datapath_id on bridge %s' % self.br_name) - def do_action_flows(self, action, kwargs_list): + def do_action_flows(self, action, kwargs_list, use_bundle=False): # we can't mix strict and non-strict, so we'll use the first kw # and check against other kw being different strict = kwargs_list[0].get('strict', False) @@ -412,7 +412,7 @@ msg = "cannot use 'strict' with 'add' action" raise exceptions.InvalidInput(error_message=msg) - strict_param = ["--strict"] if strict else [] + extra_param = ["--strict"] if strict else [] if action == 'del' and {} in kwargs_list: # the 'del' case simplifies itself if kwargs_list has at least @@ -421,7 +421,9 @@ else: flow_strs = [_build_flow_expr_str(kw, action, strict) for kw in kwargs_list] - self.run_ofctl('%s-flows' % action, strict_param + ['-'], + if use_bundle: + extra_param.append('--bundle') + self.run_ofctl('%s-flows' % action, extra_param + ['-'], '\n'.join(flow_strs)) def add_flow(self, **kwargs): @@ -922,12 +924,14 @@ ALLOWED_PASSTHROUGHS = 'add_port', 'add_tunnel_port', 'delete_port' def __init__(self, br, full_ordered=False, - order=('add', 'mod', 'del')): + order=('add', 'mod', 'del'), use_bundle=False): '''Constructor. :param br: wrapped bridge :param full_ordered: Optional, disable flow reordering (slower) :param order: Optional, define in which order flow are applied + :param use_bundle: Optional, a bool whether --bundle should be passed + to all ofctl commands. Default is set to False. ''' self.br = br @@ -936,6 +940,7 @@ if not self.full_ordered: self.weights = dict((y, x) for x, y in enumerate(self.order)) self.action_flow_tuples = [] + self.use_bundle = use_bundle def __getattr__(self, name): if name in self.ALLOWED_PASSTHROUGHS: @@ -965,7 +970,7 @@ itemgetter_1 = operator.itemgetter(1) for action, action_flow_list in grouped: flows = list(map(itemgetter_1, action_flow_list)) - self.br.do_action_flows(action, flows) + self.br.do_action_flows(action, flows, self.use_bundle) def __enter__(self): return self diff -Nru neutron-12.0.0/neutron/agent/dhcp/agent.py neutron-12.0.1/neutron/agent/dhcp/agent.py --- neutron-12.0.0/neutron/agent/dhcp/agent.py 2018-02-28 11:30:29.000000000 +0000 +++ neutron-12.0.1/neutron/agent/dhcp/agent.py 2018-03-29 17:33:26.000000000 +0000 @@ -440,6 +440,7 @@ self.cache.put_port(updated_port) self.call_driver(driver_action, network) self.dhcp_ready_ports.add(updated_port.id) + self.update_isolated_metadata_proxy(network) def _is_port_on_this_agent(self, port): thishost = utils.get_dhcp_agent_device_id( @@ -470,6 +471,7 @@ self.schedule_resync("Agent port was deleted", port.network_id) else: self.call_driver('reload_allocations', network) + self.update_isolated_metadata_proxy(network) def update_isolated_metadata_proxy(self, network): """Spawn or kill metadata proxy. diff -Nru neutron-12.0.0/neutron/agent/linux/ip_conntrack.py neutron-12.0.1/neutron/agent/linux/ip_conntrack.py --- neutron-12.0.0/neutron/agent/linux/ip_conntrack.py 2018-02-28 11:30:39.000000000 +0000 +++ neutron-12.0.1/neutron/agent/linux/ip_conntrack.py 2018-03-29 17:33:26.000000000 +0000 @@ -13,9 +13,11 @@ import re +import eventlet import netaddr from oslo_concurrency import lockutils from oslo_log import log as logging +from six.moves import queue as Queue from neutron.agent.linux import utils as linux_utils from neutron.common import constants as n_const @@ -27,6 +29,33 @@ ZONE_START = 4097 +class IpConntrackUpdate(object): + """Encapsulates a conntrack update + + An instance of this object carries the information necessary to + process a request to update the conntrack table. + """ + def __init__(self, device_info_list, rule, remote_ips): + self.device_info_list = device_info_list + self.rule = rule + self.remote_ips = remote_ips + + +class IpConntrackProcessingQueue(object): + """Manager of the queue of conntrack updates to process.""" + def __init__(self): + self._queue = Queue.Queue() + + def add(self, update): + self._queue.put(update) + + def updates(self): + """Grabs the next conntrack update from the queue and processes.""" + while not self._queue.empty(): + update = self._queue.get() + yield update + + @lockutils.synchronized('conntrack') def get_conntrack(get_rules_for_table_func, filtered_ports, unfiltered_ports, execute=None, namespace=None, zone_per_port=False): @@ -53,6 +82,32 @@ self.unfiltered_ports = unfiltered_ports self.zone_per_port = zone_per_port # zone per port vs per network self._populate_initial_zone_map() + self._queue = IpConntrackProcessingQueue() + self.start_process_queue() + + def start_process_queue(self): + eventlet.spawn_n(self._process_queue_loop) + + def _process_queue_loop(self): + LOG.debug("Starting ipconntrack _process_queue_loop()") + pool = eventlet.GreenPool(size=8) + while True: + pool.spawn_n(self._process_queue) + + def _process_queue(self): + for update in self._queue.updates(): + if update.remote_ips: + for remote_ip in update.remote_ips: + self._delete_conntrack_state( + update.device_info_list, update.rule, remote_ip) + else: + self._delete_conntrack_state(update.device_info_list, + update.rule) + + def _process(self, device_info_list, rule, remote_ips=None): + # queue the update to allow the caller to resume its work + update = IpConntrackUpdate(device_info_list, rule, remote_ips) + self._queue.add(update) @staticmethod def _generate_conntrack_cmd_by_rule(rule, namespace): @@ -110,19 +165,14 @@ LOG.exception("Failed execute conntrack command %s", cmd) def delete_conntrack_state_by_rule(self, device_info_list, rule): - self._delete_conntrack_state(device_info_list, rule) + self._process(device_info_list, rule) def delete_conntrack_state_by_remote_ips(self, device_info_list, ethertype, remote_ips): for direction in ['ingress', 'egress']: rule = {'ethertype': str(ethertype).lower(), 'direction': direction} - if remote_ips: - for remote_ip in remote_ips: - self._delete_conntrack_state( - device_info_list, rule, remote_ip) - else: - self._delete_conntrack_state(device_info_list, rule) + self._process(device_info_list, rule, remote_ips) def _populate_initial_zone_map(self): """Setup the map between devices and zones based on current rules.""" diff -Nru neutron-12.0.0/neutron/agent/linux/iptables_comments.py neutron-12.0.1/neutron/agent/linux/iptables_comments.py --- neutron-12.0.0/neutron/agent/linux/iptables_comments.py 2018-02-28 11:30:29.000000000 +0000 +++ neutron-12.0.1/neutron/agent/linux/iptables_comments.py 2018-03-29 17:33:08.000000000 +0000 @@ -33,5 +33,6 @@ ALLOW_ASSOC = ('Direct packets associated with a known session to the RETURN ' 'chain.') PORT_SEC_ACCEPT = 'Accept all packets when port security is disabled.' +TRUSTED_ACCEPT = 'Accept all packets when port is trusted.' IPV6_RA_DROP = 'Drop IPv6 Router Advts from VM Instance.' IPV6_ICMP_ALLOW = 'Allow IPv6 ICMP traffic.' diff -Nru neutron-12.0.0/neutron/agent/linux/iptables_firewall.py neutron-12.0.1/neutron/agent/linux/iptables_firewall.py --- neutron-12.0.0/neutron/agent/linux/iptables_firewall.py 2018-02-28 11:30:39.000000000 +0000 +++ neutron-12.0.1/neutron/agent/linux/iptables_firewall.py 2018-03-29 17:33:26.000000000 +0000 @@ -67,6 +67,7 @@ # list of port which has security group self.filtered_ports = {} self.unfiltered_ports = {} + self.trusted_ports = [] self.ipconntrack = ip_conntrack.get_conntrack( self.iptables.get_rules_for_table, self.filtered_ports, self.unfiltered_ports, namespace=namespace, @@ -108,6 +109,37 @@ else: self._update_remote_security_group_members(sec_group_ids) + def process_trusted_ports(self, port_ids): + """Process ports that are trusted and shouldn't be filtered.""" + for port in port_ids: + if port not in self.trusted_ports: + self._add_trusted_port_rules(port) + self.trusted_ports.append(port) + + def remove_trusted_ports(self, port_ids): + for port in port_ids: + if port in self.trusted_ports: + self._remove_trusted_port_rules(port) + self.trusted_ports.remove(port) + + def _add_trusted_port_rules(self, port): + device = self._get_device_name(port) + jump_rule = [ + '-m physdev --%s %s --physdev-is-bridged -j ACCEPT' % ( + self.IPTABLES_DIRECTION[constants.INGRESS_DIRECTION], + device)] + self._add_rules_to_chain_v4v6( + 'FORWARD', jump_rule, jump_rule, comment=ic.TRUSTED_ACCEPT) + + def _remove_trusted_port_rules(self, port): + device = self._get_device_name(port) + + jump_rule = [ + '-m physdev --%s %s --physdev-is-bridged -j ACCEPT' % ( + self.IPTABLES_DIRECTION[constants.INGRESS_DIRECTION], + device)] + self._remove_rule_from_chain_v4v6('FORWARD', jump_rule, jump_rule) + def update_security_group_rules(self, sg_id, sg_rules): LOG.debug("Update rules of security group (%s)", sg_id) self.sg_rules[sg_id] = sg_rules @@ -266,6 +298,8 @@ comment=comment) def _get_device_name(self, port): + if not isinstance(port, dict): + return port return port['device'] def _update_port_sec_rules(self, port, direction, add=False): @@ -871,4 +905,6 @@ return ('qvb' + port['device'])[:n_const.LINUX_DEV_LEN] def _get_device_name(self, port): - return get_hybrid_port_name(port['device']) + device_name = super( + OVSHybridIptablesFirewallDriver, self)._get_device_name(port) + return get_hybrid_port_name(device_name) diff -Nru neutron-12.0.0/neutron/agent/linux/openvswitch_firewall/firewall.py neutron-12.0.1/neutron/agent/linux/openvswitch_firewall/firewall.py --- neutron-12.0.0/neutron/agent/linux/openvswitch_firewall/firewall.py 2018-02-28 11:30:39.000000000 +0000 +++ neutron-12.0.1/neutron/agent/linux/openvswitch_firewall/firewall.py 2018-03-29 17:33:26.000000000 +0000 @@ -14,6 +14,7 @@ # under the License. import collections +import copy import netaddr from neutron_lib import constants as lib_const @@ -91,7 +92,7 @@ """ self.raw_rules = [] self.remote_rules = [] - for rule in rules: + for rule in copy.deepcopy(rules): protocol = rule.get('protocol') if protocol is not None: if protocol.isdigit(): @@ -440,7 +441,7 @@ @staticmethod def initialize_bridge(int_br): int_br.add_protocols(*OVSFirewallDriver.REQUIRED_PROTOCOLS) - return int_br.deferred(full_ordered=True) + return int_br.deferred(full_ordered=True, use_bundle=True) def _drop_all_unmatched_flows(self): for table in ovs_consts.OVS_FIREWALL_TABLES: diff -Nru neutron-12.0.0/neutron/agent/securitygroups_rpc.py neutron-12.0.1/neutron/agent/securitygroups_rpc.py --- neutron-12.0.0/neutron/agent/securitygroups_rpc.py 2018-02-28 11:30:29.000000000 +0000 +++ neutron-12.0.1/neutron/agent/securitygroups_rpc.py 2018-03-29 17:33:26.000000000 +0000 @@ -58,6 +58,20 @@ self.plugin_rpc = plugin_rpc self.init_firewall(defer_refresh_firewall, integration_bridge) + def _get_trusted_devices(self, device_ids, devices): + trusted_devices = [] + # Devices which are already added in firewall ports should + # not be treated as trusted devices but as regular ports + all_devices = devices.copy() + all_devices.update(self.firewall.ports) + device_names = [ + dev['device'] for dev in all_devices.values()] + for device_id in device_ids: + if (device_id not in all_devices.keys() and + device_id not in device_names): + trusted_devices.append(device_id) + return trusted_devices + def init_firewall(self, defer_refresh_firewall=False, integration_bridge=None): firewall_driver = cfg.CONF.SECURITYGROUP.firewall_driver or 'noop' @@ -127,7 +141,7 @@ else: devices = self.plugin_rpc.security_group_rules_for_devices( self.context, list(device_ids)) - trusted_devices = list(set(device_ids) - set(devices.keys())) + trusted_devices = self._get_trusted_devices(device_ids, devices) with self.firewall.defer_apply(): if self.use_enhanced_rpc: diff -Nru neutron-12.0.0/neutron/common/exceptions.py neutron-12.0.1/neutron/common/exceptions.py --- neutron-12.0.0/neutron/common/exceptions.py 2018-02-28 11:30:39.000000000 +0000 +++ neutron-12.0.1/neutron/common/exceptions.py 2018-03-29 17:33:08.000000000 +0000 @@ -194,6 +194,12 @@ "%(existing_value)s.") +class QoSRulesConflict(e.Conflict): + message = _("Rule %(new_rule_type)s conflicts with " + "rule %(rule_id)s which already exists in " + "QoS Policy %(policy_id)s.") + + class ExtensionsNotFound(e.NotFound): message = _("Extensions not found: %(extensions)s.") diff -Nru neutron-12.0.0/neutron/db/ipam_backend_mixin.py neutron-12.0.1/neutron/db/ipam_backend_mixin.py --- neutron-12.0.0/neutron/db/ipam_backend_mixin.py 2018-02-28 11:30:39.000000000 +0000 +++ neutron-12.0.1/neutron/db/ipam_backend_mixin.py 2018-03-29 17:33:08.000000000 +0000 @@ -692,7 +692,8 @@ # subnets. Happens on routed networks when host isn't known. raise ipam_exceptions.DeferIpam() - raise ipam_exceptions.IpAddressGenerationFailureNoMatchingSubnet() + raise ipam_exceptions.IpAddressGenerationFailureNoMatchingSubnet( + network_id=network_id, service_type=service_type) def _find_candidate_subnets(self, context, network_id, host, service_type, fixed_configured): @@ -773,7 +774,8 @@ new_host_requested = host and host != old_host if old_ips and new_host_requested and not fixed_ips_requested: valid_subnets = self._ipam_get_subnets( - context, old_port['network_id'], host) + context, old_port['network_id'], host, + service_type=old_port.get('device_owner')) valid_subnet_ids = {s['id'] for s in valid_subnets} for fixed_ip in old_ips: if fixed_ip['subnet_id'] not in valid_subnet_ids: diff -Nru neutron-12.0.0/neutron/db/l3_db.py neutron-12.0.1/neutron/db/l3_db.py --- neutron-12.0.0/neutron/db/l3_db.py 2018-02-28 11:30:39.000000000 +0000 +++ neutron-12.0.1/neutron/db/l3_db.py 2018-03-29 17:33:26.000000000 +0000 @@ -1716,7 +1716,7 @@ def _get_mtus_by_network_list(self, context, network_ids): if not network_ids: return {} - filters = {'network_id': network_ids} + filters = {'id': network_ids} fields = ['id', 'mtu'] networks = self._core_plugin.get_networks(context, filters=filters, fields=fields) diff -Nru neutron-12.0.0/neutron/db/l3_dvr_db.py neutron-12.0.1/neutron/db/l3_dvr_db.py --- neutron-12.0.0/neutron/db/l3_dvr_db.py 2018-02-28 11:30:39.000000000 +0000 +++ neutron-12.0.1/neutron/db/l3_dvr_db.py 2018-03-29 17:33:26.000000000 +0000 @@ -716,27 +716,46 @@ # All unbound ports with floatingip irrespective of # the device owner should be included as valid ports # and updated. - port_host = port[portbindings.HOST_ID] - if (port_host == host or port_in_migration or + if (port_in_migration or self._is_unbound_port(port)): port_dict.update({port['id']: port}) - if port_host and port_host != host: - # Consider the ports where the portbinding host and - # request host does not match. + continue + port_host = port[portbindings.HOST_ID] + if port_host: l3_agent_on_host = self.get_l3_agents( context, filters={'host': [port_host]}) + l3_agent_mode = '' if len(l3_agent_on_host): l3_agent_mode = self._get_agent_mode( l3_agent_on_host[0]) + requesting_agent_mode = self._get_agent_mode(agent) + # Consider the ports where the portbinding host and + # request host match. + if port_host == host: + # Check for agent type before adding the port_dict. + # For VMs that are hosted on the dvr_no_external + # agent and if the request is coming from the same + # agent on re-syncs then we need to add the appropriate + # port['agent'] before updating the dict. + if (l3_agent_mode == ( + l3_const.L3_AGENT_MODE_DVR_NO_EXTERNAL) and + requesting_agent_mode == ( + l3_const.L3_AGENT_MODE_DVR_NO_EXTERNAL)): + port['agent'] = ( + l3_const.L3_AGENT_MODE_DVR_NO_EXTERNAL) + + port_dict.update({port['id']: port}) + # Consider the ports where the portbinding host and + # request host does not match. + else: # If the agent requesting is dvr_snat but # the portbinding host resides in dvr_no_external # agent then include the port. - requesting_agent_mode = self._get_agent_mode(agent) if (l3_agent_mode == ( l3_const.L3_AGENT_MODE_DVR_NO_EXTERNAL) and requesting_agent_mode == ( - const.L3_AGENT_MODE_DVR_SNAT)): + const.L3_AGENT_MODE_DVR_SNAT)): port['agent'] = ( l3_const.L3_AGENT_MODE_DVR_NO_EXTERNAL) port_dict.update({port['id']: port}) diff -Nru neutron-12.0.0/neutron/ipam/exceptions.py neutron-12.0.1/neutron/ipam/exceptions.py --- neutron-12.0.0/neutron/ipam/exceptions.py 2018-02-28 11:30:39.000000000 +0000 +++ neutron-12.0.1/neutron/ipam/exceptions.py 2018-03-29 17:33:08.000000000 +0000 @@ -69,7 +69,8 @@ class IpAddressGenerationFailureNoMatchingSubnet(IpAddressGenerationFailure): - message = _("No valid service subnet for the given device owner.") + message = _("No valid service subnet for the given device owner, " + "network %(network_id)s, service type %(service_type)s.") class IPAllocationFailed(exceptions.NeutronException): diff -Nru neutron-12.0.0/neutron/locale/de/LC_MESSAGES/neutron.po neutron-12.0.1/neutron/locale/de/LC_MESSAGES/neutron.po --- neutron-12.0.0/neutron/locale/de/LC_MESSAGES/neutron.po 2018-02-28 11:30:39.000000000 +0000 +++ neutron-12.0.1/neutron/locale/de/LC_MESSAGES/neutron.po 2018-03-29 17:33:26.000000000 +0000 @@ -8,9 +8,9 @@ # Frank Kloeker , 2016. #zanata msgid "" msgstr "" -"Project-Id-Version: neutron 11.0.0.0b3.dev326\n" +"Project-Id-Version: neutron VERSION\n" "Report-Msgid-Bugs-To: https://bugs.launchpad.net/openstack-i18n/\n" -"POT-Creation-Date: 2017-07-18 03:24+0000\n" +"POT-Creation-Date: 2018-03-14 04:19+0000\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" @@ -19,7 +19,7 @@ "Language: de\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "Generated-By: Babel 2.0\n" -"X-Generator: Zanata 3.9.6\n" +"X-Generator: Zanata 4.3.3\n" "Language-Team: German\n" #, python-format @@ -63,39 +63,6 @@ msgstr "%(key)s untersagt für %(tunnel)s-Anbieter-Netz" #, python-format -msgid "" -"%(method)s called with network settings %(current)s (original settings " -"%(original)s) and network segments %(segments)s" -msgstr "" -"%(method)s aufgerufen mit den Netzeinstellungen %(current)s (ursprüngliche " -"Einstellungen %(original)s) und Netzsegmente %(segments)s" - -#, python-format -msgid "" -"%(method)s called with port settings %(current)s (original settings " -"%(original)s) host %(host)s (original host %(original_host)s) vif type " -"%(vif_type)s (original vif type %(original_vif_type)s) vif details " -"%(vif_details)s (original vif details %(original_vif_details)s) binding " -"levels %(levels)s (original binding levels %(original_levels)s) on network " -"%(network)s with segments to bind %(segments_to_bind)s" -msgstr "" -"%(method)s aufgerufen mit den Porteinstellungen %(current)s (ursprüngliche " -"Einstellungen %(original)s) Host %(host)s (ursprünglicher Host " -"%(original_host)s) VIF-Typ %(vif_type)s (ursprünglicher VIF-Typ " -"%(original_vif_type)s) VIF-Details %(vif_details)s (ursprüngliche VIF-" -"Details %(original_vif_details)s) Bindungsebenen %(levels)s (ursprüngliche " -"Bindungsebenen %(original_levels)s) im Netz %(network)s mit zu bindenden " -"Segmenten %(segments_to_bind)s." - -#, python-format -msgid "" -"%(method)s called with subnet settings %(current)s (original settings " -"%(original)s)" -msgstr "" -"%(method)s aufgerufen mit den Teilnetzeinstellungen %(current)s " -"(ursprüngliche Einstellungen '%(original)s')" - -#, python-format msgid "%(name)s '%(addr)s' does not match the ip_version '%(ip_version)s'" msgstr "" "%(name)s '%(addr)s' stimmt nicht mit 'ip_version' '%(ip_version)s' überein" @@ -130,41 +97,6 @@ msgstr "%s untersagt für lokales Anbieternetzwerk" #, python-format -msgid "" -"'%(data)s' contains '%(length)s' characters. Adding a domain name will cause " -"it to exceed the maximum length of a FQDN of '%(max_len)s'" -msgstr "" -"'%(data)s' enthält '%(length)s' Zeichen. Wenn Sie einen Domänennamen " -"hinzufügen, wird die maximal zulässige Länge für einen FQDN von " -"'%(max_len)s' überschritten." - -#, python-format -msgid "" -"'%(data)s' contains '%(length)s' characters. Adding a sub-domain will cause " -"it to exceed the maximum length of a FQDN of '%(max_len)s'" -msgstr "" -"'%(data)s' enthält '%(length)s' Zeichen. Wenn Sie eine Subdomäne hinzufügen, " -"wird die maximal zulässige Länge für einen FQDN von '%(max_len)s' " -"überschritten. " - -#, python-format -msgid "'%(data)s' not a valid PQDN or FQDN. Reason: %(reason)s" -msgstr "'%(data)s' ist kein gültiger PQDN oder FQDN. Grund: %(reason)s" - -#, python-format -msgid "'%s' cannot be converted to lowercase string" -msgstr "" -"'%s' kann nicht in eine Zeichenfolge in Kleinschreibung konvertiert werden" - -#, python-format -msgid "'%s' is a FQDN. It should be a relative domain name" -msgstr "'%s' ist ein FQDN. Es muss ein relativer Domänenname sein." - -#, python-format -msgid "'%s' is not a FQDN" -msgstr "'%s' ist kein FQDN." - -#, python-format msgid "'%s' is not a valid RBAC object type" msgstr "'%s' ist kein gültiger RBAC-Objekttyp" @@ -244,27 +176,16 @@ msgid "Address not present on interface" msgstr "Adresse an der Schnittstelle nicht vorhanden." -#, python-format -msgid "Address scope %(address_scope_id)s could not be found" -msgstr "Adressbereich %(address_scope_id)s wurde nicht gefunden" - msgid "" "Address to listen on for OpenFlow connections. Used only for 'native' driver." msgstr "" "Adresse, die auf OpenFlow-Verbindungen überwacht werden soll. Wird nur für " "'native' Treiber verwendet." -msgid "Adds external network attribute to network resource." -msgstr "Fügt ein externes Netzattribut zur Netzressource hinzu." - msgid "Adds test attributes to core resources." msgstr "Fügt Testattribute zu Kernressourcen hinzu." #, python-format -msgid "Agent %(id)s could not be found" -msgstr "Agent %(id)s konnte nicht gefunden werden" - -#, python-format msgid "Agent %(id)s is not a L3 Agent or has been disabled" msgstr "Agent %(id)s ist kein L3-Agent oder wurde inaktiviert" @@ -285,13 +206,6 @@ msgid "Agent updated: %(payload)s" msgstr "Agent aktualisiert: %(payload)s" -#, python-format -msgid "" -"Agent with agent_type=%(agent_type)s and host=%(host)s could not be found" -msgstr "" -"Agent mit 'agent_type=%(agent_type)s' und 'host=%(host)s' konnte nicht " -"gefunden werden" - msgid "Allow auto scheduling networks to DHCP agent." msgstr "Automatische Netzzuordnung zum DHCP-Agenten zulassen." @@ -325,12 +239,6 @@ msgstr "" "Durchführung von unsicheren SSL-Anforderungen (HTTPS) an Nova-Metadaten" -msgid "Allowed address pairs must be a list." -msgstr "Zulässige Adresspaare müssen als Liste angegeben werden." - -msgid "AllowedAddressPair must contain ip_address" -msgstr "AllowedAddressPair muss ip_address enthalten" - msgid "" "Allows for serving metadata requests coming from a dedicated metadata access " "network whose CIDR is 169.254.169.254/16 (or larger prefix), and is " @@ -397,11 +305,6 @@ msgid "Availability zone of this node" msgstr "Verfügbarkeitszone dieses Knotens" -#, python-format -msgid "AvailabilityZone %(availability_zone)s could not be found." -msgstr "" -"Die Verfügbarkeitszone %(availability_zone)s konnte nicht gefunden werden." - msgid "Available commands" msgstr "Verfügbare Befehle" @@ -471,17 +374,6 @@ "Das angeforderte Teilnetz kann nicht aus der verfügbaren Gruppe mit Präfixen " "zugeordnet werden" -#, python-format -msgid "" -"Cannot associate floating IP %(floating_ip_address)s (%(fip_id)s) with port " -"%(port_id)s using fixed IP %(fixed_ip)s, as that fixed IP already has a " -"floating IP on external network %(net_id)s." -msgstr "" -"Dynamische IP-Adresse %(floating_ip_address)s (%(fip_id)s) kann Port " -"%(port_id)s nicht über statische IP-Adresse %(fixed_ip)s zugeordnet werden, " -"da diese statische IP-Adresse bereits über eine dynamische IP-Adresse im " -"externen Netz %(net_id)s verfügt." - msgid "Cannot disable enable_dhcp with ipv6 attributes set" msgstr "" "enable_dhcp kann nicht inaktiviert werden, wenn ipv6-Attribute gesetzt sind" @@ -595,9 +487,6 @@ "Überschneidungen zwischen CIDR %(subnet_cidr)s von Teilnetz %(subnet_id)s " "und CIDR %(cidr)s von Teilnetz %(sub_id)s" -msgid "Class not found." -msgstr "Klassen nicht gefunden." - msgid "Cleanup resources of a specific agent type only." msgstr "Bereinigen Sie nur Ressourcen mit einem bestimmten Agententyp." @@ -867,10 +756,6 @@ "MAC-Adresse von verteiltem virtuellem Router für Host %(host)s ist nicht " "vorhanden." -#, python-format -msgid "Domain %(dns_domain)s not found in the external DNS service" -msgstr "Die Domäne %(dns_domain)s wurde im externen DNS-Dienst nicht gefunden." - msgid "Domain to use for building the hostnames" msgstr "Für das Erstellen von Hostnamen zu verwendende Domäne" @@ -913,9 +798,6 @@ "konnte kein Aktualisierung für die Datenbank durchgeführt werden. Entfernen " "Sie alle Duplikate, bevor Sie die Aktualisierung der Datenbank durchführen." -msgid "Duplicate Metering Rule in POST." -msgstr "Doppelte Messungsregel in POST." - msgid "Duplicate Security Group Rule in POST." msgstr "Doppelte Sicherheitsgruppenregel in POST." @@ -1003,29 +885,6 @@ "jedoch verfügbar, wenn diese Option auf 'True' gesetzt ist." msgid "" -"Enable suppression of ARP responses that don't match an IP address that " -"belongs to the port from which they originate. Note: This prevents the VMs " -"attached to this agent from spoofing, it doesn't protect them from other " -"devices which have the capability to spoof (e.g. bare metal or VMs attached " -"to agents without this flag set to True). Spoofing rules will not be added " -"to any ports that have port security disabled. For LinuxBridge, this " -"requires ebtables. For OVS, it requires a version that supports matching ARP " -"headers. This option will be removed in Ocata so the only way to disable " -"protection will be via the port security extension." -msgstr "" -"Aktivieren Sie die Unterdrückung von ARP-Antworten, die nicht mit einer IP-" -"Adresse übereinstimmen, die zu dem Port gehört, von dem sie stammen. " -"Hinweis: Dies verhindert das Spoofing durch die VMs, die an diesen Agenten " -"angehängt sind, bietet aber keinen Schutz vor anderen Einheiten, die die " -"Möglichkeit des Spoofing haben (z. B. Bare-Metal-Maschinen oder VMs, die an " -"Agenten angehängt sind, ohne dass dieses Flag auf True festgelegt wurde). " -"Spoofing-Regeln werden Ports, bei denen die Portsicherheit inaktiviert " -"wurde, nicht hinzugefügt. Bei LinuxBridge erfordert dies ebtables. Bei OVS " -"erfordert dies eine Version, die übereinstimmende ARP-Header unterstützt. " -"Diese Option wird in Ocata entfernt, sodass der Schutz nur über die " -"Portsicherheitserweiterung inaktiviert werden kann." - -msgid "" "Enables IPv6 Prefix Delegation for automatic subnet CIDR allocation. Set to " "True to enable IPv6 Prefix Delegation for subnet allocation in a PD-capable " "environment. Users making subnet creation requests for IPv6 subnets without " @@ -1055,9 +914,6 @@ "Verarbeitungsargumenten. Dieses Feature wird deaktiviert, wenn angepasste " "DNS-Resolver zur Option 'dnsmasq_dns_servers' hinzugefügt werden." -msgid "Encountered an empty component." -msgstr "Leere Komponente gefunden." - msgid "End of VLAN range is less than start of VLAN range" msgstr "Ende des VLAN-Bereichs ist kleiner als Anfang des VLAN-Bereichs" @@ -1126,32 +982,10 @@ msgstr "Erweiterungen nicht gefunden: %(extensions)s." #, python-format -msgid "External DNS driver %(driver)s could not be found." -msgstr "Der externe DNS-Treiber %(driver)s konnte nicht gefunden werden." - -#, python-format msgid "External IP %s is the same as the gateway IP" msgstr "Externe IP %s entspricht der Gateway-IP" #, python-format -msgid "" -"External network %(external_network_id)s is not reachable from subnet " -"%(subnet_id)s. Therefore, cannot associate Port %(port_id)s with a Floating " -"IP." -msgstr "" -"Externes Netz %(external_network_id)s ist von Teilnetz %(subnet_id)s aus " -"nicht erreichbar. Daher kann Port %(port_id)s keiner dynamischen IP-Adresse " -"zugeordnet werden." - -#, python-format -msgid "" -"External network %(net_id)s cannot be updated to be made non-external, since " -"it has existing gateway ports" -msgstr "" -"Externes Netz %(net_id)s kann nicht so aktualisiert werden, dass es nicht " -"mehr extern ist, da es über Gateway-Ports verfügt" - -#, python-format msgid "Failed rescheduling router %(router_id)s: no eligible l3 agent found." msgstr "" "Fehler bei Neuterminierung von Router %(router_id)s: kein auswählbarer L3-" @@ -1164,14 +998,6 @@ "fehlgeschlagen." #, python-format -msgid "" -"Failed to allocate a VRID in the network %(network_id)s for the router " -"%(router_id)s after %(max_tries)s tries." -msgstr "" -"Das Zuordnen der ID eines virtuellen Routers im Netz %(network_id)s für den " -"Router %(router_id)s ist nach %(max_tries)s Versuchen fehlgeschlagen." - -#, python-format msgid "Failed to allocate subnet: %(reason)s." msgstr "Fehler beim Zuordnen von Subnetz: %(reason)s." @@ -1184,14 +1010,6 @@ #, python-format msgid "" -"Failed to create a duplicate %(object_type)s: for attribute(s) " -"%(attributes)s with value(s) %(values)s" -msgstr "" -"Fehler beim Erstellen eines Duplikats von %(object_type)s: für Attribut(e) " -"%(attributes)s mit Wert(en) %(values)s" - -#, python-format -msgid "" "Failed to create port on network %(network_id)s, because fixed_ips included " "invalid subnet %(subnet_id)s" msgstr "" @@ -1228,30 +1046,9 @@ msgid "Flat provider networks are disabled" msgstr "Einfache Anbieternetzwerke sind deaktiviert." -#, python-format -msgid "Flavor %(flavor_id)s could not be found." -msgstr "Die Variante %(flavor_id)s konnte nicht gefunden werden." - -#, python-format -msgid "Flavor %(flavor_id)s is used by some service instance." -msgstr "" -"Die Variante %(flavor_id)s wird von einigen Diensteinstanzen verwendet. " - -msgid "Flavor is not enabled." -msgstr "Die Variante ist nicht aktiviert." - -#, python-format -msgid "Floating IP %(floatingip_id)s could not be found" -msgstr "Dynamische IP-Adresse %(floatingip_id)s konnte nicht gefunden werden" - msgid "For TCP/UDP protocols, port_range_min must be <= port_range_max" msgstr "Für TCP/UDP-Protokolle muss 'port_range_min' '<= port_range_max' sein" -#, python-format -msgid "For class %(object_type)s missing primary keys: %(missing_keys)s" -msgstr "" -"Für die Klasse %(object_type)s fehlen primäre Schlüssel: %(missing_keys)s" - msgid "Force ip_lib calls to use the root helper" msgstr "ip_lib-Aufrufe erzwingen, um Roothilfeprogramm zu verwenden" @@ -1273,15 +1070,6 @@ "überein." #, python-format -msgid "" -"Gateway cannot be updated for router %(router_id)s, since a gateway to " -"external network %(net_id)s is required by one or more floating IPs." -msgstr "" -"Gateway kann nicht für Router %(router_id)s aktualisiert werden, da ein " -"Gateway zum externen Netz %(net_id)s für eine oder mehrere dynamische IP-" -"Adressen erforderlich ist. " - -#, python-format msgid "Gateway ip %(ip_address)s conflicts with allocation pool %(pool)s." msgstr "" "Gateway-IP '%(ip_address)s' steht im Konflikt mit Zuordnungspool %(pool)s." @@ -1540,10 +1328,6 @@ msgstr "Ungültiger Ethernet-Typ %(ethertype)s für Protokoll %(protocol)s." #, python-format -msgid "Invalid format for routes: %(routes)s, %(reason)s" -msgstr "Ungültiges Format für Routen: %(routes)s, %(reason)s" - -#, python-format msgid "Invalid format: %s" msgstr "Ungültiges Format: %s" @@ -1585,10 +1369,6 @@ msgstr "Ungültiges Diensteanbieterformat" #, python-format -msgid "Invalid service type %(service_type)s." -msgstr "Ungültiger Dienstetyp %(service_type)s." - -#, python-format msgid "" "Invalid value for ICMP %(field)s (%(attr)s) %(value)s. It must be 0 to 255." msgstr "" @@ -1682,9 +1462,6 @@ msgid "Location of Metadata Proxy UNIX domain socket" msgstr "Position von UNIX-Domänensocket von Metadatenproxy" -msgid "Location of pid file of this process." -msgstr "Position der PID-Datei für diesen Prozess." - msgid "Location to store DHCP server config files." msgstr "Position zum Speichern von Konfigurationsdateien des DHCP-Servers." @@ -1771,22 +1548,6 @@ msgid "Metering driver" msgstr "Messungstreiber" -#, python-format -msgid "Metering label %(label_id)s does not exist" -msgstr "Messungsbezeichnung %(label_id)s ist nicht vorhanden" - -#, python-format -msgid "Metering label rule %(rule_id)s does not exist" -msgstr "Messungsbezeichnungsregel %(rule_id)s ist nicht vorhanden" - -#, python-format -msgid "" -"Metering label rule with remote_ip_prefix %(remote_ip_prefix)s overlaps " -"another" -msgstr "" -"Messungsbezeichnungsregel mit remote_ip_prefix %(remote_ip_prefix)s weist " -"eine Überschneidung mit einer anderen auf" - msgid "MinRtrAdvInterval setting for radvd.conf" msgstr "MinRtrAdvInterval-Einstellung für radvd.conf" @@ -1824,12 +1585,6 @@ "Einstellung muss für alle Agenten gleich sein." #, python-format -msgid "Multiple agents with agent_type=%(agent_type)s and host=%(host)s found" -msgstr "" -"Mehrere Agenten mit 'agent_type=%(agent_type)s' und 'host=%(host)s' wurden " -"gefunden" - -#, python-format msgid "Multiple default providers for service %s" msgstr "Mehrere Standardanbieter für Dienst %s" @@ -1855,22 +1610,6 @@ "Angabe von einer oder mehreren Aktionen für Ablaufhinzufügung oder Änderung " "erforderlich" -#, python-format -msgid "Name %(dns_name)s is duplicated in the external DNS service" -msgstr "Der Name %(dns_name)s ist im externen DNS-Dienst doppelt vorhanden." - -#, python-format -msgid "" -"Name '%s' must be 1-63 characters long, each of which can only be " -"alphanumeric or a hyphen." -msgstr "" -"Der Name '%s' muss eine Länge von 1 - 63 Zeichen haben, die nur " -"alphanumerisch oder ein Bindestrich sein dürfen." - -#, python-format -msgid "Name '%s' must not start or end with a hyphen." -msgstr "Der Name '%s' darf nicht mit einem Bindestrich beginnen oder enden." - msgid "Name of Open vSwitch bridge to use" msgstr "Name der zu verwendenden Open vSwitch-Brücke" @@ -1960,15 +1699,6 @@ msgid "No more IP addresses available." msgstr "Keine weiteren IP-Adressen verfügbar." -#, python-format -msgid "" -"No more Virtual Router Identifier (VRID) available when creating router " -"%(router_id)s. The limit of number of HA Routers per tenant is 254." -msgstr "" -"Es war keine ID für virtuelle Router (VRID - Virtual Router Identifier) " -"verfügbar beim Erstellen von Router %(router_id)s. Der Grenzwert für die " -"Anzahl an Hochverfügbarkeitsroutern pro Nutzer ist 254." - msgid "No offline migrations pending." msgstr "Keine Offline-Migrationen anstehend." @@ -2238,13 +1968,6 @@ "Adresse angegeben werden, wenn eine dynamische IP zugewiesen wird" msgid "" -"Port Security must be enabled in order to have allowed address pairs on a " -"port." -msgstr "" -"Portsicherheit muss aktiviert werden, damit zulässige Adresspaare für einen " -"Port vorhanden sind." - -msgid "" "Port to listen on for OpenFlow connections. Used only for 'native' driver." msgstr "" "Port, der auf OpenFlow-Verbindungen überwacht werden soll. Wird nur für " @@ -2412,22 +2135,6 @@ "Anforderung fehlgeschlagen: interner Serverfehler bei Verarbeitung Ihrer " "Anforderung." -#, python-format -msgid "" -"Request contains duplicate address pair: mac_address %(mac_address)s " -"ip_address %(ip_address)s." -msgstr "" -"Anforderung enthält doppeltes Adresspaar: mac_address %(mac_address)s " -"ip_address %(ip_address)s." - -#, python-format -msgid "" -"Requested subnet with cidr: %(cidr)s for network: %(network_id)s overlaps " -"with another subnet" -msgstr "" -"Angefordertes Teilnetz mit CIDR: %(cidr)s für Netz: %(network_id)s enthält " -"Überschneidungen mit einem anderen Teilnetz" - msgid "" "Reset flow table on start. Setting this to True will cause brief traffic " "interruption." @@ -2473,25 +2180,6 @@ msgstr "Rootberechtigungen sind zum Löschen von Berechtigungen erforderlich." #, python-format -msgid "Router %(router_id)s %(reason)s" -msgstr "Router %(router_id)s %(reason)s" - -#, python-format -msgid "Router %(router_id)s could not be found" -msgstr "Router %(router_id)s konnte nicht gefunden werden" - -#, python-format -msgid "Router %(router_id)s does not have an interface with id %(port_id)s" -msgstr "" -"Router %(router_id)s verfügt über keine Schnittstelle mit ID %(port_id)s" - -#, python-format -msgid "Router %(router_id)s has no interface on subnet %(subnet_id)s" -msgstr "" -"Router %(router_id)s verfügt über keine Schnittstelle auf Teilnetz " -"%(subnet_id)s" - -#, python-format msgid "Router '%(router_id)s' is not compatible with this agent." msgstr "Router '%(router_id)s' ist mit diesem Agenten nicht kompatibel." @@ -2499,23 +2187,6 @@ msgid "Router already has a port on subnet %s" msgstr "Router verfügt bereits über einen Port auf Teilnetz %s" -#, python-format -msgid "" -"Router interface for subnet %(subnet_id)s on router %(router_id)s cannot be " -"deleted, as it is required by one or more floating IPs." -msgstr "" -"Routerschnittstelle für Teilnetz %(subnet_id)s auf Router %(router_id)s kann " -"nicht gelöscht werden, da sie für eine oder mehrere dynamische IP-Adressen " -"erforderlich ist." - -#, python-format -msgid "" -"Router interface for subnet %(subnet_id)s on router %(router_id)s cannot be " -"deleted, as it is required by one or more routes." -msgstr "" -"Routerschnittstelle für Teilnetz %(subnet_id)s auf Router %(router_id)s kann " -"nicht gelöscht werden, da sie für eine oder mehrere Routen erforderlich ist." - msgid "Router port must have at least one fixed IP" msgstr "Der Router-Port muss mindestens eine feste IP-Adresse haben." @@ -2603,37 +2274,6 @@ msgstr "Benachrichtigung an Nova senden, wenn sich der Portstatus ändert" #, python-format -msgid "Service Profile %(sp_id)s could not be found." -msgstr "Das Diensteprofil %(sp_id)s konnte nicht gefunden werden." - -#, python-format -msgid "Service Profile %(sp_id)s is already associated with flavor %(fl_id)s." -msgstr "" -"Das Diensteprofil %(sp_id)s ist bereits der Variante %(fl_id)s zugeordnet." - -#, python-format -msgid "Service Profile %(sp_id)s is not associated with flavor %(fl_id)s." -msgstr "" -"Das Serviceprofil %(sp_id)s ist der Variante %(fl_id)s noch nicht zugeordnet." - -#, python-format -msgid "Service Profile %(sp_id)s is used by some service instance." -msgstr "" -"Das Diensteprofil %(sp_id)s wird von einigen Diensteinstanzen verwendet." - -#, python-format -msgid "Service Profile driver %(driver)s could not be found." -msgstr "Der Serviceprofiltreiber %(driver)s konnte nicht gefunden werden." - -msgid "Service Profile is not enabled." -msgstr "Das Diensteprofil ist nicht aktiviert." - -msgid "Service Profile needs either a driver or metainfo." -msgstr "" -"Das Serviceprofil erfordert entweder die Angabe eines Treibers oder " -"Metainformationen." - -#, python-format msgid "" "Service provider '%(provider)s' could not be found for service type " "%(service_type)s" @@ -2704,9 +2344,6 @@ "Subnetze, die in demselben Netz gehostet werden, müssen aus demselben " "Subnetzpool zugeordnet werden." -msgid "Suffix to append to all namespace names." -msgstr "Der an alle Namensraumnamen anzuhängende Suffix." - msgid "" "System-wide flag to determine the type of router that tenants can create. " "Only admin can override." @@ -2720,13 +2357,6 @@ msgid "TCP Port used by Nova metadata server." msgstr "Von Nova-Metadatenserver verwendeter TCP-Port." -#, python-format -msgid "TLD '%s' must not be all numeric" -msgstr "TLD '%s' darf nicht ausschließlich numerisch sein" - -msgid "TOS for vxlan interface protocol packets." -msgstr "TOS für VXLAN-Schnittstellenprotokollpakete." - msgid "TTL for vxlan interface protocol packets." msgstr "TTL für VXLAN-Schnittstellenprotokollpakete." @@ -2787,14 +2417,6 @@ "DHCP (Option 121) angefordert werden. Diese Option ist wirkungslos, wenn " "'force_metadata' auf 'True' gesetzt wird." -#, python-format -msgid "" -"The HA Network CIDR specified in the configuration file isn't valid; " -"%(cidr)s." -msgstr "" -"Das in der Konfigurationsdatei angegebene CIDR für das " -"Hochverfügbarkeitsnetz ist nicht gültig; %(cidr)s." - msgid "The UDP port to use for VXLAN tunnels." msgstr "UDP-Port für VXLAN-Tunnel." @@ -2846,32 +2468,6 @@ msgid "The core plugin Neutron will use" msgstr "Core-Plugin, das Neutron verwenden wird" -#, python-format -msgid "" -"The dns_name passed is a FQDN. Its higher level labels must be equal to the " -"dns_domain option in neutron.conf, that has been set to '%(dns_domain)s'. It " -"must also include one or more valid DNS labels to the left of " -"'%(dns_domain)s'" -msgstr "" -"Der übergebene dns_name ist ein FQDN. Seine Bezeichnungen auf höherer Ebene " -"müssen mit der Option dns_domain in neutron.conf übereinstimmen, die auf " -"'%(dns_domain)s' festgelegt wurde. Enthalten sein muss auch mindestens eine " -"gültige DNS-Bezeichnung links von '%(dns_domain)s'" - -#, python-format -msgid "" -"The dns_name passed is a PQDN and its size is '%(dns_name_len)s'. The " -"dns_domain option in neutron.conf is set to %(dns_domain)s, with a length of " -"'%(higher_labels_len)s'. When the two are concatenated to form a FQDN (with " -"a '.' at the end), the resulting length exceeds the maximum size of " -"'%(fqdn_max_len)s'" -msgstr "" -"Der übergebene dns_name ist ein PQDN mit einer Größe von '%(dns_name_len)s'. " -"Die Option dns_domain in neutron.conf wurde auf %(dns_domain)s festgelegt, " -"bei einer Länge von '%(higher_labels_len)s'. Wenn beide verkettet werden, um " -"einen FQDN zu bilden (mit einem '.' am Ende), überschreitet die Gesamtlänge " -"die maximale Größe von '%(fqdn_max_len)s'" - msgid "The driver used to manage the DHCP server." msgstr "Der für die Verwaltung des DHCP-Servers verwendete Treiber." @@ -2930,11 +2526,6 @@ "Datenverkehr ein bestimmtes Netz verwenden soll, das nicht das Standardnetz " "ist." -#, python-format -msgid "The number of allowed address pair exceeds the maximum %(quota)s." -msgstr "" -"Die Anzahl an zulässigen Adresspaaren überschreitet das Maximum %(quota)s." - msgid "" "The number of seconds the agent will wait between polling for local device " "changes." @@ -3013,28 +2604,6 @@ msgstr "Der zu verwendende Authentifizierungtyp" msgid "" -"The working mode for the agent. Allowed modes are: 'legacy' - this preserves " -"the existing behavior where the L3 agent is deployed on a centralized " -"networking node to provide L3 services like DNAT, and SNAT. Use this mode if " -"you do not want to adopt DVR. 'dvr' - this mode enables DVR functionality " -"and must be used for an L3 agent that runs on a compute host. 'dvr_snat' - " -"this enables centralized SNAT support in conjunction with DVR. This mode " -"must be used for an L3 agent running on a centralized node (or in single-" -"host deployments, e.g. devstack)" -msgstr "" -"Der Betriebsmodus für den Agenten. Zulässige Modi sind: 'legacy' - Hierbei " -"wird das aktuelle Verhalten beibehalten, bei dem der Agent der Ebene 3 (L3 - " -"Level 3) auf einem zentralisierten Netzknoten implementiert wird, um L3-" -"Services wie DNAT und SNAT bereitzustellen. Verwenden Sie diesen Modus, wenn " -"Sie DVR nicht annehmen möchten. 'dvr' - Mit diesem Modus wird die DVR-" -"Funktionalität aktiviert. Er muss für L3-Agenten verwendet werden, die auf " -"einem Rechenhost ausgeführt werden. 'dvr_snat' - Hiermit wird die " -"zentralisierte SNAT-Unterstützung in Kombination mit DVR aktiviert. Dieser " -"Modus muss für L3-Agenten verwendet werden, die auf einem zentralisierten " -"Knoten (oder in Implementierungen mit einem einzelnen Host, z. B. devstack) " -"ausgeführt werden." - -msgid "" "There are routers attached to this network that depend on this policy for " "access." msgstr "" @@ -3042,13 +2611,6 @@ "Richtlinie abhängig sind." msgid "" -"Timeout in seconds for ovs-vsctl commands. If the timeout expires, ovs " -"commands will fail with ALARMCLOCK error." -msgstr "" -"Zeitlimit in Sekunden für ovs-vsctl-Befehle. Wenn das Zeitlimit abgelaufen " -"ist, schlagen ovs-Befehle mit einem Fehler vom Typ ALARMCLOCK fehl." - -msgid "" "Timeout in seconds to wait for a single OpenFlow request. Used only for " "'native' driver." msgstr "" @@ -3070,9 +2632,6 @@ "Es wurde ein Präfix angegeben, das zu lang ist. Der neue Name überschreitet " "damit die für einen Schnittstellennamen vorgegebene Länge." -msgid "Too many availability_zone_hints specified" -msgstr "Es wurden zu viele 'availability_zone_hints' angegeben." - msgid "" "True to delete all ports on all the OpenvSwitch bridges. False to delete " "ports created by Neutron on integration and external network bridges." @@ -3126,14 +2685,6 @@ #, python-format msgid "" -"Unable to complete operation for %(router_id)s. The number of routes exceeds " -"the maximum %(quota)s." -msgstr "" -"Operation kann für %(router_id)s nicht abgeschlossen werden. Die Anzahl an " -"Routen überschreitet den maximalen Wert %(quota)s." - -#, python-format -msgid "" "Unable to complete operation for %(subnet_id)s. The number of DNS " "nameservers exceeds the limit %(quota)s." msgstr "" @@ -3149,14 +2700,6 @@ "Hostroutes überschreitet den Grenzwert %(quota)s." #, python-format -msgid "" -"Unable to complete operation on address scope %(address_scope_id)s. There " -"are one or more subnet pools in use on the address scope" -msgstr "" -"Operation auf Adressbereich %(address_scope_id)s kann nicht abgeschlossen " -"werden. Mindestens ein Teilnetzpool wird gerade im Adressbereich verwendet" - -#, python-format msgid "Unable to convert value in %s" msgstr "Wert in %s kann nicht konvertiert werden" @@ -3203,11 +2746,6 @@ msgstr "Ressourcenname kann nicht in %s gefunden werden" #, python-format -msgid "Unable to generate unique DVR mac for host %(host)s." -msgstr "" -"Eindeutige DVR-MAC-Adresse for Host %(host)s kann nicht generiert werden." - -#, python-format msgid "Unable to generate unique mac on network %(net_id)s." msgstr "" "Eindeutige MAC-Adresse kann auf Netz %(net_id)s nicht generiert werden." @@ -3235,17 +2773,6 @@ "werden. Mehrere Mandanten verwenden es." #, python-format -msgid "Unable to update address scope %(address_scope_id)s : %(reason)s" -msgstr "" -"Adressbereich %(address_scope_id)s konnte nicht aktualisiert werden: " -"%(reason)s" - -#, python-format -msgid "Unable to update the following object fields: %(fields)s" -msgstr "" -"Die folgenden Objektfelder konnten nicht aktualisiert werden: %(fields)s" - -#, python-format msgid "" "Unable to verify match:%(match)s as the parent resource: %(res)s was not " "found" @@ -3273,9 +2800,6 @@ msgid "Unit name '%(unit)s' is not valid." msgstr "Einheitenname '%(unit)s' ist nicht gültig." -msgid "Unknown API version specified" -msgstr "Unbekannte API-Version angegeben" - #, python-format msgid "Unknown address type %(address_type)s" msgstr "Unbekannter Adresstyp %(address_type)s" @@ -3386,14 +2910,6 @@ "Benutzername zum Herstellen einer Verbindung zu Designate im " "Administratorkontext." -msgid "" -"Uses veth for an OVS interface or not. Support kernels with limited " -"namespace support (e.g. RHEL 6.5) so long as ovs_use_veth is set to True." -msgstr "" -"Gibt an, ob virtuelles Ethernet für eine OVS-Schnittstelle verwendet wird " -"oder nicht. Kernels mit eingeschränkter Namensraumunterstützung (z. B. RHEL " -"6.5) werden unterstützt, vorausgesetzt ovs_use_veth ist auf 'True' gesetzt." - msgid "VRRP authentication password" msgstr "VRRP-Authentifizierungskennwort" @@ -3403,14 +2919,6 @@ msgid "VXLAN network unsupported." msgstr "VXLAN-Netzwerk nicht unterstützt." -#, python-format -msgid "" -"Value of %(parameter)s has to be multiple of %(number)s, with maximum value " -"of %(maximum)s and minimum value of %(minimum)s" -msgstr "" -"Der Wert von %(parameter)s muss ein Vielfaches von %(number)s sein bei einem " -"Maximalwert von %(maximum)s und einem Mindestwert von %(minimum)s" - msgid "" "Value of host kernel tick rate (hz) for calculating minimum burst value in " "bandwidth limit rules for a port with QoS. See kernel configuration file for " @@ -3616,10 +3124,6 @@ msgid "provider:physical_network specified for %s network" msgstr "'provider:physical_network' für %s-Netz angegeben" -#, python-format -msgid "rbac_db_model not found in %s" -msgstr "rbac_db_model nicht in %s gefunden." - msgid "respawn_interval must be >= 0 if provided." msgstr "respawn_interval muss >= 0 sein, falls angegeben." @@ -3652,10 +3156,3 @@ msgid "the nexthop is used by router" msgstr "Der nächste Hop wird vom Router verwendet" - -msgid "" -"uuid provided from the command line so external_process can track us via /" -"proc/cmdline interface." -msgstr "" -"UUID von der Befehlszeile angegeben, damit external_process uns über /proc/" -"cmdline-Schnittstelle verfolgen kann." diff -Nru neutron-12.0.0/neutron/locale/es/LC_MESSAGES/neutron.po neutron-12.0.1/neutron/locale/es/LC_MESSAGES/neutron.po --- neutron-12.0.0/neutron/locale/es/LC_MESSAGES/neutron.po 2018-02-28 11:30:39.000000000 +0000 +++ neutron-12.0.1/neutron/locale/es/LC_MESSAGES/neutron.po 2018-03-29 17:33:26.000000000 +0000 @@ -7,9 +7,9 @@ # Andreas Jaeger , 2016. #zanata msgid "" msgstr "" -"Project-Id-Version: neutron 11.0.0.0b3.dev326\n" +"Project-Id-Version: neutron VERSION\n" "Report-Msgid-Bugs-To: https://bugs.launchpad.net/openstack-i18n/\n" -"POT-Creation-Date: 2017-07-18 03:24+0000\n" +"POT-Creation-Date: 2018-03-14 04:19+0000\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" @@ -18,7 +18,7 @@ "Language: es\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "Generated-By: Babel 2.0\n" -"X-Generator: Zanata 3.9.6\n" +"X-Generator: Zanata 4.3.3\n" "Language-Team: Spanish\n" #, python-format @@ -62,39 +62,6 @@ msgstr "%(key)s prohibido para red de proveedor %(tunnel)s" #, python-format -msgid "" -"%(method)s called with network settings %(current)s (original settings " -"%(original)s) and network segments %(segments)s" -msgstr "" -"%(method)s llamado con configuraciones de red %(current)s (valores " -"originales %(original)s) y segmentos de red %(segments)s" - -#, python-format -msgid "" -"%(method)s called with port settings %(current)s (original settings " -"%(original)s) host %(host)s (original host %(original_host)s) vif type " -"%(vif_type)s (original vif type %(original_vif_type)s) vif details " -"%(vif_details)s (original vif details %(original_vif_details)s) binding " -"levels %(levels)s (original binding levels %(original_levels)s) on network " -"%(network)s with segments to bind %(segments_to_bind)s" -msgstr "" -"%(method)s llamado con ajustes de puerto %(current)s (ajustes originales " -"%(original)s) host %(host)s (host original %(original_host)s) tipo de VIF " -"%(vif_type)s (tipo de VIF original %(original_vif_type)s) detalles de VIF " -"%(vif_details)s (detalles de VIF originales %(original_vif_details)s) " -"niveles de enlace %(levels)s (niveles de enlace originales " -"%(original_levels)s) en la red %(network)s con segmentos a enlazar " -"%(segments_to_bind)s" - -#, python-format -msgid "" -"%(method)s called with subnet settings %(current)s (original settings " -"%(original)s)" -msgstr "" -"%(method)s llamado con ajustes de subred %(current)s (ajustes originales " -"%(original)s)" - -#, python-format msgid "%(name)s '%(addr)s' does not match the ip_version '%(ip_version)s'" msgstr "%(name)s '%(addr)s' no coincide con la versión de IP '%(ip_version)s'" @@ -127,38 +94,6 @@ msgstr "%s prohibido para la red de proveedor local" #, python-format -msgid "" -"'%(data)s' contains '%(length)s' characters. Adding a domain name will cause " -"it to exceed the maximum length of a FQDN of '%(max_len)s'" -msgstr "" -"'%(data)s' contiene '%(length)s' caracteres. Si se añade un nombre de " -"dominio se superará la longitud máxima de un FQDN, que es de '%(max_len)s'" - -#, python-format -msgid "" -"'%(data)s' contains '%(length)s' characters. Adding a sub-domain will cause " -"it to exceed the maximum length of a FQDN of '%(max_len)s'" -msgstr "" -"'%(data)s' contiene '%(length)s' caracteres. Si se añade un subdominio se " -"superará la longitud máxima de un FQDN, que es de '%(max_len)s'" - -#, python-format -msgid "'%(data)s' not a valid PQDN or FQDN. Reason: %(reason)s" -msgstr "'%(data)s' no es un PQDN o FQDN válido. Razón: %(reason)s" - -#, python-format -msgid "'%s' cannot be converted to lowercase string" -msgstr "'%s' no se puede convertir a serie en minúscula" - -#, python-format -msgid "'%s' is a FQDN. It should be a relative domain name" -msgstr "'%s' es un FQDN. Debería ser un nombre de dominio relativo" - -#, python-format -msgid "'%s' is not a FQDN" -msgstr "'%s' no es un FQDN" - -#, python-format msgid "'%s' is not a valid RBAC object type" msgstr "'%s' no es un tipo de objeto RBAC válido" @@ -228,27 +163,16 @@ msgid "Address not present on interface" msgstr "La dirección no está presente en la interfaz" -#, python-format -msgid "Address scope %(address_scope_id)s could not be found" -msgstr "No se ha encontrado el ámbito de dirección %(address_scope_id)s" - msgid "" "Address to listen on for OpenFlow connections. Used only for 'native' driver." msgstr "" "Dirección en la que se escuchan las conexiones OpenFlow. Se utiliza sólo " "para el controlador 'native'." -msgid "Adds external network attribute to network resource." -msgstr "Añade atributo de red externa a recurso de red." - msgid "Adds test attributes to core resources." msgstr "Añade atributos de prueba a recursos de núcleo." #, python-format -msgid "Agent %(id)s could not be found" -msgstr "No se ha podido encontrar el agente %(id)s." - -#, python-format msgid "Agent %(id)s is not a L3 Agent or has been disabled" msgstr "El agente %(id)s no es un agente L3 válido o se ha inhabilitado" @@ -269,13 +193,6 @@ msgid "Agent updated: %(payload)s" msgstr "El agente se ha actualizado: %(payload)s" -#, python-format -msgid "" -"Agent with agent_type=%(agent_type)s and host=%(host)s could not be found" -msgstr "" -"El agente con agent_type=%(agent_type)s y host=%(host)s no se ha podido " -"encontrar" - msgid "Allow auto scheduling networks to DHCP agent." msgstr "Permita la planificación automática de redes para el agente DHCP." @@ -308,12 +225,6 @@ msgstr "" "Permitir ejecutar solicitudes SSL (https) no seguras en los metadatos de Nova" -msgid "Allowed address pairs must be a list." -msgstr "Los pares de dirección permitidos deben ser una lista." - -msgid "AllowedAddressPair must contain ip_address" -msgstr "AllowedAddressPair debe contener ip_address" - msgid "" "Allows for serving metadata requests coming from a dedicated metadata access " "network whose CIDR is 169.254.169.254/16 (or larger prefix), and is " @@ -377,11 +288,6 @@ msgid "Availability zone of this node" msgstr "Zona de disponibilidad de este nodo" -#, python-format -msgid "AvailabilityZone %(availability_zone)s could not be found." -msgstr "" -"No se ha podido encontrar la zona de disponibilidad %(availability_zone)s ." - msgid "Available commands" msgstr "Mandatos disponibles" @@ -449,16 +355,6 @@ "No se puede asignar la subred solicitada a partir del conjunto disponible de " "prefijos" -#, python-format -msgid "" -"Cannot associate floating IP %(floating_ip_address)s (%(fip_id)s) with port " -"%(port_id)s using fixed IP %(fixed_ip)s, as that fixed IP already has a " -"floating IP on external network %(net_id)s." -msgstr "" -"No se puede asociar la IP flotante %(floating_ip_address)s (%(fip_id)s) con " -"el puerto %(port_id)s mediante la IP fija %(fixed_ip)s, porque esa IP fija " -"ya tiene una IP flotante en la red externa %(net_id)s." - msgid "Cannot disable enable_dhcp with ipv6 attributes set" msgstr "No se puede inhabilitar enable_dhcp con atributos ipv6 establecidos" @@ -572,9 +468,6 @@ "El Cidr %(subnet_cidr)s de la subred %(subnet_id)s se solapa con el cidr " "%(cidr)s de la subred %(sub_id)s" -msgid "Class not found." -msgstr "No se ha encontrado la clase." - msgid "Cleanup resources of a specific agent type only." msgstr "Limpiar solo los recursos de un tipo de agente específico." @@ -818,10 +711,6 @@ "La dirección Mac del direccionador virtual distribuido para el host %(host)s " "no existe." -#, python-format -msgid "Domain %(dns_domain)s not found in the external DNS service" -msgstr "No se encuentra el dominio %(dns_domain)s en el servicio DNS externo" - msgid "Domain to use for building the hostnames" msgstr "Dominio a utilizar par crear los nombres de host" @@ -867,9 +756,6 @@ "%(router)s. No se puede actualizar la base de datos. Elimine todos los " "duplicados antes de actualizar la base de datos." -msgid "Duplicate Metering Rule in POST." -msgstr "Regla de medición duplicada en POST." - msgid "Duplicate Security Group Rule in POST." msgstr "Regla de grupo de seguridad duplicada en POST." @@ -972,9 +858,6 @@ "Si se añaden resolvedores DNS personalizados a la opción " "'dnsmasq_dns_servers' se deshabilita esta característica." -msgid "Encountered an empty component." -msgstr "Se ha encontrado un componente vacío." - msgid "End of VLAN range is less than start of VLAN range" msgstr "El final del rango VLAN es menor que el inicio del rango VLAN" @@ -1043,32 +926,10 @@ msgstr "Extensiones no encontradas: %(extensions)s." #, python-format -msgid "External DNS driver %(driver)s could not be found." -msgstr "No se ha podido encontrar el controlador DNS externo %(driver)s." - -#, python-format msgid "External IP %s is the same as the gateway IP" msgstr "El IP externo %s es el mismo que el IP de pasarela" #, python-format -msgid "" -"External network %(external_network_id)s is not reachable from subnet " -"%(subnet_id)s. Therefore, cannot associate Port %(port_id)s with a Floating " -"IP." -msgstr "" -"No se puede alcanzar la red externa %(external_network_id)s desde la subred " -"%(subnet_id)s. Por tanto, no se puede asociar el puerto %(port_id)s con una " -"IP flotante." - -#, python-format -msgid "" -"External network %(net_id)s cannot be updated to be made non-external, since " -"it has existing gateway ports" -msgstr "" -"La red externa %(net_id)s no se puede actualizar para convertirla en no " -"externa, ya que tiene puertos de pasarela existentes." - -#, python-format msgid "Failed rescheduling router %(router_id)s: no eligible l3 agent found." msgstr "" "No se ha podido volver a programar el direccionador %(router_id)s: no se ha " @@ -1081,14 +942,6 @@ "para el agente L3 %(agent_id)s." #, python-format -msgid "" -"Failed to allocate a VRID in the network %(network_id)s for the router " -"%(router_id)s after %(max_tries)s tries." -msgstr "" -"No se ha podido asignar un VRID en la red %(network_id)s para el " -"direccionador %(router_id)s después de %(max_tries)s intentos." - -#, python-format msgid "Failed to allocate subnet: %(reason)s." msgstr "No se ha podido asignar la subred: %(reason)s." @@ -1101,14 +954,6 @@ #, python-format msgid "" -"Failed to create a duplicate %(object_type)s: for attribute(s) " -"%(attributes)s with value(s) %(values)s" -msgstr "" -"Error al crear un duplicado %(object_type)s: para los atributos " -"%(attributes)s con los valores %(values)s" - -#, python-format -msgid "" "Failed to create port on network %(network_id)s, because fixed_ips included " "invalid subnet %(subnet_id)s" msgstr "" @@ -1145,30 +990,9 @@ msgid "Flat provider networks are disabled" msgstr "Las redes de proveedor simples están deshabilitadas" -#, python-format -msgid "Flavor %(flavor_id)s could not be found." -msgstr "No se ha podido encontrar el tipo %(flavor_id)s." - -#, python-format -msgid "Flavor %(flavor_id)s is used by some service instance." -msgstr "El tipo %(flavor_id)s lo utiliza alguna instancia de servicio." - -msgid "Flavor is not enabled." -msgstr "El tipo no está habilitado." - -#, python-format -msgid "Floating IP %(floatingip_id)s could not be found" -msgstr "No se ha podido encontrar la IP flotante %(floatingip_id)s." - msgid "For TCP/UDP protocols, port_range_min must be <= port_range_max" msgstr "Para los protocolos TCP/UDP, port_range_min debe ser <= port_range_max" -#, python-format -msgid "For class %(object_type)s missing primary keys: %(missing_keys)s" -msgstr "" -"Faltan las claves primarias siguientes para la clase %(object_type)s: " -"%(missing_keys)s" - msgid "Force ip_lib calls to use the root helper" msgstr "Forzar llamadas ip_lib para usar el ayudante raíz" @@ -1190,15 +1014,6 @@ "agrupación de asignación" #, python-format -msgid "" -"Gateway cannot be updated for router %(router_id)s, since a gateway to " -"external network %(net_id)s is required by one or more floating IPs." -msgstr "" -"La pasarela no se puede actualizar para el direccionador %(router_id)s, " -"porque una o más IP flotantes necesitan una pasarela a la red externa " -"%(net_id)s." - -#, python-format msgid "Gateway ip %(ip_address)s conflicts with allocation pool %(pool)s." msgstr "" "La IP de pasarela %(ip_address)s está en conflicto con la agrupación de " @@ -1460,10 +1275,6 @@ msgstr "Ethertype no válido %(ethertype)s para el protocolo %(protocol)s." #, python-format -msgid "Invalid format for routes: %(routes)s, %(reason)s" -msgstr "Formato no válido: %(routes)s, %(reason)s" - -#, python-format msgid "Invalid format: %s" msgstr "Formato no válido: %s" @@ -1507,10 +1318,6 @@ msgstr "Formato de proveedor de servicio no válido" #, python-format -msgid "Invalid service type %(service_type)s." -msgstr "Tipo de servicio no válido: %(service_type)s." - -#, python-format msgid "" "Invalid value for ICMP %(field)s (%(attr)s) %(value)s. It must be 0 to 255." msgstr "" @@ -1593,9 +1400,6 @@ msgid "Location of Metadata Proxy UNIX domain socket" msgstr "Ubicación de socket de dominio UNIX de proxy de metadatos" -msgid "Location of pid file of this process." -msgstr "Ubicación del archivo pid de este proceso." - msgid "Location to store DHCP server config files." msgstr "" "Ubicación donde almacenar los archivos de configuración de servidor DHCP." @@ -1687,22 +1491,6 @@ msgid "Metering driver" msgstr "Controlador de medición" -#, python-format -msgid "Metering label %(label_id)s does not exist" -msgstr "La etiqueta de medición %(label_id)s no existe" - -#, python-format -msgid "Metering label rule %(rule_id)s does not exist" -msgstr "La regla de etiqueta de medición %(rule_id)s no existe" - -#, python-format -msgid "" -"Metering label rule with remote_ip_prefix %(remote_ip_prefix)s overlaps " -"another" -msgstr "" -"Regla de etiqueta de medición con remote_ip_prefix %(remote_ip_prefix)s se " -"solapa otro" - msgid "MinRtrAdvInterval setting for radvd.conf" msgstr "Parámetro MinRtrAdvInterval para radvd.conf" @@ -1739,12 +1527,6 @@ "en todos los agentes." #, python-format -msgid "Multiple agents with agent_type=%(agent_type)s and host=%(host)s found" -msgstr "" -"Se han encontrado varios agentes con agent_type=%(agent_type)s y host=" -"%(host)s" - -#, python-format msgid "Multiple default providers for service %s" msgstr "Múltiples proveedores predeterminados para servicio %s" @@ -1769,22 +1551,6 @@ msgstr "" "Debe especificar una o más acciones en la adición o modificación de flujo" -#, python-format -msgid "Name %(dns_name)s is duplicated in the external DNS service" -msgstr "El nombre %(dns_name)s está duplicado en el servicio DNS externo" - -#, python-format -msgid "" -"Name '%s' must be 1-63 characters long, each of which can only be " -"alphanumeric or a hyphen." -msgstr "" -"El nombre '%s' debe tener 1-63 caracteres de longitud, y sólo pueden ser " -"alfanuméricos o guiones." - -#, python-format -msgid "Name '%s' must not start or end with a hyphen." -msgstr "El nombre '%s' no debe comenzar o terminar con un guión." - msgid "Name of Open vSwitch bridge to use" msgstr "Nombre de puente de Open vSwitch a utilizar" @@ -1872,15 +1638,6 @@ msgid "No more IP addresses available for subnet %(subnet_id)s." msgstr "No hay más direcciones IP disponibles en la subred %(subnet_id)s." -#, python-format -msgid "" -"No more Virtual Router Identifier (VRID) available when creating router " -"%(router_id)s. The limit of number of HA Routers per tenant is 254." -msgstr "" -"No hay ningún identificador de direccionador virtual (VRID) al crear el " -"direccionador %(router_id)s. El límite del número de direccionadores HA por " -"arrendatario es 254." - msgid "No offline migrations pending." msgstr "No hay migraciones fuera de línea pendientes." @@ -2139,13 +1896,6 @@ "dirección IPv4 específica al asignar una IP flotante" msgid "" -"Port Security must be enabled in order to have allowed address pairs on a " -"port." -msgstr "" -"Seguridad de puerto debe habilitar para tener pares de dirección admitida en " -"un puerto." - -msgid "" "Port to listen on for OpenFlow connections. Used only for 'native' driver." msgstr "" "Puerto en el que se escuchan las conexiones OpenFlow. Se utiliza sólo para " @@ -2313,22 +2063,6 @@ msgstr "" "Ha fallado la solicitar: error interno de servidor al procesar la solicitud." -#, python-format -msgid "" -"Request contains duplicate address pair: mac_address %(mac_address)s " -"ip_address %(ip_address)s." -msgstr "" -"La solicitud contiene par de dirección duplicada: mac_address " -"%(mac_address)s ip_address %(ip_address)s." - -#, python-format -msgid "" -"Requested subnet with cidr: %(cidr)s for network: %(network_id)s overlaps " -"with another subnet" -msgstr "" -"La subred solicitada con cidr: %(cidr)s para la red: %(network_id)s se " -"solapa con otra subred" - msgid "" "Reset flow table on start. Setting this to True will cause brief traffic " "interruption." @@ -2375,25 +2109,6 @@ msgstr "Se necesitan permisos de root para descartar privilegios." #, python-format -msgid "Router %(router_id)s %(reason)s" -msgstr "Direccionador %(router_id)s %(reason)s" - -#, python-format -msgid "Router %(router_id)s could not be found" -msgstr "No se ha podido encontrar el direccionador %(router_id)s." - -#, python-format -msgid "Router %(router_id)s does not have an interface with id %(port_id)s" -msgstr "" -"El direccionador %(router_id)s no tiene una interfaz con el id %(port_id)s" - -#, python-format -msgid "Router %(router_id)s has no interface on subnet %(subnet_id)s" -msgstr "" -"El direccionador %(router_id)s no tiene ninguna interfaz en la subred " -"%(subnet_id)s" - -#, python-format msgid "Router '%(router_id)s' is not compatible with this agent." msgstr "El direccionador '%(router_id)s' no es compatible con este agente." @@ -2401,24 +2116,6 @@ msgid "Router already has a port on subnet %s" msgstr "El direccionador ya tiene un puerto en la subred %s" -#, python-format -msgid "" -"Router interface for subnet %(subnet_id)s on router %(router_id)s cannot be " -"deleted, as it is required by one or more floating IPs." -msgstr "" -"La interfaz de direccionador para la subred %(subnet_id)s en el " -"direccionador %(router_id)s no se puede suprimir, porque la necesitan una o " -"más IP flotantes." - -#, python-format -msgid "" -"Router interface for subnet %(subnet_id)s on router %(router_id)s cannot be " -"deleted, as it is required by one or more routes." -msgstr "" -"La interfaz de direccionador para la subred %(subnet_id)s en el " -"direccionador %(router_id)s no se puede suprimir, porque la necesitan una o " -"más rutas." - msgid "Router port must have at least one fixed IP" msgstr "El puerto del direccionador debe tener al menos una IP fija" @@ -2501,34 +2198,6 @@ msgstr "Envíe notificación a nova cuando cambie el estado de puerto" #, python-format -msgid "Service Profile %(sp_id)s could not be found." -msgstr "No se ha podido encontrar el perfil de servicio %(sp_id)s." - -#, python-format -msgid "Service Profile %(sp_id)s is already associated with flavor %(fl_id)s." -msgstr "El perfil de servicio %(sp_id)s ya está asociado al tipo %(fl_id)s." - -#, python-format -msgid "Service Profile %(sp_id)s is not associated with flavor %(fl_id)s." -msgstr "El perfil de servicio %(sp_id)s no está asociado al tipo %(fl_id)s." - -#, python-format -msgid "Service Profile %(sp_id)s is used by some service instance." -msgstr "" -"El perfil de servicio %(sp_id)s lo utiliza alguna instancia de servicio." - -#, python-format -msgid "Service Profile driver %(driver)s could not be found." -msgstr "" -"No se ha podido encontrar el controlador de perfil de servicio %(driver)s." - -msgid "Service Profile is not enabled." -msgstr "El perfil de servicio no está habilitado." - -msgid "Service Profile needs either a driver or metainfo." -msgstr "El perfil de servicio necesita un controlador o bien metainformación." - -#, python-format msgid "" "Service provider '%(provider)s' could not be found for service type " "%(service_type)s" @@ -2599,9 +2268,6 @@ "Las subredes alojadas en la misma red se deben asignar desde la misma " "agrupación de subredes." -msgid "Suffix to append to all namespace names." -msgstr "Sufijo a agregar a todos los nombres de espacio de nombres." - msgid "" "System-wide flag to determine the type of router that tenants can create. " "Only admin can override." @@ -2617,13 +2283,6 @@ msgid "TCP Port used by Nova metadata server." msgstr "Puerto TCP utilizado por el servidor de metadatos de Nova." -#, python-format -msgid "TLD '%s' must not be all numeric" -msgstr "El TLD '%s' no debe ser enteramente numérico" - -msgid "TOS for vxlan interface protocol packets." -msgstr "TOS para paquetes de protocolo de interfaz vxlan." - msgid "TTL for vxlan interface protocol packets." msgstr "TTL para paquetes de protocolo de interfaz vxlan." @@ -2685,14 +2344,6 @@ "solicitar rutas de host vía DHCP (Opción 121). Esta opción no tiene ningún " "efecto cuando force_metadata está definido en True." -#, python-format -msgid "" -"The HA Network CIDR specified in the configuration file isn't valid; " -"%(cidr)s." -msgstr "" -"El CIDR de red HA especificado en el archivo de configuración no es válido; " -"%(cidr)s." - msgid "The UDP port to use for VXLAN tunnels." msgstr "El puerto UDP para a usar para los túneles VXLAN." @@ -2744,32 +2395,6 @@ msgid "The core plugin Neutron will use" msgstr "El core plugin Neutron usará" -#, python-format -msgid "" -"The dns_name passed is a FQDN. Its higher level labels must be equal to the " -"dns_domain option in neutron.conf, that has been set to '%(dns_domain)s'. It " -"must also include one or more valid DNS labels to the left of " -"'%(dns_domain)s'" -msgstr "" -"El nombre dns_name pasado es un FQDN. Sus etiquetas de nivel superior deben " -"ser iguales que la opción dns_domain en neutron.conf, que se ha establecido " -"en '%(dns_domain)s'. También debe incluir una o más etiquetas DNS válidas a " -"la izquierda de '%(dns_domain)s'" - -#, python-format -msgid "" -"The dns_name passed is a PQDN and its size is '%(dns_name_len)s'. The " -"dns_domain option in neutron.conf is set to %(dns_domain)s, with a length of " -"'%(higher_labels_len)s'. When the two are concatenated to form a FQDN (with " -"a '.' at the end), the resulting length exceeds the maximum size of " -"'%(fqdn_max_len)s'" -msgstr "" -"El nombre dns_name pasado es un PQDN y su tamaño es '%(dns_name_len)s'. La " -"opción dns_domain en neutron.conf se ha establecido en %(dns_domain)s, con " -"una longitud de '%(higher_labels_len)s'. Cuando se concatenan los dos para " -"formar un FQDN (con un '.' al final), la longitud resultante excede el " -"tamaño máximo de '%(fqdn_max_len)s'" - msgid "The driver used to manage the DHCP server." msgstr "El controlador utilizado para gestionar el servidor DHCP." @@ -2825,11 +2450,6 @@ "el primer 'tenant_network_types'. Esto es útil cuando el tráfico VRRP debe " "utilizar una red específica que no sea el valor predeterminado." -#, python-format -msgid "The number of allowed address pair exceeds the maximum %(quota)s." -msgstr "" -"El número de pares de direcciones permitidos excede el máximo de %(quota)s." - msgid "" "The number of seconds the agent will wait between polling for local device " "changes." @@ -2904,26 +2524,6 @@ msgstr "El tipo de autenticación a utilizar" msgid "" -"The working mode for the agent. Allowed modes are: 'legacy' - this preserves " -"the existing behavior where the L3 agent is deployed on a centralized " -"networking node to provide L3 services like DNAT, and SNAT. Use this mode if " -"you do not want to adopt DVR. 'dvr' - this mode enables DVR functionality " -"and must be used for an L3 agent that runs on a compute host. 'dvr_snat' - " -"this enables centralized SNAT support in conjunction with DVR. This mode " -"must be used for an L3 agent running on a centralized node (or in single-" -"host deployments, e.g. devstack)" -msgstr "" -"La modalidad de trabajo del agente. Las modalidades permitidas son: " -"'heredada' - conserva el comportamiento existente, donde el agente L3 se " -"despliega en un nodo de red centralizado para proporcionar servicios de L3 " -"como DNAT y SNAT. Utilice esta modalidad si no desea adoptar DVR. 'dvr' - " -"esta modalidad habilita la funcionalidad DVR y debe utilizarse para un " -"agente L3 que se ejecuta en un host de cálculo. 'dvr_snat' - habilita el " -"soporte SNAT centralizado conjuntamente con DVR. Esta modalidad debe " -"utilizarse para un agente L3 que se ejecuta en un nodo centralizado (o en " -"despliegues de un solo host, por ejemplo, devstack)" - -msgid "" "There are routers attached to this network that depend on this policy for " "access." msgstr "" @@ -2931,13 +2531,6 @@ "su acceso." msgid "" -"Timeout in seconds for ovs-vsctl commands. If the timeout expires, ovs " -"commands will fail with ALARMCLOCK error." -msgstr "" -"Tiempo de espera en segundos para mandatos ovs-vsctl. Si se excede el tiempo " -"de espera, los mandatos ovs fallarán y darán un error de ALARMCLOCK." - -msgid "" "Timeout in seconds to wait for a single OpenFlow request. Used only for " "'native' driver." msgstr "" @@ -2958,9 +2551,6 @@ "Se ha proporcionado un prefijo demasiado largo. El nuevo nombre superaría la " "longitud indicada para un nombre de interfaz." -msgid "Too many availability_zone_hints specified" -msgstr "Se han especificado demasiadas availability_zone_hints" - msgid "" "True to delete all ports on all the OpenvSwitch bridges. False to delete " "ports created by Neutron on integration and external network bridges." @@ -3016,14 +2606,6 @@ #, python-format msgid "" -"Unable to complete operation for %(router_id)s. The number of routes exceeds " -"the maximum %(quota)s." -msgstr "" -"No se ha podido completar la operación para %(router_id)s. El número de " -"rutas supera el máximo de %(quota)s." - -#, python-format -msgid "" "Unable to complete operation for %(subnet_id)s. The number of DNS " "nameservers exceeds the limit %(quota)s." msgstr "" @@ -3039,15 +2621,6 @@ "rutas de host supera el límite %(quota)s." #, python-format -msgid "" -"Unable to complete operation on address scope %(address_scope_id)s. There " -"are one or more subnet pools in use on the address scope" -msgstr "" -"No es posible completar la operación en el ámbito de dirección " -"%(address_scope_id)s. Hay una o más agrupaciones de subredes en uso en el " -"ámbito de dirección" - -#, python-format msgid "Unable to convert value in %s" msgstr "No se puede convertir el valor en %s " @@ -3094,10 +2667,6 @@ msgstr "No se ha podido encontrar el nombre del recurso en %s" #, python-format -msgid "Unable to generate unique DVR mac for host %(host)s." -msgstr "No se puede generar la mac DVR exclusiva para el host %(host)s." - -#, python-format msgid "Unable to generate unique mac on network %(net_id)s." msgstr "No se puede generar mac exclusivo en la red %(net_id)s. " @@ -3124,17 +2693,6 @@ "Varios arrendatarios la están utilizando." #, python-format -msgid "Unable to update address scope %(address_scope_id)s : %(reason)s" -msgstr "" -"No se puede actualizar el ámbito de dirección %(address_scope_id)s : " -"%(reason)s" - -#, python-format -msgid "Unable to update the following object fields: %(fields)s" -msgstr "" -"No se han podido actualizar los siguientes campos de objetos: %(fields)s" - -#, python-format msgid "" "Unable to verify match:%(match)s as the parent resource: %(res)s was not " "found" @@ -3162,9 +2720,6 @@ msgid "Unit name '%(unit)s' is not valid." msgstr "El nombre de unidad '%(unit)s' no es válido." -msgid "Unknown API version specified" -msgstr "Versión API desconocida especificada" - #, python-format msgid "Unknown address type %(address_type)s" msgstr "Tipo de dirección desconocido %(address_type)s" @@ -3271,14 +2826,6 @@ "Nombre de usuario para establecer conexión con el designado en el contexto " "de administración" -msgid "" -"Uses veth for an OVS interface or not. Support kernels with limited " -"namespace support (e.g. RHEL 6.5) so long as ovs_use_veth is set to True." -msgstr "" -"Si utiliza veth para una interfaz o no. Admite núcleos con soporte limitado " -"para espacios de nombres (p.e. RHEL 6.5) siempre y cuando ovs_use_veth esté " -"definido a True." - msgid "VRRP authentication password" msgstr "Contraseña de autenticación de VRRP" @@ -3288,14 +2835,6 @@ msgid "VXLAN network unsupported." msgstr "Red VXLAN no soportada." -#, python-format -msgid "" -"Value of %(parameter)s has to be multiple of %(number)s, with maximum value " -"of %(maximum)s and minimum value of %(minimum)s" -msgstr "" -"El valor de %(parameter)s tiene que ser un múltiplo de %(number)s, con un " -"valor máximo de %(maximum)s y un valor mínimo de %(minimum)s" - msgid "" "Value of host kernel tick rate (hz) for calculating minimum burst value in " "bandwidth limit rules for a port with QoS. See kernel configuration file for " @@ -3497,10 +3036,6 @@ msgid "provider:physical_network specified for %s network" msgstr "proveedor:physical_network especificado para la red %s" -#, python-format -msgid "rbac_db_model not found in %s" -msgstr "No se ha encontrado rbac_db_model en %s" - msgid "respawn_interval must be >= 0 if provided." msgstr "respawn_interval debe ser >= 0 si se proporciona." @@ -3532,10 +3067,3 @@ msgid "the nexthop is used by router" msgstr "el siguiente salto lo está utilizando el direccionador" - -msgid "" -"uuid provided from the command line so external_process can track us via /" -"proc/cmdline interface." -msgstr "" -"uuid proporcionada desde la línea de mandatos para que external_process " -"puede realizar un seguimiento a través de la interfaz /proc/cmdline." diff -Nru neutron-12.0.0/neutron/locale/fr/LC_MESSAGES/neutron.po neutron-12.0.1/neutron/locale/fr/LC_MESSAGES/neutron.po --- neutron-12.0.0/neutron/locale/fr/LC_MESSAGES/neutron.po 2018-02-28 11:30:39.000000000 +0000 +++ neutron-12.0.1/neutron/locale/fr/LC_MESSAGES/neutron.po 2018-03-29 17:33:26.000000000 +0000 @@ -10,9 +10,9 @@ # Andreas Jaeger , 2016. #zanata msgid "" msgstr "" -"Project-Id-Version: neutron 11.0.0.0b3.dev326\n" +"Project-Id-Version: neutron VERSION\n" "Report-Msgid-Bugs-To: https://bugs.launchpad.net/openstack-i18n/\n" -"POT-Creation-Date: 2017-07-18 03:24+0000\n" +"POT-Creation-Date: 2018-03-14 04:19+0000\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" @@ -21,7 +21,7 @@ "Language: fr\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" "Generated-By: Babel 2.0\n" -"X-Generator: Zanata 3.9.6\n" +"X-Generator: Zanata 4.3.3\n" "Language-Team: French\n" #, python-format @@ -65,38 +65,6 @@ msgstr "%(key)s interdit pour le réseau de fournisseur %(tunnel)s" #, python-format -msgid "" -"%(method)s called with network settings %(current)s (original settings " -"%(original)s) and network segments %(segments)s" -msgstr "" -"%(method)s appelé avec les paramètres réseau %(current)s (paramètres " -"d'origine %(original)s) et segments de réseau %(segments)s" - -#, python-format -msgid "" -"%(method)s called with port settings %(current)s (original settings " -"%(original)s) host %(host)s (original host %(original_host)s) vif type " -"%(vif_type)s (original vif type %(original_vif_type)s) vif details " -"%(vif_details)s (original vif details %(original_vif_details)s) binding " -"levels %(levels)s (original binding levels %(original_levels)s) on network " -"%(network)s with segments to bind %(segments_to_bind)s" -msgstr "" -"%(method)s appelée avec les paramètres de port %(current)s (paramètres " -"d'origine %(original)s) hôte %(host)s (hôte d'origine %(original_host)s) " -"type vif %(vif_type)s (type vif d'origine %(original_vif_type)s) détails vif " -"%(vif_details)s (détails vif d'origine %(original_vif_details)s) niveaux de " -"liaison %(levels)s (niveaux de liaison d'origine %(original_levels)s) sur le " -"réseau %(network)s avec des segments de liaison %(segments_to_bind)s" - -#, python-format -msgid "" -"%(method)s called with subnet settings %(current)s (original settings " -"%(original)s)" -msgstr "" -"%(method)s a appelé les paramètres de sous-réseau %(current)s (paramètres " -"d'origine %(original)s)" - -#, python-format msgid "%(name)s '%(addr)s' does not match the ip_version '%(ip_version)s'" msgstr "%(name)s '%(addr)s' ne correspond pas à ip_version '%(ip_version)s'" @@ -129,44 +97,6 @@ msgstr "%s interdit pour le réseau de fournisseurs local" #, python-format -msgid "" -"'%(data)s' contains '%(length)s' characters. Adding a domain name will cause " -"it to exceed the maximum length of a FQDN of '%(max_len)s'" -msgstr "" -"'%(data)s' contient '%(length)s' caractères. L'ajout d'un nom de domaine va " -"entraîner un dépassement de la longueur maximum de '%(max_len)s' pour un nom " -"de domaine complet" - -#, python-format -msgid "" -"'%(data)s' contains '%(length)s' characters. Adding a sub-domain will cause " -"it to exceed the maximum length of a FQDN of '%(max_len)s'" -msgstr "" -"'%(data)s' contient '%(length)s' caractères. L'ajout d'un sous-domaine va " -"entraîner le dépassement de la longueur maximum de '%(max_len)s' pour un nom " -"de domaine complet" - -#, python-format -msgid "'%(data)s' not a valid PQDN or FQDN. Reason: %(reason)s" -msgstr "" -"'%(data)s' n'est pas un nom PQDN ou un nom de domaine complet valide. " -"Motif : %(reason)s" - -#, python-format -msgid "'%s' cannot be converted to lowercase string" -msgstr "'%s' ne peut pas être converti en une chaîne minuscule " - -#, python-format -msgid "'%s' is a FQDN. It should be a relative domain name" -msgstr "" -"'%s' est un nom de domaine complet. Cela devrait être un nom de domaine " -"relatif" - -#, python-format -msgid "'%s' is not a FQDN" -msgstr "'%s' n'est pas un nom de domaine complet" - -#, python-format msgid "'%s' is not a valid RBAC object type" msgstr "'%s' n'est pas un type d'objet RBAC valide" @@ -236,27 +166,16 @@ msgid "Address not present on interface" msgstr "Une adresse n'est pas présente sur l'interface" -#, python-format -msgid "Address scope %(address_scope_id)s could not be found" -msgstr "La portée d'adresse %(address_scope_id)s est introuvable" - msgid "" "Address to listen on for OpenFlow connections. Used only for 'native' driver." msgstr "" "Adresse à utiliser pour l'écoute des connexions OpenFlow. Utilisée " "uniquement pour le pilote 'natif'." -msgid "Adds external network attribute to network resource." -msgstr "Ajoute l'attribut de réseau externe à la ressource du réseau." - msgid "Adds test attributes to core resources." msgstr "Ajoute les attributs de test aux ressources principales." #, python-format -msgid "Agent %(id)s could not be found" -msgstr "Agent %(id)s introuvable" - -#, python-format msgid "Agent %(id)s is not a L3 Agent or has been disabled" msgstr "L'agent %(id)s n'est pas un agent L3 ou a été désactivé" @@ -278,11 +197,6 @@ msgid "Agent updated: %(payload)s" msgstr "Mise à jour de l'agent: %(payload)s" -#, python-format -msgid "" -"Agent with agent_type=%(agent_type)s and host=%(host)s could not be found" -msgstr "Agent introuvable avec agent_type=%(agent_type)s et host=%(host)s" - msgid "Allow auto scheduling networks to DHCP agent." msgstr "Autorise la planification automatique des réseaux de l'agent DHCP." @@ -316,12 +230,6 @@ "Permet d'effectuer des requêtes (https) non sécurisées aux métadonnées de " "nova" -msgid "Allowed address pairs must be a list." -msgstr "Les paires d'adresses autorisées doivent figurer dans une liste. " - -msgid "AllowedAddressPair must contain ip_address" -msgstr "AllowedAddressPair doit contenir ip_address" - msgid "" "Allows for serving metadata requests coming from a dedicated metadata access " "network whose CIDR is 169.254.169.254/16 (or larger prefix), and is " @@ -386,10 +294,6 @@ msgid "Availability zone of this node" msgstr "Zone de disponibilité du noeud" -#, python-format -msgid "AvailabilityZone %(availability_zone)s could not be found." -msgstr "AvailabilityZone %(availability_zone)s est introuvable." - msgid "Available commands" msgstr "Commandes disponibles" @@ -458,17 +362,6 @@ "Impossible d'allouer le sous-réseau demandé à partir de l'ensemble de " "préfixes disponibles" -#, python-format -msgid "" -"Cannot associate floating IP %(floating_ip_address)s (%(fip_id)s) with port " -"%(port_id)s using fixed IP %(fixed_ip)s, as that fixed IP already has a " -"floating IP on external network %(net_id)s." -msgstr "" -"Impossible d'associer l'adresse IP flottante %(floating_ip_address)s " -"(%(fip_id)s) avec le port %(port_id)s en utilisant l'adresse IP fixe " -"%(fixed_ip)s, car cette adresse IP fixe a déjà une adresse IP flottante sur " -"le réseau externe %(net_id)s." - msgid "Cannot disable enable_dhcp with ipv6 attributes set" msgstr "Impossible de désactiver enable_dhcp avec des attributs ipv6 définis" @@ -582,9 +475,6 @@ "Le routage CIDR %(subnet_cidr)s du sous-réseau %(subnet_id)s chevauche le " "routage CIDR %(cidr)s du sous-réseau %(sub_id)s" -msgid "Class not found." -msgstr "Classe non trouvé." - msgid "Cleanup resources of a specific agent type only." msgstr "Ressources de nettoyage d'un type d'agent spécifique uniquement." @@ -828,10 +718,6 @@ "L'adresse MAC DVR (routeur virtuel distribué) n'existe pas pour l'hôte " "%(host)s." -#, python-format -msgid "Domain %(dns_domain)s not found in the external DNS service" -msgstr "Domaine %(dns_domain)s non trouvé dans le service DNS externe" - msgid "Domain to use for building the hostnames" msgstr "Domaine à utiliser pour générer les noms d'hôte" @@ -877,9 +763,6 @@ "Retirez tous les éléments en double avant de mettre à niveau la base de " "données." -msgid "Duplicate Metering Rule in POST." -msgstr "Règle de mesure en double dans POST." - msgid "Duplicate Security Group Rule in POST." msgstr "" "Règle de groupe de sécurité en double dans l'autotest à la mise sous tension." @@ -986,9 +869,6 @@ "de programmes de résolution DNS personnalisés à l'option " "'dnsmasq_dns_servers' désactive cette fonction." -msgid "Encountered an empty component." -msgstr "Un composant vide a été trouvé." - msgid "End of VLAN range is less than start of VLAN range" msgstr "La fin de la plage de réseaux locaux virtuels est inférieure au début" @@ -1057,32 +937,10 @@ msgstr "Extensions non trouvé: %(extensions)s " #, python-format -msgid "External DNS driver %(driver)s could not be found." -msgstr "Le pilote DNS externe %(driver)s est introuvable." - -#, python-format msgid "External IP %s is the same as the gateway IP" msgstr "L'adresse IP externe %s est identique à l'adresse IP de passerelle" #, python-format -msgid "" -"External network %(external_network_id)s is not reachable from subnet " -"%(subnet_id)s. Therefore, cannot associate Port %(port_id)s with a Floating " -"IP." -msgstr "" -"Le réseau externe %(external_network_id)s n'est pas accessible à partir du " -"sous-réseau %(subnet_id)s. Par conséquent, il est impossible d'associer le " -"port %(port_id)s avec une adresse IP flottante." - -#, python-format -msgid "" -"External network %(net_id)s cannot be updated to be made non-external, since " -"it has existing gateway ports" -msgstr "" -"Le réseau externe %(net_id)s ne peut pas être mis à jour pour devenir non " -"externe car il a des ports de passerelle existants" - -#, python-format msgid "Failed rescheduling router %(router_id)s: no eligible l3 agent found." msgstr "" "Echec de la replanification du routeur %(router_id)s : aucun agent l3 " @@ -1094,14 +952,6 @@ "Echec de planification du routeur %(router_id)s vers l'agent L3 %(agent_id)s." #, python-format -msgid "" -"Failed to allocate a VRID in the network %(network_id)s for the router " -"%(router_id)s after %(max_tries)s tries." -msgstr "" -"Echec de l'allocation d'un identificateur de routeur virtuel dans le réseau " -"%(network_id)s pour le routeur %(router_id)s après %(max_tries)s tentatives." - -#, python-format msgid "Failed to allocate subnet: %(reason)s." msgstr "Échec d'allocation de sous-réseau : %(reason)s." @@ -1114,14 +964,6 @@ #, python-format msgid "" -"Failed to create a duplicate %(object_type)s: for attribute(s) " -"%(attributes)s with value(s) %(values)s" -msgstr "" -"Echec de la création d'un élément %(object_type)s en double pour le ou les " -"attribut(s) %(attributes)s avec la ou les valeur(s) %(values)s" - -#, python-format -msgid "" "Failed to create port on network %(network_id)s, because fixed_ips included " "invalid subnet %(subnet_id)s" msgstr "" @@ -1163,31 +1005,9 @@ msgid "Flat provider networks are disabled" msgstr "Les réseaux de fournisseurs centralisés sont désactivés" -#, python-format -msgid "Flavor %(flavor_id)s could not be found." -msgstr "La version %(flavor_id)s est introuvable." - -#, python-format -msgid "Flavor %(flavor_id)s is used by some service instance." -msgstr "" -"La version %(flavor_id)s est utilisée par certaines instances de service." - -msgid "Flavor is not enabled." -msgstr "La version n'est pas activée." - -#, python-format -msgid "Floating IP %(floatingip_id)s could not be found" -msgstr "L'adresse IP flottante %(floatingip_id)s est introuvable" - msgid "For TCP/UDP protocols, port_range_min must be <= port_range_max" msgstr "Pour les protocole TCP/UDP, port_range_min doit être <= port_range_max" -#, python-format -msgid "For class %(object_type)s missing primary keys: %(missing_keys)s" -msgstr "" -"Pour les clés primaires manquantes de la classe %(object_type)s : " -"%(missing_keys)s" - msgid "Force ip_lib calls to use the root helper" msgstr "Forcez les appels ip_lib à utiliser Root Helper" @@ -1208,15 +1028,6 @@ "Version IP de passerelle non cohérente avec la version de pool d'allocation" #, python-format -msgid "" -"Gateway cannot be updated for router %(router_id)s, since a gateway to " -"external network %(net_id)s is required by one or more floating IPs." -msgstr "" -"La passerelle ne peut pas être mise à jour pour le routeur %(router_id)s, " -"car une passerelle vers le réseau externe %(net_id)s est requise par une ou " -"plusieurs adresses IP flottantes." - -#, python-format msgid "Gateway ip %(ip_address)s conflicts with allocation pool %(pool)s." msgstr "" "Conflits de l'IP passerelle %(ip_address)s avec le pool d'allocation " @@ -1474,10 +1285,6 @@ msgstr "ethertype %(ethertype)s non valide pour le protocole %(protocol)s." #, python-format -msgid "Invalid format for routes: %(routes)s, %(reason)s" -msgstr "Format de routes non valide : %(routes)s, %(reason)s" - -#, python-format msgid "Invalid format: %s" msgstr "Format non valide : %s" @@ -1521,10 +1328,6 @@ msgstr "Format de fournisseur de service non valide" #, python-format -msgid "Invalid service type %(service_type)s." -msgstr "Type de service non valide %(service_type)s." - -#, python-format msgid "" "Invalid value for ICMP %(field)s (%(attr)s) %(value)s. It must be 0 to 255." msgstr "" @@ -1610,9 +1413,6 @@ msgid "Location of Metadata Proxy UNIX domain socket" msgstr "Emplacement du socket de domaine UNIX du proxy de métadonnées" -msgid "Location of pid file of this process." -msgstr "Emplacement du fichier pid de ce processus." - msgid "Location to store DHCP server config files." msgstr "Emplacement de stockage des fichiers de configuration du serveur DHCP." @@ -1702,22 +1502,6 @@ msgid "Metering driver" msgstr "Pilote de décompte" -#, python-format -msgid "Metering label %(label_id)s does not exist" -msgstr "L'étiquette de mesure %(label_id)s n'existe pas" - -#, python-format -msgid "Metering label rule %(rule_id)s does not exist" -msgstr "La règle d'étiquette de mesure %(rule_id)s n'existe pas" - -#, python-format -msgid "" -"Metering label rule with remote_ip_prefix %(remote_ip_prefix)s overlaps " -"another" -msgstr "" -"La règle d'étiquette de mesure avec remote_ip_prefix %(remote_ip_prefix)s " -"chevauche un(e) autre" - msgid "MinRtrAdvInterval setting for radvd.conf" msgstr "Paramètre MinRtrAdvInterval pour radvd.conf" @@ -1757,11 +1541,6 @@ "identique sur tous les agents." #, python-format -msgid "Multiple agents with agent_type=%(agent_type)s and host=%(host)s found" -msgstr "" -"Plusieurs agents trouvés avec agent_type=%(agent_type)s et host=%(host)s" - -#, python-format msgid "Multiple default providers for service %s" msgstr "Fournisseurs multiples par défaut pour le service %s" @@ -1786,22 +1565,6 @@ msgstr "" "Doit indiquer une ou plusieurs actions sur l'ajout ou la modification de flux" -#, python-format -msgid "Name %(dns_name)s is duplicated in the external DNS service" -msgstr "Le nom %(dns_name)s est en double dans le service DNS externe" - -#, python-format -msgid "" -"Name '%s' must be 1-63 characters long, each of which can only be " -"alphanumeric or a hyphen." -msgstr "" -"Le nom '%s' doit comprendre entre 1 et 63 caractères (seuls les caractères " -"alphanumériques et le trait d'union sont admis)." - -#, python-format -msgid "Name '%s' must not start or end with a hyphen." -msgstr "Le nom '%s' ne doit pas commencer ni se terminer par un trait d'union." - msgid "Name of Open vSwitch bridge to use" msgstr "Nom du pont Open vSwitch à utiliser" @@ -1887,15 +1650,6 @@ msgstr "" "Pas d'autres adresses IP disponibles pour le sous-réseau %(subnet_id)s." -#, python-format -msgid "" -"No more Virtual Router Identifier (VRID) available when creating router " -"%(router_id)s. The limit of number of HA Routers per tenant is 254." -msgstr "" -"Plus d'identificateur de routeur virtuel disponible lors de la création du " -"routeur %(router_id)s. Le nombre maximum de routeurs haute disponibilité par " -"locataire est 254." - msgid "No offline migrations pending." msgstr "Aucune migration hors ligne en attente." @@ -2153,13 +1907,6 @@ "flottante." msgid "" -"Port Security must be enabled in order to have allowed address pairs on a " -"port." -msgstr "" -"La sécurité du port doit être activée pour avoir les paires d'adresse " -"autorisées sur un port." - -msgid "" "Port to listen on for OpenFlow connections. Used only for 'native' driver." msgstr "" "Port à utiliser pour l'écoute des connexions OpenFlow. Utilisé uniquement " @@ -2324,22 +2071,6 @@ "Echec de la demande : erreur de serveur interne lors du traitement de votre " "demande." -#, python-format -msgid "" -"Request contains duplicate address pair: mac_address %(mac_address)s " -"ip_address %(ip_address)s." -msgstr "" -"La demande contient la paire d'adresse en double : mac_address " -"%(mac_address)s ip_address %(ip_address)s." - -#, python-format -msgid "" -"Requested subnet with cidr: %(cidr)s for network: %(network_id)s overlaps " -"with another subnet" -msgstr "" -"Le sous-réseau demandé avec le routage CIDR : %(cidr)s pour le réseau : " -"%(network_id)s chevauche un autre sous-réseau" - msgid "" "Reset flow table on start. Setting this to True will cause brief traffic " "interruption." @@ -2386,25 +2117,6 @@ msgstr "Les droits root sont obligatoires pour supprimer des privilèges." #, python-format -msgid "Router %(router_id)s %(reason)s" -msgstr "Routeur %(router_id)s %(reason)s" - -#, python-format -msgid "Router %(router_id)s could not be found" -msgstr "Le routeur %(router_id)s est introuvable." - -#, python-format -msgid "Router %(router_id)s does not have an interface with id %(port_id)s" -msgstr "" -"Le routeur %(router_id)s ne comporte pas d'interface avec l'ID %(port_id)s." - -#, python-format -msgid "Router %(router_id)s has no interface on subnet %(subnet_id)s" -msgstr "" -"Le routeur %(router_id)s ne comporte pas d'interface sur le sous-réseau " -"%(subnet_id)s." - -#, python-format msgid "Router '%(router_id)s' is not compatible with this agent." msgstr "Le routeur '%(router_id)s' n'est pas compatible avec cet agent." @@ -2412,24 +2124,6 @@ msgid "Router already has a port on subnet %s" msgstr "Le routeur dispose déjà d'un port sur le sous-réseau %s." -#, python-format -msgid "" -"Router interface for subnet %(subnet_id)s on router %(router_id)s cannot be " -"deleted, as it is required by one or more floating IPs." -msgstr "" -"L'interface de routeur du sous-réseau %(subnet_id)s sur le routeur " -"%(router_id)s être supprimée car elle est requise par une ou plusieurs " -"adresses IP flottantes." - -#, python-format -msgid "" -"Router interface for subnet %(subnet_id)s on router %(router_id)s cannot be " -"deleted, as it is required by one or more routes." -msgstr "" -"L'interface de routeur du sous-réseau %(subnet_id)s sur le routeur " -"%(router_id)s être supprimée car elle est requise par une ou plusieurs " -"routes." - msgid "Router port must have at least one fixed IP" msgstr "Le port de routeur doit avoir au moins une IP fixe" @@ -2515,36 +2209,6 @@ "Envoyer une notification à nova lors de la modification du statut de port" #, python-format -msgid "Service Profile %(sp_id)s could not be found." -msgstr "Le profil de service %(sp_id)s est introuvable." - -#, python-format -msgid "Service Profile %(sp_id)s is already associated with flavor %(fl_id)s." -msgstr "" -"Le profil de service %(sp_id)s est déjà associé à la version %(fl_id)s." - -#, python-format -msgid "Service Profile %(sp_id)s is not associated with flavor %(fl_id)s." -msgstr "" -"Le profil de service %(sp_id)s n'est pas associé à la version %(fl_id)s." - -#, python-format -msgid "Service Profile %(sp_id)s is used by some service instance." -msgstr "" -"Le profil de service %(sp_id)s est utilisé par certaines instances de " -"service." - -#, python-format -msgid "Service Profile driver %(driver)s could not be found." -msgstr "Le pilote de profil de service %(driver)s est introuvable." - -msgid "Service Profile is not enabled." -msgstr "Le profil de service n'est pas activé." - -msgid "Service Profile needs either a driver or metainfo." -msgstr "Le profil de service a besoin d'un pilote ou d'infos de métadonnées." - -#, python-format msgid "" "Service provider '%(provider)s' could not be found for service type " "%(service_type)s" @@ -2616,9 +2280,6 @@ "Les sous-réseaux hébergés sur le même réseau doivent être alloués à partir " "du même pool de sous-réseau." -msgid "Suffix to append to all namespace names." -msgstr "Suffixe à ajouter à tous les noms d'espace nom." - msgid "" "System-wide flag to determine the type of router that tenants can create. " "Only admin can override." @@ -2632,13 +2293,6 @@ msgid "TCP Port used by Nova metadata server." msgstr "Port TCP utilisé par le serveur de métadonnées Nova" -#, python-format -msgid "TLD '%s' must not be all numeric" -msgstr "TLD '%s' ne doit pas être entièrement numérique" - -msgid "TOS for vxlan interface protocol packets." -msgstr "TOS pour les paquets du protocole d'interface vxlan." - msgid "TTL for vxlan interface protocol packets." msgstr "Durée de vie pour les paquets du protocole d'interface vxlan." @@ -2697,14 +2351,6 @@ "DHCP (Option 121). Cette option n'a aucun effet lorsque force_metadata est " "défini sur True." -#, python-format -msgid "" -"The HA Network CIDR specified in the configuration file isn't valid; " -"%(cidr)s." -msgstr "" -"Le routage CIDR du réseau haute disponibilité indiqué dans le fichier de " -"configuration n'est pas valide ; %(cidr)s." - msgid "The UDP port to use for VXLAN tunnels." msgstr "Port UDP a utiliser pour les tunnels VXLAN." @@ -2756,32 +2402,6 @@ msgid "The core plugin Neutron will use" msgstr "Le core plugin de Neutron va etre utiliser" -#, python-format -msgid "" -"The dns_name passed is a FQDN. Its higher level labels must be equal to the " -"dns_domain option in neutron.conf, that has been set to '%(dns_domain)s'. It " -"must also include one or more valid DNS labels to the left of " -"'%(dns_domain)s'" -msgstr "" -"L'élément dns_name transmis est un nom FQDN. Ses libellés de niveau " -"supérieur doivent correspondre à l'option dns_domain dans neutron.conf, dont " -"la valeur est %(dns_domain)s'. Il doit également inclure un ou plusieurs " -"libellés DNS valides à la gauche de '%(dns_domain)s'" - -#, python-format -msgid "" -"The dns_name passed is a PQDN and its size is '%(dns_name_len)s'. The " -"dns_domain option in neutron.conf is set to %(dns_domain)s, with a length of " -"'%(higher_labels_len)s'. When the two are concatenated to form a FQDN (with " -"a '.' at the end), the resulting length exceeds the maximum size of " -"'%(fqdn_max_len)s'" -msgstr "" -"L'élément dns_name transmis est un nom PQDN et sa taille est " -"%(dns_name_len)s'. L'option dns_domain dans neutron.conf a pour valeur " -"%(dns_domain)s et sa longueur est '%(higher_labels_len)s'. Lorsque les deux " -"sont concaténés pour former un nom FQDN (avec un '.' à la fin), la longueur " -"obtenue dépasse la taille maximale de '%(fqdn_max_len)s'" - msgid "The driver used to manage the DHCP server." msgstr "Pilote utilisé pour gérer le serveur DHCP" @@ -2838,10 +2458,6 @@ "lorsque le trafic VRRP doit utiliser un réseau spécifique différent de celui " "défini par défaut. " -#, python-format -msgid "The number of allowed address pair exceeds the maximum %(quota)s." -msgstr "Le nombre de paires d'adreses autorisé dépasse le maximum %(quota)s." - msgid "" "The number of seconds the agent will wait between polling for local device " "changes." @@ -2922,27 +2538,6 @@ msgstr "Type d'authentification à utiliser" msgid "" -"The working mode for the agent. Allowed modes are: 'legacy' - this preserves " -"the existing behavior where the L3 agent is deployed on a centralized " -"networking node to provide L3 services like DNAT, and SNAT. Use this mode if " -"you do not want to adopt DVR. 'dvr' - this mode enables DVR functionality " -"and must be used for an L3 agent that runs on a compute host. 'dvr_snat' - " -"this enables centralized SNAT support in conjunction with DVR. This mode " -"must be used for an L3 agent running on a centralized node (or in single-" -"host deployments, e.g. devstack)" -msgstr "" -"Mode de fonctionnement de l'agent. Les modes sont : 'legacy' - ceci préserve " -"le comportement existant où l'agent de niveau 3 est déployé sur un noeud " -"centralisé de mise en réseau pour fournir des services de niveau 3 comme " -"DNAT et SNAT. Utilisez ce mode si vous ne voulez pas adopter le routeur " -"virtuel distribué (DVR). 'dvr' - ce mode active la fonctionnalité DVR et " -"doit être utilisé pour un agent de niveau 3 qui s'exécute sur un hôte de " -"traitement. 'dvr_snat' - active la prise en charge SNAT centralisée " -"conjointement avec DVR. Ce mode doit être utilisé pour un agent de niveau 3 " -"fonctionnant sur un noeud centralisé (ou dans des déploiements à un seul " -"hôte, par ex. devstack)" - -msgid "" "There are routers attached to this network that depend on this policy for " "access." msgstr "" @@ -2950,13 +2545,6 @@ "l'accès." msgid "" -"Timeout in seconds for ovs-vsctl commands. If the timeout expires, ovs " -"commands will fail with ALARMCLOCK error." -msgstr "" -"Délai en secondes pour les commandes ovs-vsctl. Si ce délai expire, les " -"commandes ovs échouent avec une erreur ALARMCLOCK." - -msgid "" "Timeout in seconds to wait for a single OpenFlow request. Used only for " "'native' driver." msgstr "" @@ -2977,9 +2565,6 @@ "Le préfixe fourni est trop long. Un nouveau nom dépasserait la longueur " "indiquée pour un nom d'interface." -msgid "Too many availability_zone_hints specified" -msgstr "Trop d'éléments availability_zone_hints spécifiés" - msgid "" "True to delete all ports on all the OpenvSwitch bridges. False to delete " "ports created by Neutron on integration and external network bridges." @@ -3035,14 +2620,6 @@ #, python-format msgid "" -"Unable to complete operation for %(router_id)s. The number of routes exceeds " -"the maximum %(quota)s." -msgstr "" -"Impossible de terminer l'opération pour %(router_id)s. Le nombre de routes " -"dépasse le maximum %(quota)s." - -#, python-format -msgid "" "Unable to complete operation for %(subnet_id)s. The number of DNS " "nameservers exceeds the limit %(quota)s." msgstr "" @@ -3058,15 +2635,6 @@ "nombre de routes hôtes dépasse la limite %(quota)s." #, python-format -msgid "" -"Unable to complete operation on address scope %(address_scope_id)s. There " -"are one or more subnet pools in use on the address scope" -msgstr "" -"Impossible de terminer l'opération sur la portée d'adresse " -"%(address_scope_id)s. Un ou plusieurs pools de sous-réseau supplémentaires " -"sont utilisés sur la portée d'adresse" - -#, python-format msgid "Unable to convert value in %s" msgstr "Impossible de convertir la valeur en %s" @@ -3114,10 +2682,6 @@ msgstr "Impossible de trouver le nom de la ressource dans %s" #, python-format -msgid "Unable to generate unique DVR mac for host %(host)s." -msgstr "Impossible de générer une adresse MAC unique pour l'hôte %(host)s." - -#, python-format msgid "Unable to generate unique mac on network %(net_id)s." msgstr "Impossible de générer une adresse MAC unique sur le réseau %(net_id)s." @@ -3144,16 +2708,6 @@ "%(network)s. Plusieurs locataires l'utilisent." #, python-format -msgid "Unable to update address scope %(address_scope_id)s : %(reason)s" -msgstr "" -"Impossible de mettre à jour la portée d'adresse %(address_scope_id)s : " -"%(reason)s" - -#, python-format -msgid "Unable to update the following object fields: %(fields)s" -msgstr "Impossible de mettre à jour les zones d'objet suivantes : %(fields)s" - -#, python-format msgid "" "Unable to verify match:%(match)s as the parent resource: %(res)s was not " "found" @@ -3181,9 +2735,6 @@ msgid "Unit name '%(unit)s' is not valid." msgstr "Le nom d'unité '%(unit)s' n'est pas valide." -msgid "Unknown API version specified" -msgstr "Version de l'API spécifié inconnu" - #, python-format msgid "Unknown address type %(address_type)s" msgstr "Type d'adresse inconnu %(address_type)s" @@ -3289,14 +2840,6 @@ msgstr "" "Nom d'utilisateur pour la connexion au réseau désigné dans un contexte admin" -msgid "" -"Uses veth for an OVS interface or not. Support kernels with limited " -"namespace support (e.g. RHEL 6.5) so long as ovs_use_veth is set to True." -msgstr "" -"Indique si veth est utilisé ou non pour une interface OVS. Les noyaux avec " -"support limité de l'espace de noms sont pris en charge (par exemple, RHEL " -"6.5) tant que le paramètre ovs_use_veth est défini sur True." - msgid "VRRP authentication password" msgstr "Mot de passe pour l'authentification VRRP" @@ -3306,14 +2849,6 @@ msgid "VXLAN network unsupported." msgstr "Réseau VXLAN non supporté." -#, python-format -msgid "" -"Value of %(parameter)s has to be multiple of %(number)s, with maximum value " -"of %(maximum)s and minimum value of %(minimum)s" -msgstr "" -"La valeur de %(parameter)s doit être un multiple de %(number)s, avec la " -"valeur maximum %(maximum)s et la valeur minimum %(minimum)s" - msgid "" "Value of host kernel tick rate (hz) for calculating minimum burst value in " "bandwidth limit rules for a port with QoS. See kernel configuration file for " @@ -3521,10 +3056,6 @@ msgid "provider:physical_network specified for %s network" msgstr "provider:physical_network spécifié pour le réseau %s" -#, python-format -msgid "rbac_db_model not found in %s" -msgstr "rbac_db_model non trouvé dans %s" - msgid "respawn_interval must be >= 0 if provided." msgstr "respawn_interval doit être >= 0 si fourni." @@ -3558,11 +3089,3 @@ msgid "the nexthop is used by router" msgstr "nexthop est utilisé par le routeur" - -msgid "" -"uuid provided from the command line so external_process can track us via /" -"proc/cmdline interface." -msgstr "" -"Identificateur unique universel fourni dans la ligne de commande afin de " -"permettre à external_process d'effectuer le suivi de l'uuid via l'interface /" -"proc/cmdline." diff -Nru neutron-12.0.0/neutron/locale/it/LC_MESSAGES/neutron.po neutron-12.0.1/neutron/locale/it/LC_MESSAGES/neutron.po --- neutron-12.0.0/neutron/locale/it/LC_MESSAGES/neutron.po 2018-02-28 11:30:39.000000000 +0000 +++ neutron-12.0.1/neutron/locale/it/LC_MESSAGES/neutron.po 2018-03-29 17:33:26.000000000 +0000 @@ -6,9 +6,9 @@ # Andreas Jaeger , 2016. #zanata msgid "" msgstr "" -"Project-Id-Version: neutron 11.0.0.0b3.dev326\n" +"Project-Id-Version: neutron VERSION\n" "Report-Msgid-Bugs-To: https://bugs.launchpad.net/openstack-i18n/\n" -"POT-Creation-Date: 2017-07-18 03:24+0000\n" +"POT-Creation-Date: 2018-03-14 04:19+0000\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" @@ -17,7 +17,7 @@ "Language: it\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "Generated-By: Babel 2.0\n" -"X-Generator: Zanata 3.9.6\n" +"X-Generator: Zanata 4.3.3\n" "Language-Team: Italian\n" #, python-format @@ -61,39 +61,6 @@ msgstr "%(key)s non consentito per la rete del provider %(tunnel)s" #, python-format -msgid "" -"%(method)s called with network settings %(current)s (original settings " -"%(original)s) and network segments %(segments)s" -msgstr "" -"%(method)s è stato chiamato con le impostazioni di rete %(current)s " -"(impostazioni originali %(original)s) e segmenti di rete %(segments)s" - -#, python-format -msgid "" -"%(method)s called with port settings %(current)s (original settings " -"%(original)s) host %(host)s (original host %(original_host)s) vif type " -"%(vif_type)s (original vif type %(original_vif_type)s) vif details " -"%(vif_details)s (original vif details %(original_vif_details)s) binding " -"levels %(levels)s (original binding levels %(original_levels)s) on network " -"%(network)s with segments to bind %(segments_to_bind)s" -msgstr "" -"%(method)s chiamato con le impostazioni di porta %(current)s (impostazioni " -"originali %(original)s) host %(host)s (host originale %(original_host)s) " -"tipo vif %(vif_type)s (tipo vif originale %(original_vif_type)s) dettagli " -"vif %(vif_details)s (dettagli vif originale %(original_vif_details)s) " -"livelli di collegamento %(levels)s (livelli di collegamento originali " -"%(original_levels)s) sulla rete %(network)s con segmenti da collegare " -"%(segments_to_bind)s" - -#, python-format -msgid "" -"%(method)s called with subnet settings %(current)s (original settings " -"%(original)s)" -msgstr "" -"%(method)s è stato chiamato con le impostazioni di sottorete %(current)s " -"(impostazioni originali %(original)s)" - -#, python-format msgid "%(name)s '%(addr)s' does not match the ip_version '%(ip_version)s'" msgstr "%(name)s '%(addr)s' non corrisponde alla ip_version '%(ip_version)s'" @@ -126,38 +93,6 @@ msgstr "%s è vietato per la rete del provider locale" #, python-format -msgid "" -"'%(data)s' contains '%(length)s' characters. Adding a domain name will cause " -"it to exceed the maximum length of a FQDN of '%(max_len)s'" -msgstr "" -"'%(data)s' contiene caratteri di '%(length)s'. Con l'aggiunta di un nome " -"dominio la lunghezza massima di un FQDN di '%(max_len)s' verrà superata" - -#, python-format -msgid "" -"'%(data)s' contains '%(length)s' characters. Adding a sub-domain will cause " -"it to exceed the maximum length of a FQDN of '%(max_len)s'" -msgstr "" -"'%(data)s' contiene caratteri di '%(length)s'. Con l'aggiunta di un " -"sottodominio la lunghezza massima di un FQDN di '%(max_len)s' verrà superata" - -#, python-format -msgid "'%(data)s' not a valid PQDN or FQDN. Reason: %(reason)s" -msgstr "'%(data)s' non è PQDN o FQDN valido. Motivo: %(reason)s" - -#, python-format -msgid "'%s' cannot be converted to lowercase string" -msgstr "'%s' non può essere convertito in stringa di caratteri minuscoli" - -#, python-format -msgid "'%s' is a FQDN. It should be a relative domain name" -msgstr "'%s' è un FQDN. Deve essere un nome dominio relativo" - -#, python-format -msgid "'%s' is not a FQDN" -msgstr "'%s' non è un FQDN" - -#, python-format msgid "'%s' is not a valid RBAC object type" msgstr "'%s' non è un tipo di oggetto valido" @@ -225,27 +160,16 @@ msgid "Address not present on interface" msgstr "Indirizzo non presente sull'interfaccia" -#, python-format -msgid "Address scope %(address_scope_id)s could not be found" -msgstr "Impossibile trovare l'ambito indirizzo %(address_scope_id)s" - msgid "" "Address to listen on for OpenFlow connections. Used only for 'native' driver." msgstr "" "Indirizzo di ascolto per le connessioni OpenFlow. Utilizzato solo per driver " "'native'." -msgid "Adds external network attribute to network resource." -msgstr "Aggiunge l'attributo della rete esterna alla risorsa di rete." - msgid "Adds test attributes to core resources." msgstr "Aggiunge gli attributi di test alle risorse principali." #, python-format -msgid "Agent %(id)s could not be found" -msgstr "Impossibile trovare l'agent %(id)s" - -#, python-format msgid "Agent %(id)s is not a L3 Agent or has been disabled" msgstr "L'agent %(id)s non è un agent L3 oppure è stato disabilitato" @@ -266,12 +190,6 @@ msgid "Agent updated: %(payload)s" msgstr "Agent aggiornato: %(payload)s" -#, python-format -msgid "" -"Agent with agent_type=%(agent_type)s and host=%(host)s could not be found" -msgstr "" -"Impossibile trovare l'agent con agent_type=%(agent_type)s e host=%(host)s" - msgid "Allow auto scheduling networks to DHCP agent." msgstr "Consenti pianificazione automatica delle reti nell'agent DHCP." @@ -304,12 +222,6 @@ "Consentire l'esecuzione di richieste SSL (https) non protette sui metadati " "nova" -msgid "Allowed address pairs must be a list." -msgstr "Le coppie di indirizzi consentite devono essere un elenco." - -msgid "AllowedAddressPair must contain ip_address" -msgstr "AllowedAddressPair deve contenere ip_address" - msgid "" "Allows for serving metadata requests coming from a dedicated metadata access " "network whose CIDR is 169.254.169.254/16 (or larger prefix), and is " @@ -373,10 +285,6 @@ msgid "Availability zone of this node" msgstr "Zona di disponibilità di questo nodo" -#, python-format -msgid "AvailabilityZone %(availability_zone)s could not be found." -msgstr "Impossibile trovare la zona di disponibilità %(availability_zone)s." - msgid "Available commands" msgstr "Comandi disponibili" @@ -441,16 +349,6 @@ "Impossibile assegnare la sottorete richiesta dall'insieme di prefissi " "disponibili" -#, python-format -msgid "" -"Cannot associate floating IP %(floating_ip_address)s (%(fip_id)s) with port " -"%(port_id)s using fixed IP %(fixed_ip)s, as that fixed IP already has a " -"floating IP on external network %(net_id)s." -msgstr "" -"Impossibile associare un IP mobile %(floating_ip_address)s (%(fip_id)s) alla " -"porta %(port_id)s utilizzando un IP fisso %(fixed_ip)s, in quanto quell'IP " -"fisso ha già un IP mobile nella rete esterna %(net_id)s." - msgid "Cannot disable enable_dhcp with ipv6 attributes set" msgstr "Impossibile disabilitare enable_dhcp con gli attributi ipv6 impostati" @@ -562,9 +460,6 @@ "Cidr %(subnet_cidr)s della sottorete %(subnet_id)s si sovrappone con il cidr " "%(cidr)s della sottorete %(sub_id)s" -msgid "Class not found." -msgstr "Classe non trovata." - msgid "Cleanup resources of a specific agent type only." msgstr "Ripulire solo le risorse di un tipo di agent specifico." @@ -803,10 +698,6 @@ "L'indirizzo MAC del router virtuale distribuito per l'host %(host)s non " "esiste." -#, python-format -msgid "Domain %(dns_domain)s not found in the external DNS service" -msgstr "Dominio %(dns_domain)s non trovato nel servizio DNS esterno" - msgid "Domain to use for building the hostnames" msgstr "Dominio da utilizzare per creare i nomi host" @@ -850,9 +741,6 @@ "Il database non può essere aggiornato. Rimuovere tutti i duplicati prima di " "aggiornare il database." -msgid "Duplicate Metering Rule in POST." -msgstr "Regola di misurazione duplicata in POST." - msgid "Duplicate Security Group Rule in POST." msgstr "Regola del gruppo di sicurezza duplicata in POST." @@ -956,9 +844,6 @@ "risolver DNS personalizzati all'opzione 'dnsmasq_dns_servers' disabilita " "questa funzione." -msgid "Encountered an empty component." -msgstr "È stato rilevato un componente vuoto." - msgid "End of VLAN range is less than start of VLAN range" msgstr "La fine dell'intervallo VLAN è minore dell'inizio dell'intervallo VLAN" @@ -1028,32 +913,10 @@ msgstr "Estensioni non trovate: %(extensions)s." #, python-format -msgid "External DNS driver %(driver)s could not be found." -msgstr "Impossibile trovare il driver DNS %(driver)s." - -#, python-format msgid "External IP %s is the same as the gateway IP" msgstr "L'IP esterno %s è uguale all'IP gateway" #, python-format -msgid "" -"External network %(external_network_id)s is not reachable from subnet " -"%(subnet_id)s. Therefore, cannot associate Port %(port_id)s with a Floating " -"IP." -msgstr "" -"La rete esterna %(external_network_id)s non è raggiungibile dalla sottorete " -"%(subnet_id)s. Pertanto, non è possibile associare la porta %(port_id)s a " -"un IP mobile." - -#, python-format -msgid "" -"External network %(net_id)s cannot be updated to be made non-external, since " -"it has existing gateway ports" -msgstr "" -"La rete esterna %(net_id)s non può essere aggiornata per diventare una rete " -"non esterna in quanto ha già le porte gateway esistenti" - -#, python-format msgid "Failed rescheduling router %(router_id)s: no eligible l3 agent found." msgstr "" "Impossibile ripianificare il router %(router_id)s: non è stato trovato " @@ -1065,14 +928,6 @@ "Impossibile pianificare il router %(router_id)s per l'agent L3 %(agent_id)s." #, python-format -msgid "" -"Failed to allocate a VRID in the network %(network_id)s for the router " -"%(router_id)s after %(max_tries)s tries." -msgstr "" -"Impossibile allocare un VRID nella rete %(network_id)s per il router " -"%(router_id)s dopo %(max_tries)s tentativi." - -#, python-format msgid "Failed to allocate subnet: %(reason)s." msgstr "Impossibile assegnare la sottorete: %(reason)s." @@ -1085,14 +940,6 @@ #, python-format msgid "" -"Failed to create a duplicate %(object_type)s: for attribute(s) " -"%(attributes)s with value(s) %(values)s" -msgstr "" -"Impossibile creare un duplicato %(object_type)s: per gli attributi " -"%(attributes)s con valori %(values)s" - -#, python-format -msgid "" "Failed to create port on network %(network_id)s, because fixed_ips included " "invalid subnet %(subnet_id)s" msgstr "" @@ -1130,30 +977,9 @@ msgid "Flat provider networks are disabled" msgstr "Le reti flat del provider sono disabilitate" -#, python-format -msgid "Flavor %(flavor_id)s could not be found." -msgstr "Impossibile trovare il flavor %(flavor_id)s." - -#, python-format -msgid "Flavor %(flavor_id)s is used by some service instance." -msgstr "" -"Il flavor %(flavor_id)s viene utilizzato dall'istanza di alcuni servizi." - -msgid "Flavor is not enabled." -msgstr "Flavor non è abilitato." - -#, python-format -msgid "Floating IP %(floatingip_id)s could not be found" -msgstr "Impossibile trovare l'IP mobile %(floatingip_id)s" - msgid "For TCP/UDP protocols, port_range_min must be <= port_range_max" msgstr "Per i protocolli TCP/UDP, port_range_min deve essere <= port_range_max" -#, python-format -msgid "For class %(object_type)s missing primary keys: %(missing_keys)s" -msgstr "" -"Per la classe %(object_type)s mancano le chiavi primarie: %(missing_keys)s" - msgid "Force ip_lib calls to use the root helper" msgstr "Forzare le chiamate ip_lib ad utilizzare root helper" @@ -1173,14 +999,6 @@ msgstr "Versione IP gateway incoerente con la versione del pool di allocazione" #, python-format -msgid "" -"Gateway cannot be updated for router %(router_id)s, since a gateway to " -"external network %(net_id)s is required by one or more floating IPs." -msgstr "" -"Non è possibile aggiornare il gateway per il router %(router_id)s, in quanto " -"un gateway per la rete esterna %(net_id)s è richiesto da uno o più IP mobili." - -#, python-format msgid "Gateway ip %(ip_address)s conflicts with allocation pool %(pool)s." msgstr "" "L'ip gateway %(ip_address)s è in conflitto con il pool di allocazione " @@ -1442,10 +1260,6 @@ msgstr "ethertype %(ethertype)s non valido per il protocollo %(protocol)s." #, python-format -msgid "Invalid format for routes: %(routes)s, %(reason)s" -msgstr "Formato non valido per gli instradamenti: %(routes)s, %(reason)s" - -#, python-format msgid "Invalid format: %s" msgstr "Formato non valido: %s" @@ -1488,10 +1302,6 @@ msgstr "Formato del provider del servizio non valido" #, python-format -msgid "Invalid service type %(service_type)s." -msgstr "Tipo di servizio non valido %(service_type)s." - -#, python-format msgid "" "Invalid value for ICMP %(field)s (%(attr)s) %(value)s. It must be 0 to 255." msgstr "" @@ -1577,9 +1387,6 @@ msgid "Location of Metadata Proxy UNIX domain socket" msgstr "Ubicazione del socket del dominio UNIX del proxy di metadati" -msgid "Location of pid file of this process." -msgstr "Ubicazione del file pid di questo processo." - msgid "Location to store DHCP server config files." msgstr "Ubicazione per archiviare i file di configurazione del server DHCP." @@ -1667,22 +1474,6 @@ msgid "Metering driver" msgstr "Driver di misurazione" -#, python-format -msgid "Metering label %(label_id)s does not exist" -msgstr "L'etichetta di misurazione %(label_id)s non esiste" - -#, python-format -msgid "Metering label rule %(rule_id)s does not exist" -msgstr "La regola di etichetta di misurazione %(rule_id)s non esiste" - -#, python-format -msgid "" -"Metering label rule with remote_ip_prefix %(remote_ip_prefix)s overlaps " -"another" -msgstr "" -"La regola di etichetta di misurazione remote_ip_prefix %(remote_ip_prefix)s " -"si sovrappone ad un'altra" - msgid "MinRtrAdvInterval setting for radvd.conf" msgstr "Impostazione MinRtrAdvInterval per radvd.conf" @@ -1721,10 +1512,6 @@ "impostazione deve essere la stessa su tutti gli agent." #, python-format -msgid "Multiple agents with agent_type=%(agent_type)s and host=%(host)s found" -msgstr "Trovati più agent con agent_type=%(agent_type)s e host=%(host)s" - -#, python-format msgid "Multiple default providers for service %s" msgstr "Più provider predefiniti per il servizio %s" @@ -1750,22 +1537,6 @@ msgstr "" "È necessario specificare una o più azioni nell'aggiunta o modifica del flusso" -#, python-format -msgid "Name %(dns_name)s is duplicated in the external DNS service" -msgstr "Nome %(dns_name)s duplicato nel servizio DNS esterno" - -#, python-format -msgid "" -"Name '%s' must be 1-63 characters long, each of which can only be " -"alphanumeric or a hyphen." -msgstr "" -"Il nome '%s' deve contenere da 1 a 63 caratteri, ciascuno dei quali può " -"essere solo alfanumerico o un trattino." - -#, python-format -msgid "Name '%s' must not start or end with a hyphen." -msgstr "Il nome '%s' non deve iniziare o terminare con un trattino." - msgid "Name of Open vSwitch bridge to use" msgstr "Nome del bridge Open vSwitch da utilizzare" @@ -1852,15 +1623,6 @@ msgid "No more IP addresses available for subnet %(subnet_id)s." msgstr "Indirizzi IP non più disponibili per la sottorete %(subnet_id)s." -#, python-format -msgid "" -"No more Virtual Router Identifier (VRID) available when creating router " -"%(router_id)s. The limit of number of HA Routers per tenant is 254." -msgstr "" -"Nessun altro VRID (Virtual Router Identifier) disponibile durante la " -"creazione del router %(router_id)s. Il limite del numero di router HA per " -"tenant è 254." - msgid "No offline migrations pending." msgstr "Nessuna migrazione offline in sospeso." @@ -2111,13 +1873,6 @@ "specifico durante l'assegnazione di un IP mobile" msgid "" -"Port Security must be enabled in order to have allowed address pairs on a " -"port." -msgstr "" -"Abilitare la sicurezza della porta per disporre di coppie di indirizzo " -"consentite ad una porta." - -msgid "" "Port to listen on for OpenFlow connections. Used only for 'native' driver." msgstr "" "Porta di ascolto per le connessioni OpenFlow. Utilizzata solo per driver " @@ -2280,22 +2035,6 @@ "Richiesta non riuscita: errore server interno durante l'elaborazione della " "richiesta." -#, python-format -msgid "" -"Request contains duplicate address pair: mac_address %(mac_address)s " -"ip_address %(ip_address)s." -msgstr "" -"La richiesta contiene una coppia di indirizzo duplicata: mac_address " -"%(mac_address)s ip_address %(ip_address)s." - -#, python-format -msgid "" -"Requested subnet with cidr: %(cidr)s for network: %(network_id)s overlaps " -"with another subnet" -msgstr "" -"Sottorete richiesta con cidr: %(cidr)s per la rete: %(network_id)s si " -"sovrappone con un'altra sottorete" - msgid "" "Reset flow table on start. Setting this to True will cause brief traffic " "interruption." @@ -2342,25 +2081,6 @@ msgstr "Per rilasciare i privilegi sono necessarie le autorizzazioni root." #, python-format -msgid "Router %(router_id)s %(reason)s" -msgstr "Router %(router_id)s %(reason)s" - -#, python-format -msgid "Router %(router_id)s could not be found" -msgstr "Impossibile trovare il router %(router_id)s" - -#, python-format -msgid "Router %(router_id)s does not have an interface with id %(port_id)s" -msgstr "" -"Il router %(router_id)s non dispone di un interfaccia con id %(port_id)s" - -#, python-format -msgid "Router %(router_id)s has no interface on subnet %(subnet_id)s" -msgstr "" -"Il router %(router_id)s non dispone di un'interfaccia sulla sottorete " -"%(subnet_id)s" - -#, python-format msgid "Router '%(router_id)s' is not compatible with this agent." msgstr "Il router '%(router_id)s' non è compatibile con questo agent." @@ -2368,24 +2088,6 @@ msgid "Router already has a port on subnet %s" msgstr "Il router dispone già di una porta sulla sottorete %s" -#, python-format -msgid "" -"Router interface for subnet %(subnet_id)s on router %(router_id)s cannot be " -"deleted, as it is required by one or more floating IPs." -msgstr "" -"L'interfaccia del router per la sottorete %(subnet_id)s nel router " -"%(router_id)s non può essere eliminata, in quanto è richiesta da uno o più " -"IP mobili." - -#, python-format -msgid "" -"Router interface for subnet %(subnet_id)s on router %(router_id)s cannot be " -"deleted, as it is required by one or more routes." -msgstr "" -"L'interfaccia del router per la sottorete %(subnet_id)s nel router " -"%(router_id)s non può essere eliminata, in quanto è richiesta da uno o più " -"instradamenti." - msgid "Router port must have at least one fixed IP" msgstr "La porta del router deve avere almeno un IP fisso" @@ -2466,34 +2168,6 @@ msgstr "Invia una notifica a nova quando lo stato della porta cambia" #, python-format -msgid "Service Profile %(sp_id)s could not be found." -msgstr "Impossibile trovare il profilo di servizio %(sp_id)s." - -#, python-format -msgid "Service Profile %(sp_id)s is already associated with flavor %(fl_id)s." -msgstr "Il profilo di servizio %(sp_id)s è già associato al flavor %(fl_id)s." - -#, python-format -msgid "Service Profile %(sp_id)s is not associated with flavor %(fl_id)s." -msgstr "Il profilo di servizio %(sp_id)s non è associato al flavor %(fl_id)s." - -#, python-format -msgid "Service Profile %(sp_id)s is used by some service instance." -msgstr "" -"Il profilo di servizio %(sp_id)s viene utilizzato dall'istanza di alcuni " -"servizi." - -#, python-format -msgid "Service Profile driver %(driver)s could not be found." -msgstr "Impossibile trovare il driver %(driver)s del profilo di servizio." - -msgid "Service Profile is not enabled." -msgstr "Il profilo di servizio non è abilitato." - -msgid "Service Profile needs either a driver or metainfo." -msgstr "Il profilo di servizio necessita di un driver o di meta informazioni." - -#, python-format msgid "" "Service provider '%(provider)s' could not be found for service type " "%(service_type)s" @@ -2562,9 +2236,6 @@ "Le sottoreti ospitate sulla stessa rete devono essere allocate dallo stesso " "pool di sottoreti." -msgid "Suffix to append to all namespace names." -msgstr "Suffisso da aggiungere a tutti i nomi dello spazio dei nomi." - msgid "" "System-wide flag to determine the type of router that tenants can create. " "Only admin can override." @@ -2578,13 +2249,6 @@ msgid "TCP Port used by Nova metadata server." msgstr "Porta TCP utilizzata dal server di metadati Nova." -#, python-format -msgid "TLD '%s' must not be all numeric" -msgstr "TLD '%s' non deve contenere tutti caratteri numerici" - -msgid "TOS for vxlan interface protocol packets." -msgstr "Pacchetti del protocollo dell'interfaccia TOS per vxlan." - msgid "TTL for vxlan interface protocol packets." msgstr "Pacchetti del protocollo dell'interfaccia TTL per vxlan." @@ -2641,14 +2305,6 @@ "instradamenti host mediante DHCP (Opzione 121). Questa opzione non ha alcun " "effetto quando force_metadata è impostato su True." -#, python-format -msgid "" -"The HA Network CIDR specified in the configuration file isn't valid; " -"%(cidr)s." -msgstr "" -"Il CIDR della rete HA specificato nel file di configurazione non è valido; " -"%(cidr)s." - msgid "The UDP port to use for VXLAN tunnels." msgstr "La porta UDP da utilizzare per i tunnel VXLAN." @@ -2700,32 +2356,6 @@ msgid "The core plugin Neutron will use" msgstr "Il plugin principale che Neutron utilizzerà" -#, python-format -msgid "" -"The dns_name passed is a FQDN. Its higher level labels must be equal to the " -"dns_domain option in neutron.conf, that has been set to '%(dns_domain)s'. It " -"must also include one or more valid DNS labels to the left of " -"'%(dns_domain)s'" -msgstr "" -"dns_name passato è un FQDN. Le sue etichette di livello superiore devono " -"essere uguali all'opzione dns_domain in neutron.conf, che è stata impostata " -"su '%(dns_domain)s'. Deve anche includere una o più etichette DNS valide a " -"sinistra di '%(dns_domain)s'" - -#, python-format -msgid "" -"The dns_name passed is a PQDN and its size is '%(dns_name_len)s'. The " -"dns_domain option in neutron.conf is set to %(dns_domain)s, with a length of " -"'%(higher_labels_len)s'. When the two are concatenated to form a FQDN (with " -"a '.' at the end), the resulting length exceeds the maximum size of " -"'%(fqdn_max_len)s'" -msgstr "" -"dns_name passato è un PQDN e la sua dimensione è '%(dns_name_len)s'. " -"L'opzione dns_domain in neutron.conf è impostata su %(dns_domain)s, con " -"lunghezza '%(higher_labels_len)s'. Quando i due sono concatenati per formare " -"un FQDN (con un '.' alla fine), la lunghezza risultante supera la dimensione " -"massima di '%(fqdn_max_len)s'" - msgid "The driver used to manage the DHCP server." msgstr "Il driver utilizzato per gestire il server DHCP." @@ -2781,11 +2411,6 @@ "'tenant_network_types'. Ciò è utile quando il traffico VRRP deve utilizzare " "una rete specifica che non è quella predefinita." -#, python-format -msgid "The number of allowed address pair exceeds the maximum %(quota)s." -msgstr "" -"Il numero di coppie di indirizzi consentite supera quello massimo %(quota)s." - msgid "" "The number of seconds the agent will wait between polling for local device " "changes." @@ -2861,26 +2486,6 @@ msgstr "Il tipo di autenticazione da utilizzare" msgid "" -"The working mode for the agent. Allowed modes are: 'legacy' - this preserves " -"the existing behavior where the L3 agent is deployed on a centralized " -"networking node to provide L3 services like DNAT, and SNAT. Use this mode if " -"you do not want to adopt DVR. 'dvr' - this mode enables DVR functionality " -"and must be used for an L3 agent that runs on a compute host. 'dvr_snat' - " -"this enables centralized SNAT support in conjunction with DVR. This mode " -"must be used for an L3 agent running on a centralized node (or in single-" -"host deployments, e.g. devstack)" -msgstr "" -"Modalità di funzionamento per l'agent. le modalità consentite sono: 'legacy' " -"- questa conserva il comportamento esistente in cui l'agent L3 viene " -"distribuito in un nodo di rete centralizzato per fornire i servizi L3 come " -"DNAT e SNAT. Utilizzare questa modalità se non si desidera adottare DVR. " -"'dvr' - questa modalità consente la funzionalità DVR e deve essere " -"utilizzata per un agent L3 che viene eseguito su un host di elaborazione. " -"'dvr_snat' - questa consente il supporto SNAT centralizzato insieme a DVR. " -"Questa modalità deve essere utilizzata per un agent L3 in esecuzione su un " -"nodo centralizzato (o in distribuzioni a singolo host, ad esempio devstack)" - -msgid "" "There are routers attached to this network that depend on this policy for " "access." msgstr "" @@ -2888,13 +2493,6 @@ "politica per l'accesso." msgid "" -"Timeout in seconds for ovs-vsctl commands. If the timeout expires, ovs " -"commands will fail with ALARMCLOCK error." -msgstr "" -"Timeout in secondi per i comandi ovs-vsctl. Se il timeout scade, i comandi " -"ovs non riescono e restituiscono l'errore ALARMCLOCK." - -msgid "" "Timeout in seconds to wait for a single OpenFlow request. Used only for " "'native' driver." msgstr "" @@ -2915,9 +2513,6 @@ "Fornito prefisso troppo lungo. Il nuovo nome supererebbe la lunghezza " "specificata per un nome di interfaccia." -msgid "Too many availability_zone_hints specified" -msgstr "Troppi availability_zone_hints specificati" - msgid "" "True to delete all ports on all the OpenvSwitch bridges. False to delete " "ports created by Neutron on integration and external network bridges." @@ -2972,14 +2567,6 @@ #, python-format msgid "" -"Unable to complete operation for %(router_id)s. The number of routes exceeds " -"the maximum %(quota)s." -msgstr "" -"Impossibile completare l'operazione per %(router_id)s. Il numero di " -"instradamenti supera la quota massima %(quota)s." - -#, python-format -msgid "" "Unable to complete operation for %(subnet_id)s. The number of DNS " "nameservers exceeds the limit %(quota)s." msgstr "" @@ -2995,15 +2582,6 @@ "host supera il limite %(quota)s." #, python-format -msgid "" -"Unable to complete operation on address scope %(address_scope_id)s. There " -"are one or more subnet pools in use on the address scope" -msgstr "" -"Impossibile completare l'operazione nell'ambito indirizzo " -"%(address_scope_id)s. Esiste uno o più pool di sottoreti in uso nell'ambito " -"indirizzo" - -#, python-format msgid "Unable to convert value in %s" msgstr "Impossibile convertire il valore in %s" @@ -3051,10 +2629,6 @@ msgstr "Impossibile trovare il nome risorsa in %s" #, python-format -msgid "Unable to generate unique DVR mac for host %(host)s." -msgstr "Impossibile generare mac DVR univoco per l'host %(host)s." - -#, python-format msgid "Unable to generate unique mac on network %(net_id)s." msgstr "Impossibile generare mac univoco sulla rete %(net_id)s." @@ -3081,15 +2655,6 @@ "%(network)s. Più tenants la stanno utilizzando." #, python-format -msgid "Unable to update address scope %(address_scope_id)s : %(reason)s" -msgstr "" -"Impossibile aggiornare l'ambito indirizzo %(address_scope_id)s : %(reason)s" - -#, python-format -msgid "Unable to update the following object fields: %(fields)s" -msgstr "Impossibile aggiornare i seguenti campi oggetto: %(fields)s" - -#, python-format msgid "" "Unable to verify match:%(match)s as the parent resource: %(res)s was not " "found" @@ -3117,9 +2682,6 @@ msgid "Unit name '%(unit)s' is not valid." msgstr "Il nome unità '%(unit)s' non è valido." -msgid "Unknown API version specified" -msgstr "Specificata versione API sconosciuta" - #, python-format msgid "Unknown address type %(address_type)s" msgstr "Tipo di indirizzo sconosciuto %(address_type)s" @@ -3225,14 +2787,6 @@ msgid "Username for connecting to designate in admin context" msgstr "Nome utente per la connessione da designare nel contesto admin" -msgid "" -"Uses veth for an OVS interface or not. Support kernels with limited " -"namespace support (e.g. RHEL 6.5) so long as ovs_use_veth is set to True." -msgstr "" -"Utilizza o meno veth per un'interfaccia OVS. Supporta kernel con supporto " -"dello spazio dei nomi limitato (ad esempio RHEL 6.5) se ovs_use_veth è " -"impostato su True." - msgid "VRRP authentication password" msgstr "Password di autenticazione VRRP" @@ -3242,14 +2796,6 @@ msgid "VXLAN network unsupported." msgstr "Rete VXLAN non supportata." -#, python-format -msgid "" -"Value of %(parameter)s has to be multiple of %(number)s, with maximum value " -"of %(maximum)s and minimum value of %(minimum)s" -msgstr "" -"Il valore di %(parameter)s deve essere multiplo di %(number)s, con valore " -"massimo di %(maximum)s e valore minimo di %(minimum)s" - msgid "" "Value of host kernel tick rate (hz) for calculating minimum burst value in " "bandwidth limit rules for a port with QoS. See kernel configuration file for " @@ -3450,10 +2996,6 @@ msgid "provider:physical_network specified for %s network" msgstr "provider:physical_network specificata per la rete %s" -#, python-format -msgid "rbac_db_model not found in %s" -msgstr "rbac_db_model non trovato in %s" - msgid "respawn_interval must be >= 0 if provided." msgstr "respawn_interval deve essere >= 0 se fornito." @@ -3486,10 +3028,3 @@ msgid "the nexthop is used by router" msgstr "l'hop successivo è utilizzato dal router" - -msgid "" -"uuid provided from the command line so external_process can track us via /" -"proc/cmdline interface." -msgstr "" -"uuid fornito da riga comandi pertanto external_process può tenere traccia " -"dell'utente mediante l'interfaccia /proc/cmdline." diff -Nru neutron-12.0.0/neutron/locale/ja/LC_MESSAGES/neutron.po neutron-12.0.1/neutron/locale/ja/LC_MESSAGES/neutron.po --- neutron-12.0.0/neutron/locale/ja/LC_MESSAGES/neutron.po 2018-02-28 11:30:39.000000000 +0000 +++ neutron-12.0.1/neutron/locale/ja/LC_MESSAGES/neutron.po 2018-03-29 17:33:26.000000000 +0000 @@ -15,9 +15,9 @@ # 笹原 昌美 , 2016. #zanata msgid "" msgstr "" -"Project-Id-Version: neutron 11.0.0.0b3.dev326\n" +"Project-Id-Version: neutron VERSION\n" "Report-Msgid-Bugs-To: https://bugs.launchpad.net/openstack-i18n/\n" -"POT-Creation-Date: 2017-07-18 03:24+0000\n" +"POT-Creation-Date: 2018-03-14 04:19+0000\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" @@ -26,7 +26,7 @@ "Language: ja\n" "Plural-Forms: nplurals=1; plural=0;\n" "Generated-By: Babel 2.0\n" -"X-Generator: Zanata 3.9.6\n" +"X-Generator: Zanata 4.3.3\n" "Language-Team: Japanese\n" #, python-format @@ -70,38 +70,6 @@ msgstr "%(key)s は %(tunnel)s プロバイダーネットワークで禁止されています" #, python-format -msgid "" -"%(method)s called with network settings %(current)s (original settings " -"%(original)s) and network segments %(segments)s" -msgstr "" -"%(method)s が、ネットワーク設定 %(current)s (元の設定 %(original)s) および" -"ネットワークセグメント %(segments)s を使用して呼び出されました" - -#, python-format -msgid "" -"%(method)s called with port settings %(current)s (original settings " -"%(original)s) host %(host)s (original host %(original_host)s) vif type " -"%(vif_type)s (original vif type %(original_vif_type)s) vif details " -"%(vif_details)s (original vif details %(original_vif_details)s) binding " -"levels %(levels)s (original binding levels %(original_levels)s) on network " -"%(network)s with segments to bind %(segments_to_bind)s" -msgstr "" -"ネットワーク %(network)s 上で、バインド対象のセグメント %(segments_to_bind)s " -"とともに、 ポート設定 %(current)s (original settings %(original)s)、ホスト " -"%(host)s (original host %(original_host)s)、VIF タイプ %(vif_type)s " -"(original vif type %(original_vif_type)s)、VIF 詳細 %(vif_details)s " -"(original vif details %(original_vif_details)s)、バインドレベル %(levels)s " -"(original binding levels %(original_levels)s) を指定して呼び出した %(method)s" - -#, python-format -msgid "" -"%(method)s called with subnet settings %(current)s (original settings " -"%(original)s)" -msgstr "" -"サブネット設定 %(current)s を使用して %(method)s が呼び出されました (元の設" -"定: %(original)s)" - -#, python-format msgid "%(name)s '%(addr)s' does not match the ip_version '%(ip_version)s'" msgstr "%(name)s '%(addr)s' が ip_version '%(ip_version)s' と一致しません" @@ -136,38 +104,6 @@ msgstr "%s は local プロバイダーネットワークで禁止されています" #, python-format -msgid "" -"'%(data)s' contains '%(length)s' characters. Adding a domain name will cause " -"it to exceed the maximum length of a FQDN of '%(max_len)s'" -msgstr "" -"'%(data)s' には '%(length)s' 文字が含まれます。ドメイン名を追加すると、FQDN " -"の最大長である '%(max_len)s' を超えます" - -#, python-format -msgid "" -"'%(data)s' contains '%(length)s' characters. Adding a sub-domain will cause " -"it to exceed the maximum length of a FQDN of '%(max_len)s'" -msgstr "" -"'%(data)s' には '%(length)s' 文字が含まれます。サブドメインを追加すると、" -"FQDN の最大長である '%(max_len)s' を超えます" - -#, python-format -msgid "'%(data)s' not a valid PQDN or FQDN. Reason: %(reason)s" -msgstr "'%(data)s' は有効な PQDN でも FQDN でもありません。理由: %(reason)s" - -#, python-format -msgid "'%s' cannot be converted to lowercase string" -msgstr "'%s' は小文字の文字列に変換することはできません" - -#, python-format -msgid "'%s' is a FQDN. It should be a relative domain name" -msgstr "'%s' は FQDN です。相対ドメイン名である必要があります" - -#, python-format -msgid "'%s' is not a FQDN" -msgstr "'%s' は FQDN ではありません" - -#, python-format msgid "'%s' is not a valid RBAC object type" msgstr "'%s' は RBAC の有効なオブジェクトタイプではありません" @@ -232,27 +168,16 @@ msgid "Address not present on interface" msgstr "インターフェース上に存在しないアドレス" -#, python-format -msgid "Address scope %(address_scope_id)s could not be found" -msgstr "アドレススコープ %(address_scope_id)s が見つかりませんでした" - msgid "" "Address to listen on for OpenFlow connections. Used only for 'native' driver." msgstr "" "OpenFlow 接続をリッスンするアドレス。「ネイティブ」のドライバーでのみ使用でき" "ます。" -msgid "Adds external network attribute to network resource." -msgstr "外部ネットワーク属性がネットワークリソースに追加されます。" - msgid "Adds test attributes to core resources." msgstr "テスト属性をコアリソースに追加します。" #, python-format -msgid "Agent %(id)s could not be found" -msgstr "エージェント %(id)s が見つかりませんでした" - -#, python-format msgid "Agent %(id)s is not a L3 Agent or has been disabled" msgstr "" "エージェント %(id)s は、L3 エージェントでないか、使用不可になっています" @@ -277,13 +202,6 @@ msgid "Agent updated: %(payload)s" msgstr "エージェントが更新されました: %(payload)s" -#, python-format -msgid "" -"Agent with agent_type=%(agent_type)s and host=%(host)s could not be found" -msgstr "" -"agent_type=%(agent_type)s および host=%(host)s のエージェントが見つかりません" -"でした" - msgid "Allow auto scheduling networks to DHCP agent." msgstr "DHCP エージェントに対するネットワークの自動スケジューリングを許可" @@ -317,12 +235,6 @@ "Nova メタデータに対する非セキュアな SSL (https) 要求を実行することを許可しま" "す" -msgid "Allowed address pairs must be a list." -msgstr "許可されたアドレスペアはリストである必要があります。" - -msgid "AllowedAddressPair must contain ip_address" -msgstr "AllowedAddressPair には ip_address が含まれていなければなりません" - msgid "" "Allows for serving metadata requests coming from a dedicated metadata access " "network whose CIDR is 169.254.169.254/16 (or larger prefix), and is " @@ -384,11 +296,6 @@ msgid "Availability zone of this node" msgstr "このノードのアベイラビリティーゾーン" -#, python-format -msgid "AvailabilityZone %(availability_zone)s could not be found." -msgstr "" -"アベイラビリティーゾーン %(availability_zone)s が見つかりませんでした。" - msgid "Available commands" msgstr "使用可能なコマンド" @@ -455,16 +362,6 @@ "要求されたサブネットを使用可能なプレフィックスのセットから割り振ることができ" "ません" -#, python-format -msgid "" -"Cannot associate floating IP %(floating_ip_address)s (%(fip_id)s) with port " -"%(port_id)s using fixed IP %(fixed_ip)s, as that fixed IP already has a " -"floating IP on external network %(net_id)s." -msgstr "" -"Fixed IP %(fixed_ip)s には、既に外部ネットワーク %(net_id)s 上の Floating IP " -"があるため、その Fixed IP を使用して Floating IP %(floating_ip_address)s " -"(%(fip_id)s) をポート %(port_id)s と関連付けることはできません。" - msgid "Cannot disable enable_dhcp with ipv6 attributes set" msgstr "ipv6 属性が設定された状態で enable_dhcp を無効にすることはできません" @@ -576,9 +473,6 @@ "サブネット %(subnet_id)s の CIDR %(subnet_cidr)s がサブネット %(sub_id)s の " "CIDR %(cidr)s とオーバーラップしています" -msgid "Class not found." -msgstr "クラスが見つかりません。" - msgid "Cleanup resources of a specific agent type only." msgstr "特定のエージェントタイプのみのリソースをクリーンアップします。" @@ -809,10 +703,6 @@ "Distributed Virtual Router Mac Address for host %(host)s does not exist." msgstr "ホスト %(host)s の分散仮想ルーター MAC アドレスが存在しません。" -#, python-format -msgid "Domain %(dns_domain)s not found in the external DNS service" -msgstr "ドメイン %(dns_domain)s が外部の DNS サービス内で見つかりません" - msgid "Domain to use for building the hostnames" msgstr "ホスト名の作成に使用するドメイン" @@ -858,9 +748,6 @@ "ます。データベースはアップグレードできません。データベースをアップグレードす" "る前にすべての重複を削除してください。" -msgid "Duplicate Metering Rule in POST." -msgstr "POST で計測規則が重複しています。" - msgid "Duplicate Security Group Rule in POST." msgstr "POST に重複するセキュリティーグループルールがあります。" @@ -963,9 +850,6 @@ "引数から '--no-resolv' オプションを効果的に削除します。'dnsmasq_dns_servers' " "オプションにカスタムの DNS リゾルバーを追加すると、この機能を無効化できます。" -msgid "Encountered an empty component." -msgstr "空のコンポーネントが検出されました。" - msgid "End of VLAN range is less than start of VLAN range" msgstr "VLAN 範囲の終わりが VLAN 範囲の開始より小さくなっています" @@ -1034,32 +918,10 @@ msgstr "拡張が見つかりません: %(extensions)s。" #, python-format -msgid "External DNS driver %(driver)s could not be found." -msgstr "外部の DNS ドライバー %(driver)s が見つかりませんでした。" - -#, python-format msgid "External IP %s is the same as the gateway IP" msgstr "外部 IP %s はゲートウェイ IP と同一です" #, python-format -msgid "" -"External network %(external_network_id)s is not reachable from subnet " -"%(subnet_id)s. Therefore, cannot associate Port %(port_id)s with a Floating " -"IP." -msgstr "" -"外部ネットワーク %(external_network_id)s は、サブネット %(subnet_id)s から到" -"達可能ではありません。そのため、ポート %(port_id)s を Floating IP と関連付け" -"ることができません。" - -#, python-format -msgid "" -"External network %(net_id)s cannot be updated to be made non-external, since " -"it has existing gateway ports" -msgstr "" -"外部ネットワーク %(net_id)s は、既存のゲートウェイポートを保持しているため、" -"このネットワークを外部以外にするための更新は実行できません" - -#, python-format msgid "Failed rescheduling router %(router_id)s: no eligible l3 agent found." msgstr "" "ルーター %(router_id)s のスケジュール変更に失敗しました: 適格な L3 エージェン" @@ -1072,14 +934,6 @@ "グに失敗しました。" #, python-format -msgid "" -"Failed to allocate a VRID in the network %(network_id)s for the router " -"%(router_id)s after %(max_tries)s tries." -msgstr "" -"%(max_tries)s 回試行しましたが、ルーター %(router_id)s のネットワーク " -"%(network_id)s で VRID を割り振ることができませんでした。" - -#, python-format msgid "Failed to allocate subnet: %(reason)s." msgstr "サブネットの割り当てに失敗しました: %(reason)s。" @@ -1092,14 +946,6 @@ #, python-format msgid "" -"Failed to create a duplicate %(object_type)s: for attribute(s) " -"%(attributes)s with value(s) %(values)s" -msgstr "" -"以下について重複する %(object_type)s の作成に失敗しました: 値 %(values)s を持" -"つ属性 %(attributes)s" - -#, python-format -msgid "" "Failed to create port on network %(network_id)s, because fixed_ips included " "invalid subnet %(subnet_id)s" msgstr "" @@ -1135,31 +981,11 @@ msgid "Flat provider networks are disabled" msgstr "flat プロバイダーネットワークが無効化されています" -#, python-format -msgid "Flavor %(flavor_id)s could not be found." -msgstr "フレーバー %(flavor_id)s が見つかりませんでした。" - -#, python-format -msgid "Flavor %(flavor_id)s is used by some service instance." -msgstr "あるサービスインスタンスがフレーバー %(flavor_id)s を使用しています。" - -msgid "Flavor is not enabled." -msgstr "フレーバーが有効化されていません。" - -#, python-format -msgid "Floating IP %(floatingip_id)s could not be found" -msgstr "Floating IP %(floatingip_id)s が見つかりませんでした" - msgid "For TCP/UDP protocols, port_range_min must be <= port_range_max" msgstr "" "TCP/UDP プロトコルの場合、port_range_min は port_range_max 以下でなければなり" "ません" -#, python-format -msgid "For class %(object_type)s missing primary keys: %(missing_keys)s" -msgstr "" -"クラス %(object_type)s に関して欠損しているプライマリーキー: %(missing_keys)s" - msgid "Force ip_lib calls to use the root helper" msgstr "ip_lib 呼び出しでルートヘルパーを強制的に使用します" @@ -1181,14 +1007,6 @@ "ます" #, python-format -msgid "" -"Gateway cannot be updated for router %(router_id)s, since a gateway to " -"external network %(net_id)s is required by one or more floating IPs." -msgstr "" -"外部ネットワーク %(net_id)s へのゲートウェイは、1 つ以上の Floating IP で必要" -"なため、ルーター %(router_id)s のゲートウェイを更新できません。" - -#, python-format msgid "Gateway ip %(ip_address)s conflicts with allocation pool %(pool)s." msgstr "" "ゲートウェイ IP %(ip_address)s が割り当てプール %(pool)s と競合しています。" @@ -1438,10 +1256,6 @@ msgstr "プロトコル %(protocol)s に関する無効なイーサタイプ %(ethertype)s。" #, python-format -msgid "Invalid format for routes: %(routes)s, %(reason)s" -msgstr "ルートの形式が無効です: %(routes)s、%(reason)s" - -#, python-format msgid "Invalid format: %s" msgstr "無効な形式: %s" @@ -1484,10 +1298,6 @@ msgstr "サービスプロバイダーの指定形式が無効です" #, python-format -msgid "Invalid service type %(service_type)s." -msgstr "無効なサービスタイプ %(service_type)s。" - -#, python-format msgid "" "Invalid value for ICMP %(field)s (%(attr)s) %(value)s. It must be 0 to 255." msgstr "" @@ -1570,9 +1380,6 @@ msgid "Location of Metadata Proxy UNIX domain socket" msgstr "メタデータプロキシーの UNIX ドメインソケットの場所" -msgid "Location of pid file of this process." -msgstr "このプロセスの pid ファイルのロケーション。" - msgid "Location to store DHCP server config files." msgstr "DHCP サーバーの構成ファイルを保存するロケーション。" @@ -1660,22 +1467,6 @@ msgid "Metering driver" msgstr "計測ドライバー" -#, python-format -msgid "Metering label %(label_id)s does not exist" -msgstr "計測ラベル %(label_id)s は存在しません" - -#, python-format -msgid "Metering label rule %(rule_id)s does not exist" -msgstr "計測ラベル規則 %(rule_id)s は存在しません" - -#, python-format -msgid "" -"Metering label rule with remote_ip_prefix %(remote_ip_prefix)s overlaps " -"another" -msgstr "" -"remote_ip_prefix %(remote_ip_prefix)s を持つ計測ラベル規則が他の計測ラベル規" -"則と重なり合っています" - msgid "MinRtrAdvInterval setting for radvd.conf" msgstr " radvd.conf の MinRtrAdvInterval 設定" @@ -1713,12 +1504,6 @@ "を使用します。この設定はすべてのエージェントで同じである必要があります。" #, python-format -msgid "Multiple agents with agent_type=%(agent_type)s and host=%(host)s found" -msgstr "" -"agent_type=%(agent_type)s および host=%(host)s のエージェントが複数見つかりま" -"した" - -#, python-format msgid "Multiple default providers for service %s" msgstr "サービス %s のデフォルトのプロバイダーが複数あります" @@ -1741,22 +1526,6 @@ msgid "Must specify one or more actions on flow addition or modification" msgstr "フローの追加または変更について、1 つ以上のアクションを指定してください" -#, python-format -msgid "Name %(dns_name)s is duplicated in the external DNS service" -msgstr "名前 %(dns_name)s が外部の DNS サービス内で重複しています" - -#, python-format -msgid "" -"Name '%s' must be 1-63 characters long, each of which can only be " -"alphanumeric or a hyphen." -msgstr "" -"名前 '%s' は 1 文字から 63 文字の長さでなければなりません。それぞれの文字には" -"英数字またはハイフンを使用できます。" - -#, python-format -msgid "Name '%s' must not start or end with a hyphen." -msgstr "名前 '%s の先頭または末尾にハイフンを使用してはなりません。" - msgid "Name of Open vSwitch bridge to use" msgstr "使用する Open vSwitch ブリッジの名前" @@ -1846,14 +1615,6 @@ msgstr "" "サブネット %(subnet_id)s ではこれ以上使用可能な IP アドレスがありません。" -#, python-format -msgid "" -"No more Virtual Router Identifier (VRID) available when creating router " -"%(router_id)s. The limit of number of HA Routers per tenant is 254." -msgstr "" -"ルーター %(router_id)s の作成の際に使用可能な仮想ルーター ID (VRID) がもう存" -"在しません。テナントごとの HA ルーター数の上限は 254 です。" - msgid "No offline migrations pending." msgstr "オフラインで実行中の移行はありません。" @@ -2086,13 +1847,6 @@ "には、特定の IPv4 アドレスを提供する必要があります" msgid "" -"Port Security must be enabled in order to have allowed address pairs on a " -"port." -msgstr "" -"ポートセキュリティーは、ポート上で許可されたアドレスペアを持つために有効にす" -"る必要があります。" - -msgid "" "Port to listen on for OpenFlow connections. Used only for 'native' driver." msgstr "" "OpenFlow 接続をリッスンするポート。「ネイティブ」のドライバーでのみ使用できま" @@ -2254,22 +2008,6 @@ msgid "Request Failed: internal server error while processing your request." msgstr "要求が失敗しました。要求の処理中に内部サーバーエラーが発生しました。" -#, python-format -msgid "" -"Request contains duplicate address pair: mac_address %(mac_address)s " -"ip_address %(ip_address)s." -msgstr "" -"重複するアドレスペアが要求に含まれています: mac_address %(mac_address)s " -"ip_address %(ip_address)s" - -#, python-format -msgid "" -"Requested subnet with cidr: %(cidr)s for network: %(network_id)s overlaps " -"with another subnet" -msgstr "" -"ネットワーク %(network_id)s の CIDR %(cidr)s を持つ要求されたサブネットは、別" -"のサブネットとオーバーラップしています" - msgid "" "Reset flow table on start. Setting this to True will cause brief traffic " "interruption." @@ -2315,25 +2053,6 @@ msgstr "特権を除去するにはルート許可が必要です。" #, python-format -msgid "Router %(router_id)s %(reason)s" -msgstr "ルーター %(router_id)s %(reason)s" - -#, python-format -msgid "Router %(router_id)s could not be found" -msgstr "ルーター %(router_id)s が見つかりませんでした" - -#, python-format -msgid "Router %(router_id)s does not have an interface with id %(port_id)s" -msgstr "" -"ルーター %(router_id)s に、ID %(port_id)s のインターフェースがありません" - -#, python-format -msgid "Router %(router_id)s has no interface on subnet %(subnet_id)s" -msgstr "" -"ルーター %(router_id)s に、サブネット %(subnet_id)s 上のインターフェースがあ" -"りません" - -#, python-format msgid "Router '%(router_id)s' is not compatible with this agent." msgstr "ルーター '%(router_id)s' はこのエージェントと互換性がありません。" @@ -2341,22 +2060,6 @@ msgid "Router already has a port on subnet %s" msgstr "ルーターに、既にサブネット %s 上のポートがあります" -#, python-format -msgid "" -"Router interface for subnet %(subnet_id)s on router %(router_id)s cannot be " -"deleted, as it is required by one or more floating IPs." -msgstr "" -"ルーター %(router_id)s 上のサブネット %(subnet_id)s のルーターインターフェー" -"スは、1 つ以上の Floating IP で必要なため削除できません。" - -#, python-format -msgid "" -"Router interface for subnet %(subnet_id)s on router %(router_id)s cannot be " -"deleted, as it is required by one or more routes." -msgstr "" -"ルーター %(router_id)s 上のサブネット %(subnet_id)s のルーターインターフェー" -"スは、1 つ以上のルートで必要なため削除できません。" - msgid "Router port must have at least one fixed IP" msgstr "ルーターポートには 1 つ以上の Fixed IP を設定する必要があります" @@ -2438,37 +2141,6 @@ msgstr "ポート状態の変更時の nova への通知送信" #, python-format -msgid "Service Profile %(sp_id)s could not be found." -msgstr "サービスプロファイル %(sp_id)s が見つかりませんでした。" - -#, python-format -msgid "Service Profile %(sp_id)s is already associated with flavor %(fl_id)s." -msgstr "" -"サービスプロファイル %(sp_id)s は既にフレーバー %(fl_id)s と関連付けられてい" -"ます。" - -#, python-format -msgid "Service Profile %(sp_id)s is not associated with flavor %(fl_id)s." -msgstr "" -"サービスプロファイル %(sp_id)s はフレーバー %(fl_id)s と関連付けられていませ" -"ん。" - -#, python-format -msgid "Service Profile %(sp_id)s is used by some service instance." -msgstr "" -"あるサービスインスタンスがサービスプロファイル %(sp_id)s を使用しています。" - -#, python-format -msgid "Service Profile driver %(driver)s could not be found." -msgstr "サービスプロファイルドライバー %(driver)s が見つかりませんでした。" - -msgid "Service Profile is not enabled." -msgstr "サービスプロファイルが有効化されていません。" - -msgid "Service Profile needs either a driver or metainfo." -msgstr "サービスプロファイルにはドライバーかメタ情報が必要です。" - -#, python-format msgid "" "Service provider '%(provider)s' could not be found for service type " "%(service_type)s" @@ -2536,9 +2208,6 @@ "同じネットワーク上でホストされるサブネットは、同じサブネットプールから割り当" "てられる必要があります。" -msgid "Suffix to append to all namespace names." -msgstr "すべての名前空間の名前に追加するサフィックス。" - msgid "" "System-wide flag to determine the type of router that tenants can create. " "Only admin can override." @@ -2552,13 +2221,6 @@ msgid "TCP Port used by Nova metadata server." msgstr "Nova メタデータサーバーによって使用される TCP ポート。" -#, python-format -msgid "TLD '%s' must not be all numeric" -msgstr "TLD '%s' をすべて数値にすることはできません" - -msgid "TOS for vxlan interface protocol packets." -msgstr "vxlan インターフェースプロトコルパケットの TOS。" - msgid "TTL for vxlan interface protocol packets." msgstr "vxlan インターフェースプロトコルパケットの TTL。" @@ -2615,12 +2277,6 @@ "は、DHCP (オプション 121) 経由でホストの経路を要求するよう設定を行う必要があ" "ります。force_metadata を True に設定する場合、このオプションは機能しません。" -#, python-format -msgid "" -"The HA Network CIDR specified in the configuration file isn't valid; " -"%(cidr)s." -msgstr "設定ファイルに指定されている HA ネットワーク CIDR が無効です: %(cidr)s" - msgid "The UDP port to use for VXLAN tunnels." msgstr "VXLAN トンネルで使用する UDP ポート。" @@ -2670,32 +2326,6 @@ msgid "The core plugin Neutron will use" msgstr "Neutron が使用するコアプラグイン" -#, python-format -msgid "" -"The dns_name passed is a FQDN. Its higher level labels must be equal to the " -"dns_domain option in neutron.conf, that has been set to '%(dns_domain)s'. It " -"must also include one or more valid DNS labels to the left of " -"'%(dns_domain)s'" -msgstr "" -"渡された dns_name は FQDN です。このドメイン名の上位のラベルは、neutron." -"conf 内の dns_domain オプション('%(dns_domain)s' に設定済み) と一致する必要" -"があります。また、'%(dns_domain)s' の左に 1 つ以上の有効な DNS ラベルが含まれ" -"る必要があります。" - -#, python-format -msgid "" -"The dns_name passed is a PQDN and its size is '%(dns_name_len)s'. The " -"dns_domain option in neutron.conf is set to %(dns_domain)s, with a length of " -"'%(higher_labels_len)s'. When the two are concatenated to form a FQDN (with " -"a '.' at the end), the resulting length exceeds the maximum size of " -"'%(fqdn_max_len)s'" -msgstr "" -"渡された dns_name は PQDN であり、そのサイズは '%(dns_name_len)s' です。" -"neutron.conf 内の dns_domain オプションは %(dns_domain)s に設定さ" -"れ、'%(higher_labels_len)s' の文字長が指定されています。この 2 つを連携して " -"FQDN を作成すると (末尾に '.' を付ける)、文字長は最大サイズの " -"'%(fqdn_max_len)s' を超えます。" - msgid "The driver used to manage the DHCP server." msgstr "DHCP サーバーの管理に使用されるドライバー。" @@ -2753,10 +2383,6 @@ "す。VRRP トラフィックがデフォルトではない特定のネットワークを使用しなければな" "らない場合には、この設定が役立ちます。" -#, python-format -msgid "The number of allowed address pair exceeds the maximum %(quota)s." -msgstr "許可されたアドレスペアの数が最大の %(quota)s を超えています。" - msgid "" "The number of seconds the agent will wait between polling for local device " "changes." @@ -2833,25 +2459,6 @@ msgstr "使用する認証のタイプ" msgid "" -"The working mode for the agent. Allowed modes are: 'legacy' - this preserves " -"the existing behavior where the L3 agent is deployed on a centralized " -"networking node to provide L3 services like DNAT, and SNAT. Use this mode if " -"you do not want to adopt DVR. 'dvr' - this mode enables DVR functionality " -"and must be used for an L3 agent that runs on a compute host. 'dvr_snat' - " -"this enables centralized SNAT support in conjunction with DVR. This mode " -"must be used for an L3 agent running on a centralized node (or in single-" -"host deployments, e.g. devstack)" -msgstr "" -"エージェントの処理モード。許可されるモードは次のとおりです。'legacy' - この" -"モードは、L3 エージェントを中央ネットワーキングノードにデプロイして L3 サービ" -"ス (DNAT や SNAT など) を提供する、既存の動作を保持します。DVR を採用しない場" -"合、このモードを使用します。'dvr' - このモードは、DVR 機能を有効にします。計" -"算ホスト上で実行される L3 エージェントの場合、このモードを使用する必要があり" -"ます。'dvr_snat' - このモードは、DVR とともに中央 SNAT サポートを有効にしま" -"す。中央ノード (または devstack などの単一ホストでのデプロイメント) 上で実行" -"中の L3 の場合、このモードを使用する必要があります。" - -msgid "" "There are routers attached to this network that depend on this policy for " "access." msgstr "" @@ -2859,13 +2466,6 @@ "使用します。" msgid "" -"Timeout in seconds for ovs-vsctl commands. If the timeout expires, ovs " -"commands will fail with ALARMCLOCK error." -msgstr "" -"ovs-vsctl コマンドのタイムアウト時間 (秒)。タイムアウトが発生すると、ovs コマ" -"ンドは ALARMCLOCK エラーで失敗します。" - -msgid "" "Timeout in seconds to wait for a single OpenFlow request. Used only for " "'native' driver." msgstr "" @@ -2886,9 +2486,6 @@ "提供されたプレフィックスが長すぎます。新規の名前がインターフェース名に設定さ" "れた長さを超えます。" -msgid "Too many availability_zone_hints specified" -msgstr "指定された availability_zone_hints が多すぎます" - msgid "" "True to delete all ports on all the OpenvSwitch bridges. False to delete " "ports created by Neutron on integration and external network bridges." @@ -2943,14 +2540,6 @@ #, python-format msgid "" -"Unable to complete operation for %(router_id)s. The number of routes exceeds " -"the maximum %(quota)s." -msgstr "" -"%(router_id)s の操作を完了できません。ルートの数が最大数 %(quota)s を超えてい" -"ます。" - -#, python-format -msgid "" "Unable to complete operation for %(subnet_id)s. The number of DNS " "nameservers exceeds the limit %(quota)s." msgstr "" @@ -2966,14 +2555,6 @@ "います。" #, python-format -msgid "" -"Unable to complete operation on address scope %(address_scope_id)s. There " -"are one or more subnet pools in use on the address scope" -msgstr "" -"アドレススコープ %(address_scope_id)s に関する操作を完了できません。アドレス" -"スコープに関して 1 つ以上のサブネットプールが使用されています。" - -#, python-format msgid "Unable to convert value in %s" msgstr "%s で値を変換できません" @@ -3020,10 +2601,6 @@ msgstr "%s にリソース名を見つけることはできません" #, python-format -msgid "Unable to generate unique DVR mac for host %(host)s." -msgstr "ホスト %(host)s に固有の DVR MAC を生成できません。" - -#, python-format msgid "Unable to generate unique mac on network %(net_id)s." msgstr "ネットワーク %(net_id)s で固有の MAC を生成できません。" @@ -3050,14 +2627,6 @@ "定を使用しています。" #, python-format -msgid "Unable to update address scope %(address_scope_id)s : %(reason)s" -msgstr "アドレススコープ %(address_scope_id)s を更新できません: %(reason)s" - -#, python-format -msgid "Unable to update the following object fields: %(fields)s" -msgstr "以下のオブジェクトのフィールドを更新できません: %(fields)s" - -#, python-format msgid "" "Unable to verify match:%(match)s as the parent resource: %(res)s was not " "found" @@ -3085,9 +2654,6 @@ msgid "Unit name '%(unit)s' is not valid." msgstr "ユニット名 '%(unit)s' が無効です。" -msgid "Unknown API version specified" -msgstr "不明な API バージョンが指定されました" - #, python-format msgid "Unknown address type %(address_type)s" msgstr "不明なアドレスタイプ %(address_type)s" @@ -3190,14 +2756,6 @@ msgid "Username for connecting to designate in admin context" msgstr "管理者のコンテキストにおける designate への接続用ユーザー名" -msgid "" -"Uses veth for an OVS interface or not. Support kernels with limited " -"namespace support (e.g. RHEL 6.5) so long as ovs_use_veth is set to True." -msgstr "" -"OVS インターフェースに veth を使用するかどうか。ovs_use_veth が True に設定" -"されている場合は、限定された名前空間のサポート機能を持つカーネル (RHEL 6.5 な" -"ど) をサポートします。" - msgid "VRRP authentication password" msgstr "VRRP 認証パスワード" @@ -3207,14 +2765,6 @@ msgid "VXLAN network unsupported." msgstr "VXLAN ネットワークはサポートされていません。" -#, python-format -msgid "" -"Value of %(parameter)s has to be multiple of %(number)s, with maximum value " -"of %(maximum)s and minimum value of %(minimum)s" -msgstr "" -"%(parameter)s の値は %(number)s の倍数であり、その最大値は %(maximum)s、最小" -"値は %(minimum)s である必要があります" - msgid "" "Value of host kernel tick rate (hz) for calculating minimum burst value in " "bandwidth limit rules for a port with QoS. See kernel configuration file for " @@ -3412,10 +2962,6 @@ msgid "provider:physical_network specified for %s network" msgstr "%s ネットワークに provider:physical_network が指定されました" -#, python-format -msgid "rbac_db_model not found in %s" -msgstr "%s で rbac_db_model が見つかりません" - msgid "respawn_interval must be >= 0 if provided." msgstr "respawn_interval は、指定する場合は 0 以上にする必要があります。" @@ -3449,10 +2995,3 @@ msgid "the nexthop is used by router" msgstr "ネクストホップがルーターによって使用されています" - -msgid "" -"uuid provided from the command line so external_process can track us via /" -"proc/cmdline interface." -msgstr "" -"UUID がコマンドラインに指定されたため、external_process で /proc/cmdline イン" -"ターフェースを追跡できます。" diff -Nru neutron-12.0.0/neutron/locale/ko_KR/LC_MESSAGES/neutron.po neutron-12.0.1/neutron/locale/ko_KR/LC_MESSAGES/neutron.po --- neutron-12.0.0/neutron/locale/ko_KR/LC_MESSAGES/neutron.po 2018-02-28 11:30:39.000000000 +0000 +++ neutron-12.0.1/neutron/locale/ko_KR/LC_MESSAGES/neutron.po 2018-03-29 17:33:26.000000000 +0000 @@ -14,18 +14,18 @@ # Heetae Ahn , 2017. #zanata msgid "" msgstr "" -"Project-Id-Version: neutron 11.0.0.0b3.dev326\n" +"Project-Id-Version: neutron VERSION\n" "Report-Msgid-Bugs-To: https://bugs.launchpad.net/openstack-i18n/\n" -"POT-Creation-Date: 2017-07-18 03:24+0000\n" +"POT-Creation-Date: 2018-03-14 04:19+0000\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "PO-Revision-Date: 2017-07-18 04:28+0000\n" "Last-Translator: Heetae Ahn \n" -"Language: ko-KR\n" +"Language: ko_KR\n" "Plural-Forms: nplurals=1; plural=0;\n" "Generated-By: Babel 2.0\n" -"X-Generator: Zanata 3.9.6\n" +"X-Generator: Zanata 4.3.3\n" "Language-Team: Korean (South Korea)\n" #, python-format @@ -69,38 +69,6 @@ msgstr "%(tunnel)s 제공자 네트워크에 대해 %(key)s이(가) 금지됨" #, python-format -msgid "" -"%(method)s called with network settings %(current)s (original settings " -"%(original)s) and network segments %(segments)s" -msgstr "" -"네트워크 설정 %(current)s과(와) 함께 %(method)s이(가) 호출됨(원래 설정 " -"%(original)s) 및 네트워크 세그먼트 %(segments)s" - -#, python-format -msgid "" -"%(method)s called with port settings %(current)s (original settings " -"%(original)s) host %(host)s (original host %(original_host)s) vif type " -"%(vif_type)s (original vif type %(original_vif_type)s) vif details " -"%(vif_details)s (original vif details %(original_vif_details)s) binding " -"levels %(levels)s (original binding levels %(original_levels)s) on network " -"%(network)s with segments to bind %(segments_to_bind)s" -msgstr "" -"다음으로 호출된 %(method)s 메소드. 포트 설정 %(current)s(원래 설정 " -"%(original)s) 호스트 %(host)s(원래 호스트 %(original_host)s) vif 유형 " -"%(vif_type)s (원래 vif 유형 %(original_vif_type)s) vif 세부 사항 " -"%(vif_details)s(원래 vif 세부 사항 %(original_vif_details)s) 바인딩 레벨 " -"%(levels)s(원래 바인딩 레벨 %(original_levels)s) - %(segments_to_bind)s을" -"(를) 바인드하기 위한 세그먼트가 있는 네트워크 %(network)s에서 호출" - -#, python-format -msgid "" -"%(method)s called with subnet settings %(current)s (original settings " -"%(original)s)" -msgstr "" -"%(method)s이(가) 서브넷 설정 %(current)s과(와) 함께 호출됨(원래 설정 " -"%(original)s)" - -#, python-format msgid "%(name)s '%(addr)s' does not match the ip_version '%(ip_version)s'" msgstr "" "%(name)s '%(addr)s'이(가) ip_version '%(ip_version)s'과(와) 일치하지 않음" @@ -135,38 +103,6 @@ msgstr "로컬 제공자 네트워크에 대해 %s이(가) 금지됨" #, python-format -msgid "" -"'%(data)s' contains '%(length)s' characters. Adding a domain name will cause " -"it to exceed the maximum length of a FQDN of '%(max_len)s'" -msgstr "" -"'%(data)s'에 '%(length)s'개의 문자가 포함됩니다. 도메인 이름을 추가하면 FQDN" -"의 최대 길이인 '%(max_len)s'이(가) 초과됩니다." - -#, python-format -msgid "" -"'%(data)s' contains '%(length)s' characters. Adding a sub-domain will cause " -"it to exceed the maximum length of a FQDN of '%(max_len)s'" -msgstr "" -"'%(data)s'에 '%(length)s'개의 문자가 포함됩니다. 하위 도메인을 추가하면 FQDN" -"의 최대 길이인 '%(max_len)s'이(가) 초과됩니다." - -#, python-format -msgid "'%(data)s' not a valid PQDN or FQDN. Reason: %(reason)s" -msgstr "'%(data)s'이(가) 올바른 PQDN 또는 FQDN이 아님, 이유: %(reason)s" - -#, python-format -msgid "'%s' cannot be converted to lowercase string" -msgstr "'%s'은(는) 소문자 문자열로 변환할 수 없음" - -#, python-format -msgid "'%s' is a FQDN. It should be a relative domain name" -msgstr "'%s'이(가) FQDN입니다. 상대적 도메인 이름이어야 합니다." - -#, python-format -msgid "'%s' is not a FQDN" -msgstr "'%s'이(가) FQDN이 아님" - -#, python-format msgid "'%s' is not a valid RBAC object type" msgstr "'%s'은(는) 올바른 RBAC 오브젝트 유형이 아님" @@ -232,26 +168,15 @@ msgid "Address not present on interface" msgstr "인터페이스에 주소가 없음" -#, python-format -msgid "Address scope %(address_scope_id)s could not be found" -msgstr "주소 범위 %(address_scope_id)s을(를) 찾을 수 없음" - msgid "" "Address to listen on for OpenFlow connections. Used only for 'native' driver." msgstr "" "OpenFlow 연결을 위해 청취할 주소입니다. '네이티브' 드라이버에만 사용됩니다. " -msgid "Adds external network attribute to network resource." -msgstr "외부 네트워크 속성을 네트워크 자원에 추가합니다." - msgid "Adds test attributes to core resources." msgstr "코어 자원에 테스트 속성을 추가합니다." #, python-format -msgid "Agent %(id)s could not be found" -msgstr "%(id)s 에이전트를 찾을 수 없음" - -#, python-format msgid "Agent %(id)s is not a L3 Agent or has been disabled" msgstr "%(id)s 에이전트가 L3 에이전트가 아니거나 사용 안함 상태임" @@ -272,11 +197,6 @@ msgid "Agent updated: %(payload)s" msgstr "업데이트된 에이전트: %(payload)s" -#, python-format -msgid "" -"Agent with agent_type=%(agent_type)s and host=%(host)s could not be found" -msgstr "agent_type=%(agent_type)s 및 host=%(host)s인 에이전트를 찾을 수 없음" - msgid "Allow auto scheduling networks to DHCP agent." msgstr "DHCP 에이전트에 대한 네트워크 자동 스케줄링을 허용합니다. " @@ -306,12 +226,6 @@ msgid "Allow to perform insecure SSL (https) requests to nova metadata" msgstr "nova 메타데이터에 대한 비보안 SSL(https) 요청 수행 허용" -msgid "Allowed address pairs must be a list." -msgstr "허용되는 주소 쌍은 목록이어야 합니다. " - -msgid "AllowedAddressPair must contain ip_address" -msgstr "AllowedAddressPair에 ip_address가 포함되어야 함" - msgid "" "Allows for serving metadata requests coming from a dedicated metadata access " "network whose CIDR is 169.254.169.254/16 (or larger prefix), and is " @@ -371,10 +285,6 @@ msgid "Availability zone of this node" msgstr "이 노드의 가용 구역" -#, python-format -msgid "AvailabilityZone %(availability_zone)s could not be found." -msgstr "AvailabilityZone %(availability_zone)s을(를) 찾을 수 없습니다." - msgid "Available commands" msgstr "사용 가능한 명령" @@ -433,16 +343,6 @@ msgid "Cannot allocate requested subnet from the available set of prefixes" msgstr "사용 가능한 접두부 세트에서 요청한 서브넷을 할당할 수 없음" -#, python-format -msgid "" -"Cannot associate floating IP %(floating_ip_address)s (%(fip_id)s) with port " -"%(port_id)s using fixed IP %(fixed_ip)s, as that fixed IP already has a " -"floating IP on external network %(net_id)s." -msgstr "" -"고정 IP는 외부 네트워크 %(net_id)s에서 부동 IP를 가지고 있기 때문에 고정 IP " -"%(fixed_ip)s을(를) 사용하여 부동 IP %(floating_ip_address)s(%(fip_id)s)을" -"(를) 포트 %(port_id)s과(와) 연관시킬 수 없습니다. " - msgid "Cannot disable enable_dhcp with ipv6 attributes set" msgstr "ipv6 속성이 설정된 enable_dhcp를 사용할 수 없음" @@ -552,9 +452,6 @@ "서브넷 %(subnet_id)s의 cidr %(subnet_cidr)s이(가) 서브넷 %(sub_id)s의 cidr " "%(cidr)s과(와) 겹침" -msgid "Class not found." -msgstr "클래스을 찾을 수 없습니다." - msgid "Cleanup resources of a specific agent type only." msgstr "특정 에이전트 유형의 자원만 정리합니다." @@ -773,10 +670,6 @@ "Distributed Virtual Router Mac Address for host %(host)s does not exist." msgstr "%(host)s 호스트의 분산 가상 라우터 Mac 주소가 없습니다." -#, python-format -msgid "Domain %(dns_domain)s not found in the external DNS service" -msgstr "외부 DNS 서비스에서 도메인 %(dns_domain)s을(를) 찾을 수 없음" - msgid "Domain to use for building the hostnames" msgstr "호스트 이름 빌드에 사용할 도메인" @@ -818,9 +711,6 @@ "베이스를 업그레이드할 수 없습니다. 데이터베이스를 업그레이드하기 전에 모든 중" "복을 제거하십시오." -msgid "Duplicate Metering Rule in POST." -msgstr "POST에 중복 측정 규칙이 있음." - msgid "Duplicate Security Group Rule in POST." msgstr "POST에 중복 보안 그룹 규칙이 있습니다. " @@ -919,9 +809,6 @@ "resolv' 옵션을 효과적으로 제거합니다. 사용자 정의 DNS 분석기를 " "'dnsmasq_dns_servers' 옵션에 추가하면 이 기능이 사용되지 않습니다." -msgid "Encountered an empty component." -msgstr "비어 있는 컴포넌트가 발생했습니다." - msgid "End of VLAN range is less than start of VLAN range" msgstr "VLAN 범위의 끝이 VLAN 범위의 시작보다 작습니다. " @@ -988,31 +875,10 @@ msgstr "확장기능을 찾을 수 없음: %(extensions)s." #, python-format -msgid "External DNS driver %(driver)s could not be found." -msgstr "외부 DNS 드라이버 %(driver)s을(를) 찾을 수 없습니다." - -#, python-format msgid "External IP %s is the same as the gateway IP" msgstr "외부 IP %s이(가) 게이트웨이 IP와 같음" #, python-format -msgid "" -"External network %(external_network_id)s is not reachable from subnet " -"%(subnet_id)s. Therefore, cannot associate Port %(port_id)s with a Floating " -"IP." -msgstr "" -"서브넷 %(subnet_id)s에서 외부 네트워크 %(external_network_id)s에 도달할 수 없" -"습니다. 따라서 포트 %(port_id)s을(를) 부동 IP와 연관시킬 수 없습니다. " - -#, python-format -msgid "" -"External network %(net_id)s cannot be updated to be made non-external, since " -"it has existing gateway ports" -msgstr "" -"기존 게이트웨이 포트가 있어서 기존 네트워크 %(net_id)s이(가) 비외부 상태가 되" -"도록 업데이트할 수 없습니다. " - -#, python-format msgid "Failed rescheduling router %(router_id)s: no eligible l3 agent found." msgstr "" "%(router_id)s 라우터를 다시 스케줄하지 못함: 적합한 l3 에이전트를 찾을 수 없" @@ -1025,14 +891,6 @@ "다. " #, python-format -msgid "" -"Failed to allocate a VRID in the network %(network_id)s for the router " -"%(router_id)s after %(max_tries)s tries." -msgstr "" -"%(max_tries)s 번 시도한 후에 %(router_id)s 라우터의 %(network_id)s 네트워크에" -"서 VRID를 할당하는 데 실패했습니다." - -#, python-format msgid "Failed to allocate subnet: %(reason)s." msgstr "서브넷 할당 실패: %(reason)s." @@ -1045,13 +903,6 @@ #, python-format msgid "" -"Failed to create a duplicate %(object_type)s: for attribute(s) " -"%(attributes)s with value(s) %(values)s" -msgstr "" -"값이 %(values)s인 속성 %(attributes)s에 대해 중복 %(object_type)s 작성 실패" - -#, python-format -msgid "" "Failed to create port on network %(network_id)s, because fixed_ips included " "invalid subnet %(subnet_id)s" msgstr "" @@ -1094,28 +945,9 @@ msgid "Flat provider networks are disabled" msgstr "플랫 제공자 네트워크가 사용되지 않음" -#, python-format -msgid "Flavor %(flavor_id)s could not be found." -msgstr "%(flavor_id)s 플레이버를 찾을 수 없습니다. " - -#, python-format -msgid "Flavor %(flavor_id)s is used by some service instance." -msgstr "일부 서비스 인스턴스에서 Flavor %(flavor_id)s을(를) 사용합니다." - -msgid "Flavor is not enabled." -msgstr "Flavor가 사용되지 않습니다." - -#, python-format -msgid "Floating IP %(floatingip_id)s could not be found" -msgstr "%(floatingip_id)s 부동 IP를 찾을 수 없음" - msgid "For TCP/UDP protocols, port_range_min must be <= port_range_max" msgstr "TCP/UDP 프로토콜의 경우 port_range_min은 port_range_max 이하여야 함" -#, python-format -msgid "For class %(object_type)s missing primary keys: %(missing_keys)s" -msgstr "%(object_type)s 클래스의 누락된 기본 키: %(missing_keys)s" - msgid "Force ip_lib calls to use the root helper" msgstr "루트 헬퍼를 사용하는 ip_lib 호출을 강제합니다" @@ -1133,14 +965,6 @@ msgstr "게이트웨이 IP 버전이 할당 풀 버전과 일치하지 않음" #, python-format -msgid "" -"Gateway cannot be updated for router %(router_id)s, since a gateway to " -"external network %(net_id)s is required by one or more floating IPs." -msgstr "" -"외부 네트워크 %(net_id)s에 대한 게이트웨이가 하나 이상의 부동 IP에서 필요로 " -"하기 때문에 라우터 %(router_id)s에 대한 게이트웨이를 업데이트할 수 없습니다. " - -#, python-format msgid "Gateway ip %(ip_address)s conflicts with allocation pool %(pool)s." msgstr "게이트웨이 IP %(ip_address)s이(가) 할당 풀 %(pool)s과(와) 충돌합니다. " @@ -1387,10 +1211,6 @@ "프로토콜 %(protocol)s의 ethertype %(ethertype)s이(가) 올바르지 않습니다." #, python-format -msgid "Invalid format for routes: %(routes)s, %(reason)s" -msgstr "라우터의 형식이 올바르지 않음: %(routes)s, %(reason)s" - -#, python-format msgid "Invalid format: %s" msgstr "올바르지 않은 형식: %s" @@ -1432,10 +1252,6 @@ msgstr "올바르지 않은 서비스 제공자 형식" #, python-format -msgid "Invalid service type %(service_type)s." -msgstr "올바르지 않은 서비스 유형 %(service_type)s입니다." - -#, python-format msgid "" "Invalid value for ICMP %(field)s (%(attr)s) %(value)s. It must be 0 to 255." msgstr "" @@ -1517,9 +1333,6 @@ msgid "Location of Metadata Proxy UNIX domain socket" msgstr "메타데이터 프록시 UNIX 도메인 소켓의 위치" -msgid "Location of pid file of this process." -msgstr "이 프로세스의 pid 파일 위치입니다." - msgid "Location to store DHCP server config files." msgstr "DHCP 서버 구성 파일을 저장할 위치." @@ -1604,22 +1417,6 @@ msgid "Metering driver" msgstr "측정 드라이버" -#, python-format -msgid "Metering label %(label_id)s does not exist" -msgstr "측정 레이블 %(label_id)s이(가) 존재하지 않음" - -#, python-format -msgid "Metering label rule %(rule_id)s does not exist" -msgstr "측정 레이블 규칙 %(rule_id)s이(가) 존재하지 않음" - -#, python-format -msgid "" -"Metering label rule with remote_ip_prefix %(remote_ip_prefix)s overlaps " -"another" -msgstr "" -"remote_ip_prefix %(remote_ip_prefix)s을(를) 가진 측정 레이블 규칙이 다른 항목" -"과 겹침" - msgid "MinRtrAdvInterval setting for radvd.conf" msgstr "radvd.conf의 MinRtrAdvInterval 설정" @@ -1654,10 +1451,6 @@ "사용하십시오(예: 239.0.0.0/8). 이 설정은 모든 에이전트에서 같아야 합니다." #, python-format -msgid "Multiple agents with agent_type=%(agent_type)s and host=%(host)s found" -msgstr "agent_type=%(agent_type)s 및 host=%(host)s인 에이전트를 여러 개 찾음" - -#, python-format msgid "Multiple default providers for service %s" msgstr "%s 서비스에 대한 다중 기본 제공자 " @@ -1678,20 +1471,6 @@ msgid "Must specify one or more actions on flow addition or modification" msgstr "플로우 추가 또는 수정 시 하나 이상의 조치를 지정해야 함" -#, python-format -msgid "Name %(dns_name)s is duplicated in the external DNS service" -msgstr "외부 DNS 서비스에서 이름 %(dns_name)s이(가) 중복되어 있음" - -#, python-format -msgid "" -"Name '%s' must be 1-63 characters long, each of which can only be " -"alphanumeric or a hyphen." -msgstr "이름 '%s'의 길이는 1-63자 여야 하며 각각 영숫자나 하이픈이어야 합니다." - -#, python-format -msgid "Name '%s' must not start or end with a hyphen." -msgstr "이름 '%s'은(는) 하이픈으로 시작하거나 끝날 수 없습니다." - msgid "Name of Open vSwitch bridge to use" msgstr "사용할 열린 vSwitch 브릿지의 이름" @@ -1779,14 +1558,6 @@ msgid "No more IP addresses available." msgstr "사용 가능한 IP 주소가 더 이상 없습니다." -#, python-format -msgid "" -"No more Virtual Router Identifier (VRID) available when creating router " -"%(router_id)s. The limit of number of HA Routers per tenant is 254." -msgstr "" -"%(router_id)s 라우터 작성 시 VRID(Virtual Router Identifier)를 더 이상 사용" -"할 수 없습니다.테넌트당 HA 라우터 수의 한계는 254입니다." - msgid "No offline migrations pending." msgstr "보류 중인 오프라인 마이그레이션이 없습니다." @@ -2005,11 +1776,6 @@ "IPv4 주소를 제공해야 합니다. " msgid "" -"Port Security must be enabled in order to have allowed address pairs on a " -"port." -msgstr "포트에서 주소 쌍을 허용하려면 포트 보안을 사용 가능하게 해야 합니다." - -msgid "" "Port to listen on for OpenFlow connections. Used only for 'native' driver." msgstr "" "OpenFlow 연결을 위해 청취할 포트입니다. '네이티브' 드라이버에만 사용됩니다. " @@ -2163,21 +1929,6 @@ msgid "Request Failed: internal server error while processing your request." msgstr "요청 실패: 요청을 처리하는 중에 내부 서버 오류가 발생했습니다. " -#, python-format -msgid "" -"Request contains duplicate address pair: mac_address %(mac_address)s " -"ip_address %(ip_address)s." -msgstr "" -"요청에 중복되는 주소 쌍이 포함됨: mac_address %(mac_address)s ip_address " -"%(ip_address)s." - -#, python-format -msgid "" -"Requested subnet with cidr: %(cidr)s for network: %(network_id)s overlaps " -"with another subnet" -msgstr "" -"요청된 서브넷(%(network_id)s 네트워크의 cidr: %(cidr)s)이 다른 서브넷과 겹침" - msgid "" "Reset flow table on start. Setting this to True will cause brief traffic " "interruption." @@ -2223,22 +1974,6 @@ msgstr "권한을 삭제하려면 루트 권한이 필요합니다." #, python-format -msgid "Router %(router_id)s %(reason)s" -msgstr "라우터 %(router_id)s %(reason)s" - -#, python-format -msgid "Router %(router_id)s could not be found" -msgstr "%(router_id)s 라우터를 찾을 수 없음" - -#, python-format -msgid "Router %(router_id)s does not have an interface with id %(port_id)s" -msgstr "%(router_id)s 라우터에 ID가 %(port_id)s인 인터페이스가 없음" - -#, python-format -msgid "Router %(router_id)s has no interface on subnet %(subnet_id)s" -msgstr "%(router_id)s 라우터에 %(subnet_id)s 서브넷의 인터페이스가 없음" - -#, python-format msgid "Router '%(router_id)s' is not compatible with this agent." msgstr "라우터 '%(router_id)s'이(가) 이 에이전트와 호환되지 않습니다." @@ -2246,22 +1981,6 @@ msgid "Router already has a port on subnet %s" msgstr "라우터가 이미 %s 서브넷에 포트를 갖고 있음" -#, python-format -msgid "" -"Router interface for subnet %(subnet_id)s on router %(router_id)s cannot be " -"deleted, as it is required by one or more floating IPs." -msgstr "" -"하나 이상의 부동 IP에서 필요로 하므로 %(router_id)s 라우터의 %(subnet_id)s 서" -"브넷에 대한 라우터 인터페이스를 삭제할 수 없습니다. " - -#, python-format -msgid "" -"Router interface for subnet %(subnet_id)s on router %(router_id)s cannot be " -"deleted, as it is required by one or more routes." -msgstr "" -"하나 이상의 라우터에서 필요로 하므로 %(router_id)s 라우터의 %(subnet_id)s 서" -"브넷에 대한 라우터 인터페이스를 삭제할 수 없습니다. " - msgid "Router port must have at least one fixed IP" msgstr "라우터 포트에는 하나 이상의 Fixed IP가 있어야 함" @@ -2340,35 +2059,6 @@ msgstr "포트 상태가 변경되면 알림을 nova에 보냅니다." #, python-format -msgid "Service Profile %(sp_id)s could not be found." -msgstr "서비스 프로파일 %(sp_id)s을(를) 찾을 수 없습니다." - -#, python-format -msgid "Service Profile %(sp_id)s is already associated with flavor %(fl_id)s." -msgstr "" -"서비스 프로파일 %(sp_id)s이(가) 이미 Flavor %(fl_id)s과(와) 연관되어 있습니" -"다." - -#, python-format -msgid "Service Profile %(sp_id)s is not associated with flavor %(fl_id)s." -msgstr "" -"서비스 프로파일 %(sp_id)s이(가) Flavor %(fl_id)s과(와) 연관되지 않습니다." - -#, python-format -msgid "Service Profile %(sp_id)s is used by some service instance." -msgstr "일부 서비스 인스턴스에서 서비스 프로파일 %(sp_id)s을(를) 사용합니다." - -#, python-format -msgid "Service Profile driver %(driver)s could not be found." -msgstr "서비스 프로파일 드라이버 %(driver)s을(를) 찾을 수 없습니다." - -msgid "Service Profile is not enabled." -msgstr "서비스 프로파일이 사용되지 않습니다." - -msgid "Service Profile needs either a driver or metainfo." -msgstr "서비스 프로파일에 드라이버나 metainfo가 필요합니다." - -#, python-format msgid "" "Service provider '%(provider)s' could not be found for service type " "%(service_type)s" @@ -2433,9 +2123,6 @@ msgstr "" "동일한 네트워크에서 호스트되는 서브넷을 동일한 서브넷 풀에서 할당해야 합니다." -msgid "Suffix to append to all namespace names." -msgstr "모든 네임스페이스 이름에 추가될 접미어입니다." - msgid "" "System-wide flag to determine the type of router that tenants can create. " "Only admin can override." @@ -2449,13 +2136,6 @@ msgid "TCP Port used by Nova metadata server." msgstr "Nova 메타데이터 서버가 사용한 TCP 포트입니다. " -#, python-format -msgid "TLD '%s' must not be all numeric" -msgstr "TLD '%s'에 숫자만 사용할 수 없음" - -msgid "TOS for vxlan interface protocol packets." -msgstr "vxlan 인터페이스 프로토콜 패킷용 TOS." - msgid "TTL for vxlan interface protocol packets." msgstr "vxlan 인터페이스 프로토콜 패킷용 TTL." @@ -2511,14 +2191,6 @@ "합니다(옵션 121). 이 옵션은 force_metadata가 True로 설정된 경우 적용되지 않습" "니다." -#, python-format -msgid "" -"The HA Network CIDR specified in the configuration file isn't valid; " -"%(cidr)s." -msgstr "" -"구성 파일에 지정된 HA 네트워크 CIDR이 올바르지 않습니다.%(cidr)s과(와) 연관되" -"어 있습니다." - msgid "The UDP port to use for VXLAN tunnels." msgstr "VXLAN 터널에 사용하는 UDP 포트" @@ -2566,30 +2238,6 @@ msgid "The core plugin Neutron will use" msgstr "Neutron이 사용할 코어 플러그인" -#, python-format -msgid "" -"The dns_name passed is a FQDN. Its higher level labels must be equal to the " -"dns_domain option in neutron.conf, that has been set to '%(dns_domain)s'. It " -"must also include one or more valid DNS labels to the left of " -"'%(dns_domain)s'" -msgstr "" -"전달된 dns_name은 FQDN입니다. 상위 레벨 레이블은 '%(dns_domain)s'(으)로 설정" -"된 neutron.conf의 dns_domain 옵션과 동일해야 합니다. 또한 '%(dns_domain)s' 왼" -"쪽에 하나 이상의 올바른 DNS 레이블을 포함해야 합니다. " - -#, python-format -msgid "" -"The dns_name passed is a PQDN and its size is '%(dns_name_len)s'. The " -"dns_domain option in neutron.conf is set to %(dns_domain)s, with a length of " -"'%(higher_labels_len)s'. When the two are concatenated to form a FQDN (with " -"a '.' at the end), the resulting length exceeds the maximum size of " -"'%(fqdn_max_len)s'" -msgstr "" -"전달된 dns_name은 PQDN이고 크기는 '%(dns_name_len)s'입니다. neutron.conf의 " -"dns_domain 옵션은 %(dns_domain)s(으)로 설정되고 길이는 " -"'%(higher_labels_len)s'입니다. 끝에 '.'를 사용하여 FQDN을 형성하기 위해 이 둘" -"을 연결하면 길이가 최대 크기인 '%(fqdn_max_len)s'을(를) 초과합니다. " - msgid "The driver used to manage the DHCP server." msgstr "DHCP 서버를 관리하는 데 사용되는 드라이버입니다. " @@ -2646,10 +2294,6 @@ "또는 비어 있는 경우 첫 번째 'tenant_network_types'가 사용됩니다. 이는 VRRP 트" "래픽이 기본값이 아닌 특정 네트워크를 사용해야 하는 경우에 유용합니다. " -#, python-format -msgid "The number of allowed address pair exceeds the maximum %(quota)s." -msgstr "허용되는 주소 쌍 수가 최대값 %(quota)s을(를) 초과합니다." - msgid "" "The number of seconds the agent will wait between polling for local device " "changes." @@ -2720,24 +2364,6 @@ msgstr "사용할 인증 유형" msgid "" -"The working mode for the agent. Allowed modes are: 'legacy' - this preserves " -"the existing behavior where the L3 agent is deployed on a centralized " -"networking node to provide L3 services like DNAT, and SNAT. Use this mode if " -"you do not want to adopt DVR. 'dvr' - this mode enables DVR functionality " -"and must be used for an L3 agent that runs on a compute host. 'dvr_snat' - " -"this enables centralized SNAT support in conjunction with DVR. This mode " -"must be used for an L3 agent running on a centralized node (or in single-" -"host deployments, e.g. devstack)" -msgstr "" -"에이전트에 대한 작업 모드입니다. 허용되는 모드는 다음과 같습니다. '레거시' - " -"이 모드는 L3 에이전트가 중앙 네트워킹 노드에 배치되어 SNAT와 DNAT 같은 L3 서" -"비스를 제공하는 기존 동작을 유지합니다. DVR을 채택하지 않으려면 이 모드를 사" -"용하십시오. 'dvr' - 이 모드는 DVR 기능을 사용하며 컴퓨터 호스트에서 실행되는 " -"L3 에이전트에 사용해야 합니다. 'dvr_snat' - 이 모드는 DVR과 함께 중앙 SNAT 지" -"원을 사용합니다. 중앙 노드에서(또는 devstack과 같은 단일 호스트 배치에서) 실" -"행 중인 L3 에이전트에는 이 모드를 사용해야 합니다." - -msgid "" "There are routers attached to this network that depend on this policy for " "access." msgstr "" @@ -2745,13 +2371,6 @@ "이 필요합니다." msgid "" -"Timeout in seconds for ovs-vsctl commands. If the timeout expires, ovs " -"commands will fail with ALARMCLOCK error." -msgstr "" -"ovs-vsctl 명령의 제한시간(초)입니다. 제한시간이 초과하면 ALARMCLOCK 오류로 인" -"해 ovs 명령이 실패합니다." - -msgid "" "Timeout in seconds to wait for a single OpenFlow request. Used only for " "'native' driver." msgstr "" @@ -2772,9 +2391,6 @@ "너무 긴 접두어가 제공되었습니다. 새 이름이 인터페이스 이름에 지정된 길이를 초" "과합니다." -msgid "Too many availability_zone_hints specified" -msgstr "availability_zone_hints가 너무 많이 지정됨" - msgid "" "True to delete all ports on all the OpenvSwitch bridges. False to delete " "ports created by Neutron on integration and external network bridges." @@ -2827,14 +2443,6 @@ #, python-format msgid "" -"Unable to complete operation for %(router_id)s. The number of routes exceeds " -"the maximum %(quota)s." -msgstr "" -"%(router_id)s에 대한 조작을 완료할 수 없습니다. 라우트 수가 최대 %(quota)s을" -"(를) 초과했습니다. " - -#, python-format -msgid "" "Unable to complete operation for %(subnet_id)s. The number of DNS " "nameservers exceeds the limit %(quota)s." msgstr "" @@ -2850,14 +2458,6 @@ "한계를 초과했습니다. " #, python-format -msgid "" -"Unable to complete operation on address scope %(address_scope_id)s. There " -"are one or more subnet pools in use on the address scope" -msgstr "" -"주소 범위 %(address_scope_id)s에 대한 조작을 완료할 수 없습니다. 주소 범위에 " -"사용 중인 서브넷 풀이 하나 이상 있습니다. " - -#, python-format msgid "Unable to convert value in %s" msgstr "%s의 값을 변환할 수 없음" @@ -2903,10 +2503,6 @@ msgstr "%s에서 자원 이름을 찾을 수 없음" #, python-format -msgid "Unable to generate unique DVR mac for host %(host)s." -msgstr "%(host)s 호스트에 대한 고유 DVR mac을 생성할 수 없습니다." - -#, python-format msgid "Unable to generate unique mac on network %(net_id)s." msgstr "%(net_id)s 네트워크에 고유 MAC을 생성할 수 없습니다. " @@ -2918,10 +2514,6 @@ "%s에서 대상 필드를 식별할 수 없음. 일치가 다음 양식이어야 함." "%%()s" -#, python-format -msgid "Unable to process HA router %s without HA port" -msgstr "HA 포트가 없는 HA 라우터 %s을(를) 처리할 수 없음" - msgid "Unable to provide external connectivity" msgstr "외부 연결을 제공할 수 없음" @@ -2937,14 +2529,6 @@ "트가 이를 사용 중입니다. " #, python-format -msgid "Unable to update address scope %(address_scope_id)s : %(reason)s" -msgstr "주소 범위 %(address_scope_id)s을(를) 업데이트할 수 없음: %(reason)s" - -#, python-format -msgid "Unable to update the following object fields: %(fields)s" -msgstr "다음 오브젝트 필드를 업데이트할 수 없음: %(fields)s" - -#, python-format msgid "" "Unable to verify match:%(match)s as the parent resource: %(res)s was not " "found" @@ -2971,9 +2555,6 @@ msgid "Unit name '%(unit)s' is not valid." msgstr "단위 이름 '%(unit)s'이(가) 올바르지 않습니다." -msgid "Unknown API version specified" -msgstr "알 수 없는 API 버전이 지정됨" - #, python-format msgid "Unknown address type %(address_type)s" msgstr "알 수 없는 주소 유형 %(address_type)s" @@ -3074,13 +2655,6 @@ msgid "Username for connecting to designate in admin context" msgstr "관리 컨텍스트에서 지정하기 위해 연결할 사용자 이름" -msgid "" -"Uses veth for an OVS interface or not. Support kernels with limited " -"namespace support (e.g. RHEL 6.5) so long as ovs_use_veth is set to True." -msgstr "" -"OVS 인터페이스에 veth를 사용하거나 사용하지 않습니다. ovs_use_veth가 True로 " -"설정된 경우 네임스페이스 지원이 제한된 커널을 지원합니다(예: RHEL 6.5)." - msgid "VRRP authentication password" msgstr "VRRP 인증 비밀번호" @@ -3090,14 +2664,6 @@ msgid "VXLAN network unsupported." msgstr "VXLAN 네트워크가 지원되지 않습니다." -#, python-format -msgid "" -"Value of %(parameter)s has to be multiple of %(number)s, with maximum value " -"of %(maximum)s and minimum value of %(minimum)s" -msgstr "" -"%(parameter)s의 값은 %(number)s의 배수여야 하며, 최대값은 %(maximum)s이고 최" -"소값은 %(minimum)s입니다." - msgid "" "Value of host kernel tick rate (hz) for calculating minimum burst value in " "bandwidth limit rules for a port with QoS. See kernel configuration file for " @@ -3292,10 +2858,6 @@ msgid "provider:physical_network specified for %s network" msgstr "%s 네트워크에 대해 지정된 provider:physical_network 입니다" -#, python-format -msgid "rbac_db_model not found in %s" -msgstr "%s에서 rbac_db_model을 찾을 수 없음" - msgid "respawn_interval must be >= 0 if provided." msgstr "respawn_interval은 >= 0이어야 합니다(제공된 경우)." @@ -3325,10 +2887,3 @@ msgid "the nexthop is used by router" msgstr "라우터가 nexthop을 사용함" - -msgid "" -"uuid provided from the command line so external_process can track us via /" -"proc/cmdline interface." -msgstr "" -"external_process가 /proc/cmdline 인터페이스를 통해 추적할 수 있도록 명령행에" -"서 제공된 uuid입니다." diff -Nru neutron-12.0.0/neutron/locale/pt_BR/LC_MESSAGES/neutron.po neutron-12.0.1/neutron/locale/pt_BR/LC_MESSAGES/neutron.po --- neutron-12.0.0/neutron/locale/pt_BR/LC_MESSAGES/neutron.po 2018-02-28 11:30:39.000000000 +0000 +++ neutron-12.0.1/neutron/locale/pt_BR/LC_MESSAGES/neutron.po 2018-03-29 17:33:26.000000000 +0000 @@ -8,18 +8,18 @@ # Fernando Pimenta , 2017. #zanata msgid "" msgstr "" -"Project-Id-Version: neutron 11.0.0.0b3.dev326\n" +"Project-Id-Version: neutron VERSION\n" "Report-Msgid-Bugs-To: https://bugs.launchpad.net/openstack-i18n/\n" -"POT-Creation-Date: 2017-07-18 03:24+0000\n" +"POT-Creation-Date: 2018-03-14 04:19+0000\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "PO-Revision-Date: 2017-03-28 07:43+0000\n" "Last-Translator: Copied by Zanata \n" -"Language: pt-BR\n" +"Language: pt_BR\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" "Generated-By: Babel 2.0\n" -"X-Generator: Zanata 3.9.6\n" +"X-Generator: Zanata 4.3.3\n" "Language-Team: Portuguese (Brazil)\n" #, python-format @@ -63,39 +63,6 @@ msgstr "%(key)s proibida para rede de provedor %(tunnel)s" #, python-format -msgid "" -"%(method)s called with network settings %(current)s (original settings " -"%(original)s) and network segments %(segments)s" -msgstr "" -"%(method)s called with network settings %(current)s (original settings " -"%(original)s) and network segments %(segments)s" - -#, python-format -msgid "" -"%(method)s called with port settings %(current)s (original settings " -"%(original)s) host %(host)s (original host %(original_host)s) vif type " -"%(vif_type)s (original vif type %(original_vif_type)s) vif details " -"%(vif_details)s (original vif details %(original_vif_details)s) binding " -"levels %(levels)s (original binding levels %(original_levels)s) on network " -"%(network)s with segments to bind %(segments_to_bind)s" -msgstr "" -"O %(method)s chamado com as configurações de porta %(current)s " -"(configurações originais %(original)s), host %(host)s (host original " -"%(original_host)s), tipo vif %(vif_type)s (tipo de vif original " -"%(original_vif_type)s), detalhes de vif %(vif_details)s (detalhes de vif " -"originais %(original_vif_details)s) e níveis de ligação %(levels)s (níveis " -"de ligação originais %(original_levels)s) na rede %(network)s com segmentos " -"para ligar %(segments_to_bind)s" - -#, python-format -msgid "" -"%(method)s called with subnet settings %(current)s (original settings " -"%(original)s)" -msgstr "" -"%(method)s called with subnet settings %(current)s (original settings " -"%(original)s)" - -#, python-format msgid "%(name)s '%(addr)s' does not match the ip_version '%(ip_version)s'" msgstr "%(name)s '%(addr)s' não corresponde à ip_version '%(ip_version)s'" @@ -128,38 +95,6 @@ msgstr "%s proibido para rede de provedor local" #, python-format -msgid "" -"'%(data)s' contains '%(length)s' characters. Adding a domain name will cause " -"it to exceed the maximum length of a FQDN of '%(max_len)s'" -msgstr "" -"'%(data)s' contém '%(length)s' caracteres. Incluir um nome de domínio " -"excederá o comprimento máximo de um FQDN de '%(max_len)s'" - -#, python-format -msgid "" -"'%(data)s' contains '%(length)s' characters. Adding a sub-domain will cause " -"it to exceed the maximum length of a FQDN of '%(max_len)s'" -msgstr "" -"'%(data)s' contém '%(length)s' caracteres. Incluir um subdomínio excederá o " -"comprimento máximo de um FQDN de '%(max_len)s'" - -#, python-format -msgid "'%(data)s' not a valid PQDN or FQDN. Reason: %(reason)s" -msgstr "'%(data)s' não é um PQDN ou FQDN válido. Motivo: %(reason)s" - -#, python-format -msgid "'%s' cannot be converted to lowercase string" -msgstr "'%s' não pode ser convertido em sequência minúscula" - -#, python-format -msgid "'%s' is a FQDN. It should be a relative domain name" -msgstr "'%s' é um FQDN. Ele deve ser um nome de domínio relativo." - -#, python-format -msgid "'%s' is not a FQDN" -msgstr "'%s' não é um FQDN" - -#, python-format msgid "'%s' is not a valid RBAC object type" msgstr "'%s' não é um tipo de objeto RBAC válido" @@ -228,26 +163,15 @@ msgid "Address not present on interface" msgstr "Endereço não está presente na interface" -#, python-format -msgid "Address scope %(address_scope_id)s could not be found" -msgstr "O escopo de endereço %(address_scope_id)s não pôde ser localizado" - msgid "" "Address to listen on for OpenFlow connections. Used only for 'native' driver." msgstr "" "Endereço para atender conexões OpenFlow. Usado somente para driver 'native'." -msgid "Adds external network attribute to network resource." -msgstr "Inclui atributo de rede externo no recurso de rede." - msgid "Adds test attributes to core resources." msgstr "Inclui atributos de teste aos recursos principais." #, python-format -msgid "Agent %(id)s could not be found" -msgstr "O agente %(id)s não pôde ser localizado" - -#, python-format msgid "Agent %(id)s is not a L3 Agent or has been disabled" msgstr "O agente %(id)s não é um agente L3 ou foi desativado" @@ -268,13 +192,6 @@ msgid "Agent updated: %(payload)s" msgstr "Agente atualizado:%(payload)s" -#, python-format -msgid "" -"Agent with agent_type=%(agent_type)s and host=%(host)s could not be found" -msgstr "" -"O agente com agent_type=%(agent_type)s e host=%(host)s não pôde ser " -"localizado" - msgid "Allow auto scheduling networks to DHCP agent." msgstr "Permitir o planejamento automático de redes para o agente DHCP." @@ -307,12 +224,6 @@ msgstr "" "Permita executar solicitações (https) de SSL inseguras para metadados nova" -msgid "Allowed address pairs must be a list." -msgstr "Pares de endereço permitidos devem ser uma lista." - -msgid "AllowedAddressPair must contain ip_address" -msgstr "AllowedAddressPair deve conter ip_address" - msgid "" "Allows for serving metadata requests coming from a dedicated metadata access " "network whose CIDR is 169.254.169.254/16 (or larger prefix), and is " @@ -375,10 +286,6 @@ msgid "Availability zone of this node" msgstr "Zona de disponibilidade deste nó" -#, python-format -msgid "AvailabilityZone %(availability_zone)s could not be found." -msgstr "O AvailabilityZone %(availability_zone)s não pôde ser localizada." - msgid "Available commands" msgstr "Comandos disponíveis" @@ -445,16 +352,6 @@ "Não é possível alocar a sub-rede solicitada a partir do conjunto disponível " "de prefixos" -#, python-format -msgid "" -"Cannot associate floating IP %(floating_ip_address)s (%(fip_id)s) with port " -"%(port_id)s using fixed IP %(fixed_ip)s, as that fixed IP already has a " -"floating IP on external network %(net_id)s." -msgstr "" -"Não é possível associar o IP flutuante %(floating_ip_address)s (%(fip_id)s) " -"com a porta %(port_id)s usando IP fixo %(fixed_ip)s, pois esse IP fixo já " -"possui um IP flutuante em uma rede externa %(net_id)s." - msgid "Cannot disable enable_dhcp with ipv6 attributes set" msgstr "Não é possível desativar enable_dhcp com conjunto de atributos ipv6" @@ -567,9 +464,6 @@ "O cidr %(subnet_cidr)s de sub-rede %(subnet_id)s se sobrepõe com o cidr " "%(cidr)s da sub-rede %(sub_id)s" -msgid "Class not found." -msgstr "Classe não encontrada." - msgid "Cleanup resources of a specific agent type only." msgstr "Limpar recursos somente de um tipo de agente específico." @@ -811,10 +705,6 @@ "O endereço Mac do Roteador Virtual Distribuído para o host %(host)s não " "existe." -#, python-format -msgid "Domain %(dns_domain)s not found in the external DNS service" -msgstr "Domínio %(dns_domain)s não localizado no serviço DNS externo" - msgid "Domain to use for building the hostnames" msgstr "Domínio a ser usado para construir os nomes dos hosts" @@ -856,9 +746,6 @@ "%(router)s. O banco de dados não pode ser atualizado. Remova todas as " "duplicatas antes de fazer upgrade do banco de dados." -msgid "Duplicate Metering Rule in POST." -msgstr "Regra de marcação duplicada em POST." - msgid "Duplicate Security Group Rule in POST." msgstr "Regra do Grupo de Segurança Duplicada no Autoteste Inicial." @@ -962,9 +849,6 @@ "inclusão dos resolvedores de DNS customizados na opção " "'dnsmasq_dns_servers' desativa esse recurso." -msgid "Encountered an empty component." -msgstr "Foi encontrado um componente vazio." - msgid "End of VLAN range is less than start of VLAN range" msgstr "Final da faixa de VLAN é menor que o início da faixa de VLAN" @@ -1033,32 +917,10 @@ msgstr "Extensões não localizadas: %(extensions)s." #, python-format -msgid "External DNS driver %(driver)s could not be found." -msgstr "O driver DNS externo %(driver)s não pôde ser localizado." - -#, python-format msgid "External IP %s is the same as the gateway IP" msgstr "O IP externo %s é o mesmo que o IP de gateway" #, python-format -msgid "" -"External network %(external_network_id)s is not reachable from subnet " -"%(subnet_id)s. Therefore, cannot associate Port %(port_id)s with a Floating " -"IP." -msgstr "" -"A rede externa %(external_network_id)s não é atingível a partir da sub-rede " -"%(subnet_id)s. Portanto, não é possível associar a porta %(port_id)s com um " -"IP Flutuante." - -#, python-format -msgid "" -"External network %(net_id)s cannot be updated to be made non-external, since " -"it has existing gateway ports" -msgstr "" -"A rede externa %(net_id)s não pode ser atualizada para tornar-se não " -"externa, pois ela possui portas de gateway existentes" - -#, python-format msgid "Failed rescheduling router %(router_id)s: no eligible l3 agent found." msgstr "" "Falha ao reagendar o roteador %(router_id)s: nenhum agente l3 elegível " @@ -1070,14 +932,6 @@ "Falha ao planejar o roteador %(router_id)s para o Agente L3 %(agent_id)s." #, python-format -msgid "" -"Failed to allocate a VRID in the network %(network_id)s for the router " -"%(router_id)s after %(max_tries)s tries." -msgstr "" -"Falha ao alocar um VRID na rede %(network_id)s para o roteador %(router_id)s " -"após %(max_tries)s tentativas." - -#, python-format msgid "Failed to allocate subnet: %(reason)s." msgstr "Falha ao alocar a sub-rede: %(reason)s." @@ -1090,14 +944,6 @@ #, python-format msgid "" -"Failed to create a duplicate %(object_type)s: for attribute(s) " -"%(attributes)s with value(s) %(values)s" -msgstr "" -"Falha ao criar um %(object_type)s duplicado: para o(s) atributo(s) " -"%(attributes)s com o(s) valor(es) %(values)s" - -#, python-format -msgid "" "Failed to create port on network %(network_id)s, because fixed_ips included " "invalid subnet %(subnet_id)s" msgstr "" @@ -1133,29 +979,9 @@ msgid "Flat provider networks are disabled" msgstr "Redes de provedor simples são desativadas." -#, python-format -msgid "Flavor %(flavor_id)s could not be found." -msgstr "O tipo %(flavor_id)s não pôde ser localizado." - -#, python-format -msgid "Flavor %(flavor_id)s is used by some service instance." -msgstr "O tipo %(flavor_id)s é usado por alguma instância de serviço. " - -msgid "Flavor is not enabled." -msgstr "O tipo não está ativado. " - -#, python-format -msgid "Floating IP %(floatingip_id)s could not be found" -msgstr "O IP flutuante %(floatingip_id)s não pôde ser localizado" - msgid "For TCP/UDP protocols, port_range_min must be <= port_range_max" msgstr "Para protocolos TCP/UDP, port_range_min deve ser <= port_range_max" -#, python-format -msgid "For class %(object_type)s missing primary keys: %(missing_keys)s" -msgstr "" -"Para a classe %(object_type)s, chaves primárias ausentes: %(missing_keys)s" - msgid "Force ip_lib calls to use the root helper" msgstr "Força chamadas ip_lib para utilizar o ajudante raiz" @@ -1176,15 +1002,6 @@ "Versão de IP do gateway inconsistente com a versão do conjunto de alocações." #, python-format -msgid "" -"Gateway cannot be updated for router %(router_id)s, since a gateway to " -"external network %(net_id)s is required by one or more floating IPs." -msgstr "" -"O gateway não pode ser atualizado para o roteador %(router_id)s, pois um " -"gateway para rede externa %(net_id)s é requerido por um ou mais IPs " -"flutuantes." - -#, python-format msgid "Gateway ip %(ip_address)s conflicts with allocation pool %(pool)s." msgstr "" "O IP de gateway %(ip_address)s está em conflito com o conjunto de alocações " @@ -1439,10 +1256,6 @@ msgstr "Ethertype %(ethertype)s inválido para o protocolo %(protocol)s." #, python-format -msgid "Invalid format for routes: %(routes)s, %(reason)s" -msgstr "Formato inválido para rotas: %(routes)s, %(reason)s" - -#, python-format msgid "Invalid format: %s" msgstr "Formato inválido: %s" @@ -1485,10 +1298,6 @@ msgstr "Formato inválido de provedor de serviço" #, python-format -msgid "Invalid service type %(service_type)s." -msgstr "Tipo de serviço inválido %(service_type)s." - -#, python-format msgid "" "Invalid value for ICMP %(field)s (%(attr)s) %(value)s. It must be 0 to 255." msgstr "" @@ -1571,9 +1380,6 @@ msgid "Location of Metadata Proxy UNIX domain socket" msgstr "Local de soquete de domínio UNIX de Proxy de Metadados" -msgid "Location of pid file of this process." -msgstr "Local do arquivo pid deste processo." - msgid "Location to store DHCP server config files." msgstr "Local para armazenar arquivos de configuração do servidor DHCP" @@ -1659,21 +1465,6 @@ msgid "Metering driver" msgstr "Driver de medição" -#, python-format -msgid "Metering label %(label_id)s does not exist" -msgstr "Rótulo de marcação %(label_id)s não existe" - -#, python-format -msgid "Metering label rule %(rule_id)s does not exist" -msgstr "Regra para rótulo de marcação %(rule_id)s não existe" - -#, python-format -msgid "" -"Metering label rule with remote_ip_prefix %(remote_ip_prefix)s overlaps " -"another" -msgstr "" -"Regra de marcação com remote_ip_prefix %(remote_ip_prefix)s sobrepõe outra" - msgid "MinRtrAdvInterval setting for radvd.conf" msgstr "Configuração de MinRtrAdvInterval para o radvd.conf" @@ -1710,11 +1501,6 @@ "todos os agentes." #, python-format -msgid "Multiple agents with agent_type=%(agent_type)s and host=%(host)s found" -msgstr "" -"Vários agentes com agent_type=%(agent_type)s e host=%(host)s localizados" - -#, python-format msgid "Multiple default providers for service %s" msgstr "Mútliplos provedores padrão para o serviço %s" @@ -1739,22 +1525,6 @@ msgid "Must specify one or more actions on flow addition or modification" msgstr "Deve especificar uma ou mais ações na adição ou modificação do fluxo" -#, python-format -msgid "Name %(dns_name)s is duplicated in the external DNS service" -msgstr "O nome %(dns_name)s está duplicado no serviço DNS externo. " - -#, python-format -msgid "" -"Name '%s' must be 1-63 characters long, each of which can only be " -"alphanumeric or a hyphen." -msgstr "" -"O nome '%s' deve ter 1-63 caracteres de comprimento, cada um dos quais pode " -"ser apenas alfanumérico ou possuir um hífen." - -#, python-format -msgid "Name '%s' must not start or end with a hyphen." -msgstr "O nome '%s' não deve começar nem terminar com um hífen." - msgid "Name of Open vSwitch bridge to use" msgstr "Nome da ponte Open vSwitch a ser usado" @@ -1840,15 +1610,6 @@ msgid "No more IP addresses available for subnet %(subnet_id)s." msgstr "Nenhum outro endereço IP disponível para a sub-rede %(subnet_id)s." -#, python-format -msgid "" -"No more Virtual Router Identifier (VRID) available when creating router " -"%(router_id)s. The limit of number of HA Routers per tenant is 254." -msgstr "" -"Nenhum outro Identificador de Roteador Virtual (VRID) disponível ao criar o " -"roteador %(router_id)s. O limite do número de Roteadores de alta " -"disponibilidade por locatário é de 254." - msgid "No offline migrations pending." msgstr "Nenhuma migração off-line pendente." @@ -2099,13 +1860,6 @@ "IPv4 específico ao designar um IP flutuante" msgid "" -"Port Security must be enabled in order to have allowed address pairs on a " -"port." -msgstr "" -"A Segurança da Porta deve ser ativada para ter pares de endereços permitidos " -"em uma porta." - -msgid "" "Port to listen on for OpenFlow connections. Used only for 'native' driver." msgstr "" "Porta para atender conexões OpenFlow. Usada somente para driver 'native'." @@ -2269,22 +2023,6 @@ msgstr "" "Falha de solicitação: erro do servidor interno ao processar sua solicitação." -#, python-format -msgid "" -"Request contains duplicate address pair: mac_address %(mac_address)s " -"ip_address %(ip_address)s." -msgstr "" -"A solicitação contém um par de endereços duplicado: mac_address " -"%(mac_address)s ip_address %(ip_address)s." - -#, python-format -msgid "" -"Requested subnet with cidr: %(cidr)s for network: %(network_id)s overlaps " -"with another subnet" -msgstr "" -"Sub-rede solicitada com cidr: %(cidr)s para rede: %(network_id)s se sobrepõe " -"com outra sub-rede" - msgid "" "Reset flow table on start. Setting this to True will cause brief traffic " "interruption." @@ -2330,23 +2068,6 @@ msgstr "As permissões de raiz são necessárias para descartar privilégios." #, python-format -msgid "Router %(router_id)s %(reason)s" -msgstr "Roteador %(router_id)s %(reason)s" - -#, python-format -msgid "Router %(router_id)s could not be found" -msgstr "O roteador %(router_id)s não pôde ser localizado" - -#, python-format -msgid "Router %(router_id)s does not have an interface with id %(port_id)s" -msgstr "O roteador %(router_id)s não possui uma interface com o id %(port_id)s" - -#, python-format -msgid "Router %(router_id)s has no interface on subnet %(subnet_id)s" -msgstr "" -"O roteador %(router_id)s não possui uma interface na sub-rede %(subnet_id)s" - -#, python-format msgid "Router '%(router_id)s' is not compatible with this agent." msgstr "O roteador '%(router_id)s‘ não é compatível com este agente." @@ -2354,24 +2075,6 @@ msgid "Router already has a port on subnet %s" msgstr "O roteador já possui uma porta na sub-rede %s" -#, python-format -msgid "" -"Router interface for subnet %(subnet_id)s on router %(router_id)s cannot be " -"deleted, as it is required by one or more floating IPs." -msgstr "" -"A interface do roteador para a sub-rede %(subnet_id)s no roteador " -"%(router_id)s não pode ser excluída, pois ela é requerida por um ou mais IPs " -"flutuantes." - -#, python-format -msgid "" -"Router interface for subnet %(subnet_id)s on router %(router_id)s cannot be " -"deleted, as it is required by one or more routes." -msgstr "" -"A interface do roteador para a sub-rede %(subnet_id)s no roteador " -"%(router_id)s não pode ser excluída, pois ela é requerida por uma ou mais " -"rotas." - msgid "Router port must have at least one fixed IP" msgstr "A porta do Roteador deve ter pelo menos um IP fixo" @@ -2451,33 +2154,6 @@ msgstr "Enviar notificação para nova quando o status da porta muda" #, python-format -msgid "Service Profile %(sp_id)s could not be found." -msgstr "O Perfil de Serviço %(sp_id)s não pôde ser localizado." - -#, python-format -msgid "Service Profile %(sp_id)s is already associated with flavor %(fl_id)s." -msgstr "O Perfil de Serviço %(sp_id)s já está associado ao tipo %(fl_id)s." - -#, python-format -msgid "Service Profile %(sp_id)s is not associated with flavor %(fl_id)s." -msgstr "O Perfil de Serviço %(sp_id)s não está associado ao tipo %(fl_id)s." - -#, python-format -msgid "Service Profile %(sp_id)s is used by some service instance." -msgstr "" -"O Perfil de Serviço %(sp_id)s é usado por alguma instância de serviço. " - -#, python-format -msgid "Service Profile driver %(driver)s could not be found." -msgstr "O driver do Perfil de Serviço %(driver)s não pôde ser localizado." - -msgid "Service Profile is not enabled." -msgstr "O Perfil de Serviço não está ativado." - -msgid "Service Profile needs either a driver or metainfo." -msgstr "O Perfil de Serviço precisa de um driver ou de uma metainfo." - -#, python-format msgid "" "Service provider '%(provider)s' could not be found for service type " "%(service_type)s" @@ -2545,9 +2221,6 @@ "As sub-redes hospedadas na mesma rede devem ser alocadas a partir do mesmo " "conjunto de sub-redes." -msgid "Suffix to append to all namespace names." -msgstr "Sufixo para acrescentar a todos os nomes de namespace." - msgid "" "System-wide flag to determine the type of router that tenants can create. " "Only admin can override." @@ -2561,13 +2234,6 @@ msgid "TCP Port used by Nova metadata server." msgstr "Porta TCP usada pelo servidor de metadados Nova." -#, python-format -msgid "TLD '%s' must not be all numeric" -msgstr "TLD '%s' não deve ser todo numérico" - -msgid "TOS for vxlan interface protocol packets." -msgstr "TOS para pacotes de protocolo da interface vxlan." - msgid "TTL for vxlan interface protocol packets." msgstr "TTL para pacotes de protocolo da interface vxlan." @@ -2625,14 +2291,6 @@ "meio de DHCP (Opção 121). Essa opção não tem efeito algum quando " "force_metadata estiver configurado para True." -#, python-format -msgid "" -"The HA Network CIDR specified in the configuration file isn't valid; " -"%(cidr)s." -msgstr "" -"O CIDR da Rede de alta disponibilidade especificado no arquivo de " -"configuração não é válido; %(cidr)s." - msgid "The UDP port to use for VXLAN tunnels." msgstr "A porta UDP utilizada para túneis VXLAN." @@ -2683,32 +2341,6 @@ msgid "The core plugin Neutron will use" msgstr "O plug-in principal que o Neutron irá utilizar." -#, python-format -msgid "" -"The dns_name passed is a FQDN. Its higher level labels must be equal to the " -"dns_domain option in neutron.conf, that has been set to '%(dns_domain)s'. It " -"must also include one or more valid DNS labels to the left of " -"'%(dns_domain)s'" -msgstr "" -"O dns_name passado é um FQDN. Seus rótulos de nível superior devem ser " -"iguais à opção dns_domain em neutron.conf, que foi configurada para " -"'%(dns_domain)s'. Ele deve também incluir um ou mais rótulos de DNS válidos " -"à esquerda de '%(dns_domain)s'" - -#, python-format -msgid "" -"The dns_name passed is a PQDN and its size is '%(dns_name_len)s'. The " -"dns_domain option in neutron.conf is set to %(dns_domain)s, with a length of " -"'%(higher_labels_len)s'. When the two are concatenated to form a FQDN (with " -"a '.' at the end), the resulting length exceeds the maximum size of " -"'%(fqdn_max_len)s'" -msgstr "" -"O dns_name passado é um PQDN e seu tamanho é '%(dns_name_len)s'. A opção " -"dns_domain em neutron.conf é configurada para %(dns_domain)s, com um " -"comprimento de '%(higher_labels_len)s'. Quando os dois são concatenados para " -"formar um FQDN (com um '.' no final), o comprimento resultante excede o " -"tamanho máximo de '%(fqdn_max_len)s'" - msgid "The driver used to manage the DHCP server." msgstr "O driver usado para gerenciar o servidor DHCP." @@ -2762,10 +2394,6 @@ "padrão ou se em branco, o primeiro 'tenant_network_types' será usado. Isso é " "útil quando o tráfego VRRP deve usar uma rede específica que não é a padrão." -#, python-format -msgid "The number of allowed address pair exceeds the maximum %(quota)s." -msgstr "O número de par de endereços permitidos excede o máximo de %(quota)s." - msgid "" "The number of seconds the agent will wait between polling for local device " "changes." @@ -2840,39 +2468,12 @@ msgstr "O tipo de autenticação a ser usado" msgid "" -"The working mode for the agent. Allowed modes are: 'legacy' - this preserves " -"the existing behavior where the L3 agent is deployed on a centralized " -"networking node to provide L3 services like DNAT, and SNAT. Use this mode if " -"you do not want to adopt DVR. 'dvr' - this mode enables DVR functionality " -"and must be used for an L3 agent that runs on a compute host. 'dvr_snat' - " -"this enables centralized SNAT support in conjunction with DVR. This mode " -"must be used for an L3 agent running on a centralized node (or in single-" -"host deployments, e.g. devstack)" -msgstr "" -"O modo de trabalho para o agente. Os modos permitidos são: 'legacy' - isso " -"preserva o comportamento existente em que o agente L3 é implementado em um " -"nó de rede centralizada para fornecer serviços L3 como DNAT e SNAT. Use este " -"modo se você não desejar adotar DVR. 'dvr' - este modo permite a " -"funcionalidade de DVR e deve ser usado para um agente L3 que é executado em " -"um host de cálculo. 'dvr_snat'- isto permite suporte SNAT centralizado em " -"conjunto com DVR. Este modo deve ser usado para um agente L3 em execução em " -"um nó centralizado (ou em implementações de host único, por exemplo, " -"devstack)" - -msgid "" "There are routers attached to this network that depend on this policy for " "access." msgstr "" "Há roteadores conectados a essa rede que dependem dessa política para acesso." msgid "" -"Timeout in seconds for ovs-vsctl commands. If the timeout expires, ovs " -"commands will fail with ALARMCLOCK error." -msgstr "" -"Tempo limite em segundos para comandos ovs-vsctl. Se o tempo limite expirar, " -"comandos ovs falharão com o erro ALARMCLOCK." - -msgid "" "Timeout in seconds to wait for a single OpenFlow request. Used only for " "'native' driver." msgstr "" @@ -2893,9 +2494,6 @@ "Prefixo muito longo fornecido. O novo nome excede o comprimento fornecido de " "um nome de instância." -msgid "Too many availability_zone_hints specified" -msgstr "Muitos availability_zone_hints especificados. " - msgid "" "True to delete all ports on all the OpenvSwitch bridges. False to delete " "ports created by Neutron on integration and external network bridges." @@ -2949,14 +2547,6 @@ #, python-format msgid "" -"Unable to complete operation for %(router_id)s. The number of routes exceeds " -"the maximum %(quota)s." -msgstr "" -"Não é possível concluir a operação para %(router_id)s. O número de rotas " -"excede o máximo de %(quota)s." - -#, python-format -msgid "" "Unable to complete operation for %(subnet_id)s. The number of DNS " "nameservers exceeds the limit %(quota)s." msgstr "" @@ -2972,15 +2562,6 @@ "host excede o limite %(quota)s." #, python-format -msgid "" -"Unable to complete operation on address scope %(address_scope_id)s. There " -"are one or more subnet pools in use on the address scope" -msgstr "" -"Não é possível concluir a operação no escopo de endereço " -"%(address_scope_id)s. Há um ou mais conjuntos de sub-rede em uso no escopo " -"de endereço" - -#, python-format msgid "Unable to convert value in %s" msgstr "Não é possível converter valor em %s" @@ -3027,10 +2608,6 @@ msgstr "Não foi possível encontrar nome de recurso em %s" #, python-format -msgid "Unable to generate unique DVR mac for host %(host)s." -msgstr "Não é possível gerar MAC de DVR exclusivo para o host %(host)s." - -#, python-format msgid "Unable to generate unique mac on network %(net_id)s." msgstr "Não é possível gerar um mac exclusivo na rede %(net_id)s." @@ -3057,15 +2634,6 @@ "%(network)s. Ela está sendo usada por diversos locatários." #, python-format -msgid "Unable to update address scope %(address_scope_id)s : %(reason)s" -msgstr "" -"Não é possível atualizar escopo de endereço %(address_scope_id)s: %(reason)s" - -#, python-format -msgid "Unable to update the following object fields: %(fields)s" -msgstr "Não é possível atualizar os campos de objetos a seguir: %(fields)s" - -#, python-format msgid "" "Unable to verify match:%(match)s as the parent resource: %(res)s was not " "found" @@ -3093,9 +2661,6 @@ msgid "Unit name '%(unit)s' is not valid." msgstr "O nome da unidade '%(unit)s' não é válido." -msgid "Unknown API version specified" -msgstr "Versão de API especificada é desconhecida" - #, python-format msgid "Unknown address type %(address_type)s" msgstr "Tipo de endereço desconhecido %(address_type)s" @@ -3199,14 +2764,6 @@ msgid "Username for connecting to designate in admin context" msgstr "Nome de usuário para conexão ao Designate no contexto de admnistrador" -msgid "" -"Uses veth for an OVS interface or not. Support kernels with limited " -"namespace support (e.g. RHEL 6.5) so long as ovs_use_veth is set to True." -msgstr "" -"Usa veth para uma interface OVS ou não. Os kernels de apoio com namespace " -"limitado suportam (por exemplo, RHEL 6.5) enquanto ovs_use_veth estiver " -"configurado para True." - msgid "VRRP authentication password" msgstr "Senha de autenticação do VRRP" @@ -3216,14 +2773,6 @@ msgid "VXLAN network unsupported." msgstr "Rede VXLAN não suportada." -#, python-format -msgid "" -"Value of %(parameter)s has to be multiple of %(number)s, with maximum value " -"of %(maximum)s and minimum value of %(minimum)s" -msgstr "" -"O valor de %(parameter)s possui um múltiplo de %(number)s, com valor máximo " -"de %(maximum)s e valor mínimo de %(minimum)s" - msgid "" "Value of host kernel tick rate (hz) for calculating minimum burst value in " "bandwidth limit rules for a port with QoS. See kernel configuration file for " @@ -3424,10 +2973,6 @@ msgid "provider:physical_network specified for %s network" msgstr "provider:physical_network especificado para a rede %s" -#, python-format -msgid "rbac_db_model not found in %s" -msgstr "rbac_db_model não localizado em %s" - msgid "respawn_interval must be >= 0 if provided." msgstr "respawn_interval deve ser >= 0 se fornecida." @@ -3458,10 +3003,3 @@ msgid "the nexthop is used by router" msgstr "o nexthop é usado pelo roteador" - -msgid "" -"uuid provided from the command line so external_process can track us via /" -"proc/cmdline interface." -msgstr "" -"uuid fornecido a partir da linha de comandos para que external_process possa " -"nos monitorar via interface /proc/cmdline." diff -Nru neutron-12.0.0/neutron/locale/ru/LC_MESSAGES/neutron.po neutron-12.0.1/neutron/locale/ru/LC_MESSAGES/neutron.po --- neutron-12.0.0/neutron/locale/ru/LC_MESSAGES/neutron.po 2018-02-28 11:30:39.000000000 +0000 +++ neutron-12.0.1/neutron/locale/ru/LC_MESSAGES/neutron.po 2018-03-29 17:33:26.000000000 +0000 @@ -6,9 +6,9 @@ # Andreas Jaeger , 2016. #zanata msgid "" msgstr "" -"Project-Id-Version: neutron 11.0.0.0b3.dev326\n" +"Project-Id-Version: neutron VERSION\n" "Report-Msgid-Bugs-To: https://bugs.launchpad.net/openstack-i18n/\n" -"POT-Creation-Date: 2017-07-18 03:24+0000\n" +"POT-Creation-Date: 2018-03-14 04:19+0000\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" @@ -19,7 +19,7 @@ "%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n" "%100>=11 && n%100<=14)? 2 : 3);\n" "Generated-By: Babel 2.0\n" -"X-Generator: Zanata 3.9.6\n" +"X-Generator: Zanata 4.3.3\n" "Language-Team: Russian\n" #, python-format @@ -62,38 +62,6 @@ msgstr "%(key)s запрещен для сети поставщика %(tunnel)s" #, python-format -msgid "" -"%(method)s called with network settings %(current)s (original settings " -"%(original)s) and network segments %(segments)s" -msgstr "" -"Метод %(method)s вызывался с параметрами сети %(current)s (исходные " -"параметры %(original)s) и сетевыми сегментами %(segments)s" - -#, python-format -msgid "" -"%(method)s called with port settings %(current)s (original settings " -"%(original)s) host %(host)s (original host %(original_host)s) vif type " -"%(vif_type)s (original vif type %(original_vif_type)s) vif details " -"%(vif_details)s (original vif details %(original_vif_details)s) binding " -"levels %(levels)s (original binding levels %(original_levels)s) on network " -"%(network)s with segments to bind %(segments_to_bind)s" -msgstr "" -"%(method)s вызван с параметрами порта %(current)s (исходные параметры " -"%(original)s) хост %(host)s (исходный хост %(original_host)s) тип vif " -"%(vif_type)s (исходный тип vif %(original_vif_type)s) сведения vif " -"%(vif_details)s (исходные сведения vif %(original_vif_details)s) уровни " -"связывания %(levels)s (исходные уровни связывания %(original_levels)s) в " -"сети %(network)s с сегментами для связывания %(segments_to_bind)s" - -#, python-format -msgid "" -"%(method)s called with subnet settings %(current)s (original settings " -"%(original)s)" -msgstr "" -"Метод %(method)s вызывался с параметрами подсети %(current)s (исходные " -"параметры %(original)s)" - -#, python-format msgid "%(name)s '%(addr)s' does not match the ip_version '%(ip_version)s'" msgstr "%(name)s '%(addr)s' не соответствует версии IP '%(ip_version)s'" @@ -126,40 +94,6 @@ msgstr "%s запрещено для локальной сети провайдера" #, python-format -msgid "" -"'%(data)s' contains '%(length)s' characters. Adding a domain name will cause " -"it to exceed the maximum length of a FQDN of '%(max_len)s'" -msgstr "" -"Длина '%(data)s' составляет '%(length)s' символов. Добавление доменного " -"имени приведет к превышению максимальной длины полного имени домена, " -"'%(max_len)s'" - -#, python-format -msgid "" -"'%(data)s' contains '%(length)s' characters. Adding a sub-domain will cause " -"it to exceed the maximum length of a FQDN of '%(max_len)s'" -msgstr "" -"Длина '%(data)s' составляет '%(length)s' символов. Добавление поддомена " -"приведет к превышению максимальной длины полного имени домена, '%(max_len)s'" - -#, python-format -msgid "'%(data)s' not a valid PQDN or FQDN. Reason: %(reason)s" -msgstr "'%(data)s' не является допустимым PQDN или FQDN. Причина: %(reason)s" - -#, python-format -msgid "'%s' cannot be converted to lowercase string" -msgstr "'%s' невозможно преобразовать в строку в нижнем регистре" - -#, python-format -msgid "'%s' is a FQDN. It should be a relative domain name" -msgstr "" -"'%s' - это полное имя домена. Должно быть указано относительное имя домена" - -#, python-format -msgid "'%s' is not a FQDN" -msgstr "'%s' - это не полное имя домена" - -#, python-format msgid "'%s' is not a valid RBAC object type" msgstr "'%s' не является допустимым типом объекта RBAC" @@ -226,27 +160,16 @@ msgid "Address not present on interface" msgstr "Адрес не задан для интерфейса" -#, python-format -msgid "Address scope %(address_scope_id)s could not be found" -msgstr "Не удалось найти адресную область %(address_scope_id)s" - msgid "" "Address to listen on for OpenFlow connections. Used only for 'native' driver." msgstr "" "Адрес для обработки запросов на соединение OpenFlow. Используется только для " "'встроенного' драйвера." -msgid "Adds external network attribute to network resource." -msgstr "Добавляет атрибут внешней сети к сетевому ресурсу." - msgid "Adds test attributes to core resources." msgstr "Добавляет атрибуты теста в базовые ресурсы." #, python-format -msgid "Agent %(id)s could not be found" -msgstr "Не найден агент %(id)s" - -#, python-format msgid "Agent %(id)s is not a L3 Agent or has been disabled" msgstr "Агент %(id)s выключен или не является агентом L3" @@ -268,11 +191,6 @@ msgid "Agent updated: %(payload)s" msgstr "Агент обновлен: %(payload)s" -#, python-format -msgid "" -"Agent with agent_type=%(agent_type)s and host=%(host)s could not be found" -msgstr "Не найден агент с agent_type=%(agent_type)s и host=%(host)s" - msgid "Allow auto scheduling networks to DHCP agent." msgstr "Разрешить автоматическое планирование сетей для агента DHCP." @@ -303,12 +221,6 @@ msgid "Allow to perform insecure SSL (https) requests to nova metadata" msgstr "Разрешить незащищенные запросы SSL (https) метаданных nova" -msgid "Allowed address pairs must be a list." -msgstr "Разрешенные пары адресов должны быть указаны в виде списка." - -msgid "AllowedAddressPair must contain ip_address" -msgstr "AllowedAddressPair должен содержать атрибут ip_address" - msgid "" "Allows for serving metadata requests coming from a dedicated metadata access " "network whose CIDR is 169.254.169.254/16 (or larger prefix), and is " @@ -373,10 +285,6 @@ msgid "Availability zone of this node" msgstr "Зона доступности узла." -#, python-format -msgid "AvailabilityZone %(availability_zone)s could not be found." -msgstr "Не найдена зона доступности %(availability_zone)s." - msgid "Available commands" msgstr "Доступные команды" @@ -440,17 +348,6 @@ msgid "Cannot allocate requested subnet from the available set of prefixes" msgstr "Невозможно выделить запрошенную подсеть из доступного набора префиксов" -#, python-format -msgid "" -"Cannot associate floating IP %(floating_ip_address)s (%(fip_id)s) with port " -"%(port_id)s using fixed IP %(fixed_ip)s, as that fixed IP already has a " -"floating IP on external network %(net_id)s." -msgstr "" -"Нефиксированный IP-адрес %(floating_ip_address)s (%(fip_id)s) невозможно " -"связать с портом %(port_id)s, который использует фиксированный IP-адрес " -"%(fixed_ip)s, так как для этого фиксированного IP-адреса уже есть " -"нефиксированный IP-адрес во внешней сети %(net_id)s." - msgid "Cannot disable enable_dhcp with ipv6 attributes set" msgstr "Невозможно отключить enable_dhcp, если заданы атрибуты ipv6" @@ -562,9 +459,6 @@ "Cidr %(subnet_cidr)s подсети %(subnet_id)s перекрывается с cidr %(cidr)s " "подсети %(sub_id)s" -msgid "Class not found." -msgstr "Класс не найден." - msgid "Cleanup resources of a specific agent type only." msgstr "Очистить ресурсы только для заданного типа агента." @@ -801,10 +695,6 @@ "MAC-адрес распределенного виртуального маршрутизатора для хоста %(host)s не " "существует." -#, python-format -msgid "Domain %(dns_domain)s not found in the external DNS service" -msgstr "Домен %(dns_domain)s не найден во внешней службе DNS" - msgid "Domain to use for building the hostnames" msgstr "Домен, используемый для компоновки имен хостов" @@ -848,9 +738,6 @@ "%(router)s. Обновление базы данных невозможно. Перед обновлением базы данных " "устраните все повторы." -msgid "Duplicate Metering Rule in POST." -msgstr "Дубликат правила измерения в POST." - msgid "Duplicate Security Group Rule in POST." msgstr "Совпадающие правила группы защиты в POST." @@ -951,9 +838,6 @@ "процесса dnsmasq. Эта функция выключается, если в опцию " "'dnsmasq_dns_servers' добавляются пользовательские обработчики запросов DNS." -msgid "Encountered an empty component." -msgstr "Обнаружен пустой компонент." - msgid "End of VLAN range is less than start of VLAN range" msgstr "Конечное значение диапазона VLAN меньше его начального значения" @@ -1020,31 +904,10 @@ msgstr "Расширения не найдены: %(extensions)s." #, python-format -msgid "External DNS driver %(driver)s could not be found." -msgstr "Драйвер внешней службы DNS %(driver)s не найден." - -#, python-format msgid "External IP %s is the same as the gateway IP" msgstr "Внешний IP-адрес %s совпадает с IP-адресом шлюза" #, python-format -msgid "" -"External network %(external_network_id)s is not reachable from subnet " -"%(subnet_id)s. Therefore, cannot associate Port %(port_id)s with a Floating " -"IP." -msgstr "" -"Внешняя сеть %(external_network_id)s недостижима из подсети %(subnet_id)s. " -"Поэтому порт %(port_id)s невозможно связать с нефиксированным IP-адресом." - -#, python-format -msgid "" -"External network %(net_id)s cannot be updated to be made non-external, since " -"it has existing gateway ports" -msgstr "" -"Невозможно изменить внешнюю сеть %(net_id)s, сделав ее не внешней, так как в " -"ней существуют порты шлюза" - -#, python-format msgid "Failed rescheduling router %(router_id)s: no eligible l3 agent found." msgstr "" "Не удалось перепланировать маршрутизатор %(router_id)s: не найден допустимый " @@ -1057,14 +920,6 @@ "%(agent_id)s." #, python-format -msgid "" -"Failed to allocate a VRID in the network %(network_id)s for the router " -"%(router_id)s after %(max_tries)s tries." -msgstr "" -"Не удалось выделить VRID в сети %(network_id)s для маршрутизатора " -"%(router_id)s за %(max_tries)s попыток." - -#, python-format msgid "Failed to allocate subnet: %(reason)s." msgstr "Не удалось выделить подсеть: %(reason)s." @@ -1077,14 +932,6 @@ #, python-format msgid "" -"Failed to create a duplicate %(object_type)s: for attribute(s) " -"%(attributes)s with value(s) %(values)s" -msgstr "" -"Не удалось создать копию %(object_type)s для атрибутов %(attributes)s со " -"значениями %(values)s" - -#, python-format -msgid "" "Failed to create port on network %(network_id)s, because fixed_ips included " "invalid subnet %(subnet_id)s" msgstr "" @@ -1120,30 +967,10 @@ msgid "Flat provider networks are disabled" msgstr "Одноуровневые сети выключены" -#, python-format -msgid "Flavor %(flavor_id)s could not be found." -msgstr "Разновидность %(flavor_id)s не найдена." - -#, python-format -msgid "Flavor %(flavor_id)s is used by some service instance." -msgstr "Разновидность %(flavor_id)s используется одним из экземпляров службы." - -msgid "Flavor is not enabled." -msgstr "Разновидность не включена." - -#, python-format -msgid "Floating IP %(floatingip_id)s could not be found" -msgstr "Не найден нефиксированный IP-адрес %(floatingip_id)s" - msgid "For TCP/UDP protocols, port_range_min must be <= port_range_max" msgstr "" "Для протоколов TCP/UDP значение port_range_min должно быть <= port_range_max" -#, python-format -msgid "For class %(object_type)s missing primary keys: %(missing_keys)s" -msgstr "" -"Для класса %(object_type)s отсутствуют первичные ключи: %(missing_keys)s" - msgid "Force ip_lib calls to use the root helper" msgstr "" "Использовать в вызовах ip_lib вспомогательную программу для получения прав " @@ -1165,15 +992,6 @@ msgstr "Версия IP шлюза несовместима с версией для пула выделения адресов" #, python-format -msgid "" -"Gateway cannot be updated for router %(router_id)s, since a gateway to " -"external network %(net_id)s is required by one or more floating IPs." -msgstr "" -"Невозможно обновить шлюз для маршрутизатора %(router_id)s, так как шлюз к " -"внешней сети %(net_id)s требуется одному или нескольким нефиксированным IP-" -"адресам." - -#, python-format msgid "Gateway ip %(ip_address)s conflicts with allocation pool %(pool)s." msgstr "IP-адрес шлюза %(ip_address)s конфликтует с пулом выделения %(pool)s." @@ -1425,10 +1243,6 @@ msgstr "Недопустимый тип %(ethertype)s для протокола %(protocol)s." #, python-format -msgid "Invalid format for routes: %(routes)s, %(reason)s" -msgstr "Недопустимый формат маршрутизаторов: %(routes)s, %(reason)s" - -#, python-format msgid "Invalid format: %s" msgstr "Неправильный формат: %s" @@ -1472,10 +1286,6 @@ msgstr "Недопустимый формат поставщика службы" #, python-format -msgid "Invalid service type %(service_type)s." -msgstr "Недопустимый тип службы %(service_type)s." - -#, python-format msgid "" "Invalid value for ICMP %(field)s (%(attr)s) %(value)s. It must be 0 to 255." msgstr "" @@ -1559,9 +1369,6 @@ msgid "Location of Metadata Proxy UNIX domain socket" msgstr "Расположение сокета домена UNIX прокси метаданных" -msgid "Location of pid file of this process." -msgstr "Расположение файла pid этого процесса." - msgid "Location to store DHCP server config files." msgstr "Расположение для хранения файлов конфигурации сервера DHCP." @@ -1649,22 +1456,6 @@ msgid "Metering driver" msgstr "Драйвер измерения" -#, python-format -msgid "Metering label %(label_id)s does not exist" -msgstr "Метка измерения %(label_id)s не существует" - -#, python-format -msgid "Metering label rule %(rule_id)s does not exist" -msgstr "Правило метки измерения %(rule_id)s не существует" - -#, python-format -msgid "" -"Metering label rule with remote_ip_prefix %(remote_ip_prefix)s overlaps " -"another" -msgstr "" -"Правило метки измерения с remote_ip_prefix %(remote_ip_prefix)s " -"перекрывается другим правилом" - msgid "MinRtrAdvInterval setting for radvd.conf" msgstr "Параметр MinRtrAdvInterval для radvd.conf" @@ -1702,10 +1493,6 @@ "быть одинаковым во всех агентах." #, python-format -msgid "Multiple agents with agent_type=%(agent_type)s and host=%(host)s found" -msgstr "Найдено несколько агентов с agent_type=%(agent_type)s и host=%(host)s" - -#, python-format msgid "Multiple default providers for service %s" msgstr "Несколько поставщиков по умолчанию для службы %s" @@ -1730,22 +1517,6 @@ "Необходимо указать одно или несколько действий добавления или изменения " "потока" -#, python-format -msgid "Name %(dns_name)s is duplicated in the external DNS service" -msgstr "Имя %(dns_name)s повторяется во внешней службе DNS" - -#, python-format -msgid "" -"Name '%s' must be 1-63 characters long, each of which can only be " -"alphanumeric or a hyphen." -msgstr "" -"Длина имени '%s' должна находиться в диапазоне от 1 до 63 алфавитно-цифровых " -"символов или дефисов." - -#, python-format -msgid "Name '%s' must not start or end with a hyphen." -msgstr "Имя '%s' не должно начинаться дефисом или оканчиваться им." - msgid "Name of Open vSwitch bridge to use" msgstr "Имя используемого моста Open vSwitch" @@ -1830,15 +1601,6 @@ msgid "No more IP addresses available for subnet %(subnet_id)s." msgstr "В подсети %(subnet_id)s больше нет доступных IP-адресов." -#, python-format -msgid "" -"No more Virtual Router Identifier (VRID) available when creating router " -"%(router_id)s. The limit of number of HA Routers per tenant is 254." -msgstr "" -"Не осталось доступных ИД виртуального маршрутизатора (VRID) при создании " -"маршрутизатора %(router_id)s. Ограничение числа маршрутизаторов высокой " -"готовности на арендатора составляет 254." - msgid "No offline migrations pending." msgstr "Нет ожидающих миграций с выключением." @@ -2083,13 +1845,6 @@ "нефиксированного IP-адреса необходимо указать конкретный адрес IPv4" msgid "" -"Port Security must be enabled in order to have allowed address pairs on a " -"port." -msgstr "" -"Необходимо включить защиту порта для получения разрешенных пар адресов на " -"порту." - -msgid "" "Port to listen on for OpenFlow connections. Used only for 'native' driver." msgstr "" "Порт для обработки запросов на соединение OpenFlow. Используется только для " @@ -2247,22 +2002,6 @@ "Запрос не выполнен: при обработке запроса произошла внутренняя ошибка " "сервера." -#, python-format -msgid "" -"Request contains duplicate address pair: mac_address %(mac_address)s " -"ip_address %(ip_address)s." -msgstr "" -"В запросе содержится копия пары адресов: mac_address %(mac_address)s " -"ip_address %(ip_address)s." - -#, python-format -msgid "" -"Requested subnet with cidr: %(cidr)s for network: %(network_id)s overlaps " -"with another subnet" -msgstr "" -"Запрошенная подсеть с cidr %(cidr)s для сети %(network_id)s перекрывается с " -"другой сетью" - msgid "" "Reset flow table on start. Setting this to True will cause brief traffic " "interruption." @@ -2309,22 +2048,6 @@ msgstr "Для сброса прав доступа требуются права доступа пользователя Root." #, python-format -msgid "Router %(router_id)s %(reason)s" -msgstr "Маршрутизатор %(router_id)s %(reason)s" - -#, python-format -msgid "Router %(router_id)s could not be found" -msgstr "Не найден маршрутизатор %(router_id)s" - -#, python-format -msgid "Router %(router_id)s does not have an interface with id %(port_id)s" -msgstr "У маршрутизатора %(router_id)s нет интерфейса с ИД %(port_id)s" - -#, python-format -msgid "Router %(router_id)s has no interface on subnet %(subnet_id)s" -msgstr "У маршрутизатора %(router_id)s нет интерфейса в подсети %(subnet_id)s" - -#, python-format msgid "Router '%(router_id)s' is not compatible with this agent." msgstr "Маршрутизатор '%(router_id)s' несовместим с этим агентом." @@ -2332,24 +2055,6 @@ msgid "Router already has a port on subnet %s" msgstr "У маршрутизатора уже есть порт в подсети %s" -#, python-format -msgid "" -"Router interface for subnet %(subnet_id)s on router %(router_id)s cannot be " -"deleted, as it is required by one or more floating IPs." -msgstr "" -"Невозможно удалить интерфейс маршрутизатора для подсети %(subnet_id)s для " -"маршрутизатора %(router_id)s, так как он требуется одному или нескольким " -"нефиксированным IP-адресам." - -#, python-format -msgid "" -"Router interface for subnet %(subnet_id)s on router %(router_id)s cannot be " -"deleted, as it is required by one or more routes." -msgstr "" -"Невозможно удалить интерфейс маршрутизатора для подсети %(subnet_id)s для " -"маршрутизатора %(router_id)s, так как он требуется одному или нескольким " -"маршрутизаторам." - msgid "Router port must have at least one fixed IP" msgstr "Порт маршрутизатора должне иметь хотя бы один фиксированный IP-адрес" @@ -2430,32 +2135,6 @@ msgstr "Отправить уведомление nova в случае изменения состояния порта" #, python-format -msgid "Service Profile %(sp_id)s could not be found." -msgstr "Не найден профайл службы %(sp_id)s." - -#, python-format -msgid "Service Profile %(sp_id)s is already associated with flavor %(fl_id)s." -msgstr "Профайл службы %(sp_id)s уже связан с разновидностью %(fl_id)s." - -#, python-format -msgid "Service Profile %(sp_id)s is not associated with flavor %(fl_id)s." -msgstr "Профайл службы %(sp_id)s не связан с разновидностью %(fl_id)s." - -#, python-format -msgid "Service Profile %(sp_id)s is used by some service instance." -msgstr "Профайл службы %(sp_id)s используется одним из экземпляров службы." - -#, python-format -msgid "Service Profile driver %(driver)s could not be found." -msgstr "Драйвер профайла службы %(driver)s не найден." - -msgid "Service Profile is not enabled." -msgstr "Профайл службы не включен." - -msgid "Service Profile needs either a driver or metainfo." -msgstr "Для профайла службы требуется драйвер или мета-информация." - -#, python-format msgid "" "Service provider '%(provider)s' could not be found for service type " "%(service_type)s" @@ -2521,9 +2200,6 @@ msgstr "" "Подсети в одной и той же сети должны выделяться из одного пула подсетей." -msgid "Suffix to append to all namespace names." -msgstr "Суффикс, добавляемый ко всем пространствам имен." - msgid "" "System-wide flag to determine the type of router that tenants can create. " "Only admin can override." @@ -2537,13 +2213,6 @@ msgid "TCP Port used by Nova metadata server." msgstr "Порт TCP, используемый сервером метаданных Nova." -#, python-format -msgid "TLD '%s' must not be all numeric" -msgstr "TLD '%s' не должен быть полностью числовым" - -msgid "TOS for vxlan interface protocol packets." -msgstr "TOS для пакетов протокола интерфейса vxlan." - msgid "TTL for vxlan interface protocol packets." msgstr "TTL для пакетов протокола интерфейса vxlan." @@ -2604,14 +2273,6 @@ "быть настроен для запросов маршрутов к хостам через DHCP (Option 121). Этот " "параметр ни на что не влияет, если force_metadata задан равным True." -#, python-format -msgid "" -"The HA Network CIDR specified in the configuration file isn't valid; " -"%(cidr)s." -msgstr "" -"В файле конфигурации указан недопустимый адрес CIDR сети высокой готовности. " -"%(cidr)s." - msgid "The UDP port to use for VXLAN tunnels." msgstr "Порт UDP, применяемый для туннелей VXLAN." @@ -2660,32 +2321,6 @@ msgid "The core plugin Neutron will use" msgstr "Будет использоваться базовый модуль Neutron" -#, python-format -msgid "" -"The dns_name passed is a FQDN. Its higher level labels must be equal to the " -"dns_domain option in neutron.conf, that has been set to '%(dns_domain)s'. It " -"must also include one or more valid DNS labels to the left of " -"'%(dns_domain)s'" -msgstr "" -"Переданное dns_name является FQDN. Его метки верхнего уровня должны быть " -"равны опции dns_domain в файле neutron.conf со значением '%(dns_domain)s'. " -"Он должен также включать одну или несколько допустимых меток DNS слева от " -"'%(dns_domain)s'" - -#, python-format -msgid "" -"The dns_name passed is a PQDN and its size is '%(dns_name_len)s'. The " -"dns_domain option in neutron.conf is set to %(dns_domain)s, with a length of " -"'%(higher_labels_len)s'. When the two are concatenated to form a FQDN (with " -"a '.' at the end), the resulting length exceeds the maximum size of " -"'%(fqdn_max_len)s'" -msgstr "" -"Переданное dns_name является PQDN с размером '%(dns_name_len)s'. Опции " -"dns_domain в файле neutron.conf присвоено значение %(dns_domain)s с длиной " -"'%(higher_labels_len)s'. При объединении двух имен для формирования FQDN (с " -"символом '.' на конце) длина строки результата превысит максимально " -"допустимую '%(fqdn_max_len)s'" - msgid "The driver used to manage the DHCP server." msgstr "драйвер, используемый для управления сервером DHCP." @@ -2739,10 +2374,6 @@ "подход помогает, если поток данных VRRP должен использовать сеть, не " "являющуюся стандартной." -#, python-format -msgid "The number of allowed address pair exceeds the maximum %(quota)s." -msgstr "Число разрешенных пар адресов превышает максимальное %(quota)s." - msgid "" "The number of seconds the agent will wait between polling for local device " "changes." @@ -2815,39 +2446,12 @@ msgstr "Применяемый тип идентификации" msgid "" -"The working mode for the agent. Allowed modes are: 'legacy' - this preserves " -"the existing behavior where the L3 agent is deployed on a centralized " -"networking node to provide L3 services like DNAT, and SNAT. Use this mode if " -"you do not want to adopt DVR. 'dvr' - this mode enables DVR functionality " -"and must be used for an L3 agent that runs on a compute host. 'dvr_snat' - " -"this enables centralized SNAT support in conjunction with DVR. This mode " -"must be used for an L3 agent running on a centralized node (or in single-" -"host deployments, e.g. devstack)" -msgstr "" -"Режим работы агента. Допустимые режимы: 'legacy' - сохраняет поведение, при " -"котором агент L3 развернут на централизованном сетевом узле для " -"предоставления служб L3, таких как DNAT и SNAT. Этот режим используется, " -"если внедрять DVR не целесообразно. 'dvr' - этот режим включает " -"функциональность DVR и должен использоваться для агентов L3, работающих на " -"вычислительном хосте. 'dvr_snat' - этот режим включает поддержку " -"централизованного SNAT в дополнение к DVR. Данный режим должен " -"использоваться для агентов L3, работающих на централизованном узле (или в " -"однохостовых развертываниях, таких как devstack)" - -msgid "" "There are routers attached to this network that depend on this policy for " "access." msgstr "" "К сети подключены маршрутизаторы, доступ к которым зависит от этой стратегии." msgid "" -"Timeout in seconds for ovs-vsctl commands. If the timeout expires, ovs " -"commands will fail with ALARMCLOCK error." -msgstr "" -"Тайм-аут команд ovs-vsctl в секундах. По истечении этого времени команды ovs " -"завершаются с ошибкой ALARMCLOCK." - -msgid "" "Timeout in seconds to wait for a single OpenFlow request. Used only for " "'native' driver." msgstr "" @@ -2868,9 +2472,6 @@ "Слишком длинный префикс. Новое имя превысило бы заданную длину для имени " "интерфейса." -msgid "Too many availability_zone_hints specified" -msgstr "Слишком много availability_zone_hints" - msgid "" "True to delete all ports on all the OpenvSwitch bridges. False to delete " "ports created by Neutron on integration and external network bridges." @@ -2924,14 +2525,6 @@ #, python-format msgid "" -"Unable to complete operation for %(router_id)s. The number of routes exceeds " -"the maximum %(quota)s." -msgstr "" -"Не удалось выполнить операцию для %(router_id)s. Число маршрутизаторов " -"превышает допустимый максимум, равный %(quota)s." - -#, python-format -msgid "" "Unable to complete operation for %(subnet_id)s. The number of DNS " "nameservers exceeds the limit %(quota)s." msgstr "" @@ -2947,14 +2540,6 @@ "превышает допустимый максимум %(quota)s." #, python-format -msgid "" -"Unable to complete operation on address scope %(address_scope_id)s. There " -"are one or more subnet pools in use on the address scope" -msgstr "" -"Не удалось выполнить операцию в адресной области %(address_scope_id)s. В " -"адресной области существует один или несколько используемых пулов подсетей" - -#, python-format msgid "Unable to convert value in %s" msgstr "Невозможно преобразовать значение в %s" @@ -3000,10 +2585,6 @@ msgstr "В %s не найдено имя ресурса" #, python-format -msgid "Unable to generate unique DVR mac for host %(host)s." -msgstr "Не удалось создать уникальный MAC-адрес DVR для хоста %(host)s." - -#, python-format msgid "Unable to generate unique mac on network %(net_id)s." msgstr "Невозможно сгенерировать уникальный mac в сети %(net_id)s." @@ -3030,14 +2611,6 @@ "используется несколькими арендаторами." #, python-format -msgid "Unable to update address scope %(address_scope_id)s : %(reason)s" -msgstr "Не удалось изменить адресную область %(address_scope_id)s : %(reason)s" - -#, python-format -msgid "Unable to update the following object fields: %(fields)s" -msgstr "Не удалось обновить следующие поля объекта: %(fields)s" - -#, python-format msgid "" "Unable to verify match:%(match)s as the parent resource: %(res)s was not " "found" @@ -3065,9 +2638,6 @@ msgid "Unit name '%(unit)s' is not valid." msgstr "Недопустимое имя модуля '%(unit)s'." -msgid "Unknown API version specified" -msgstr "Указана неизвестная версия API" - #, python-format msgid "Unknown address type %(address_type)s" msgstr "Неизвестный тип адреса %(address_type)s" @@ -3173,14 +2743,6 @@ "Имя пользователя для подключения к назначенному объекту в административном " "контексте" -msgid "" -"Uses veth for an OVS interface or not. Support kernels with limited " -"namespace support (e.g. RHEL 6.5) so long as ovs_use_veth is set to True." -msgstr "" -"Указывает, следует ли использовать интерфейс veth для интерфейса OVS. " -"Обеспечивает работу с ядрами с ограниченной поддержкой пространств имен, " -"например, в RHEL 6.5, если ovs_use_veth задан равным True." - msgid "VRRP authentication password" msgstr "Пароль идентификации VRRP" @@ -3190,14 +2752,6 @@ msgid "VXLAN network unsupported." msgstr "Сеть VXLAN не поддерживается." -#, python-format -msgid "" -"Value of %(parameter)s has to be multiple of %(number)s, with maximum value " -"of %(maximum)s and minimum value of %(minimum)s" -msgstr "" -"Значение %(parameter)s должно быть кратным %(number)s, при этом максимальное " -"значение - %(maximum)s и минимальное - %(minimum)s" - msgid "" "Value of host kernel tick rate (hz) for calculating minimum burst value in " "bandwidth limit rules for a port with QoS. See kernel configuration file for " @@ -3397,10 +2951,6 @@ msgid "provider:physical_network specified for %s network" msgstr "Для сети %s указан provider:physical_network" -#, python-format -msgid "rbac_db_model not found in %s" -msgstr "rbac_db_model не найден в %s" - msgid "respawn_interval must be >= 0 if provided." msgstr "Значение respawn_interval, если оно указано, должно быть >= 0." @@ -3432,10 +2982,3 @@ msgid "the nexthop is used by router" msgstr "следующий узел используется маршрутизатором" - -msgid "" -"uuid provided from the command line so external_process can track us via /" -"proc/cmdline interface." -msgstr "" -"UUID передан из командной строки. Это позволяет внешнему процессу " -"отслеживать через интерфейс /proc/cmdline." diff -Nru neutron-12.0.0/neutron/locale/tr_TR/LC_MESSAGES/neutron.po neutron-12.0.1/neutron/locale/tr_TR/LC_MESSAGES/neutron.po --- neutron-12.0.0/neutron/locale/tr_TR/LC_MESSAGES/neutron.po 2018-02-28 11:30:39.000000000 +0000 +++ neutron-12.0.1/neutron/locale/tr_TR/LC_MESSAGES/neutron.po 2018-03-29 17:33:26.000000000 +0000 @@ -9,18 +9,18 @@ # Andreas Jaeger , 2016. #zanata msgid "" msgstr "" -"Project-Id-Version: neutron 11.0.0.0b3.dev326\n" +"Project-Id-Version: neutron VERSION\n" "Report-Msgid-Bugs-To: https://bugs.launchpad.net/openstack-i18n/\n" -"POT-Creation-Date: 2017-07-18 03:24+0000\n" +"POT-Creation-Date: 2018-03-14 04:19+0000\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"PO-Revision-Date: 2016-04-12 06:08+0000\n" +"PO-Revision-Date: 2016-04-12 05:55+0000\n" "Last-Translator: Copied by Zanata \n" -"Language: tr-TR\n" +"Language: tr_TR\n" "Plural-Forms: nplurals=1; plural=0;\n" "Generated-By: Babel 2.0\n" -"X-Generator: Zanata 3.9.6\n" +"X-Generator: Zanata 4.3.3\n" "Language-Team: Turkish (Turkey)\n" #, python-format @@ -56,38 +56,6 @@ msgstr "%(key)s %(tunnel)s sağlayıcı ağı için yasaklanmış" #, python-format -msgid "" -"%(method)s called with network settings %(current)s (original settings " -"%(original)s) and network segments %(segments)s" -msgstr "" -"%(method)s ağ ayarları %(current)s (asıl ayarlar %(original)s) ve " -"%(segments)s ağ dilimleri ile çağrıldı" - -#, python-format -msgid "" -"%(method)s called with port settings %(current)s (original settings " -"%(original)s) host %(host)s (original host %(original_host)s) vif type " -"%(vif_type)s (original vif type %(original_vif_type)s) vif details " -"%(vif_details)s (original vif details %(original_vif_details)s) binding " -"levels %(levels)s (original binding levels %(original_levels)s) on network " -"%(network)s with segments to bind %(segments_to_bind)s" -msgstr "" -"%(method)s bağlantı noktası ayarları %(current)s (asıl ayarlar %(original)s) " -"istemci %(host)s (asıl istemci %(original_host)s) vif türü %(vif_type)s " -"(asıl vif türü %(original_vif_type)s) vif detayları %(vif_details)s (asıl " -"vif detayları %(original_vif_details)s) bağlama seviyeleri %(levels)s (asıl " -"bağlama seviyeleri %(original_levels)s) %(network)s ağı üzerinde bağlanacak " -"%(segments_to_bind)s dilimleriyle çağrıldı" - -#, python-format -msgid "" -"%(method)s called with subnet settings %(current)s (original settings " -"%(original)s)" -msgstr "" -"%(method)s alt ağ ayarları %(current)s (asıl ayarlar %(original)s) ile " -"çağrıldı" - -#, python-format msgid "%(name)s '%(addr)s' does not match the ip_version '%(ip_version)s'" msgstr "%(name)s '%(addr)s' ip_version '%(ip_version)s' ile eşleşmiyor" @@ -140,21 +108,10 @@ msgid "Address not present on interface" msgstr "Adres arayüzde mevcut değil" -#, python-format -msgid "Address scope %(address_scope_id)s could not be found" -msgstr "Adres kapsamı %(address_scope_id)s bulunamadı" - -msgid "Adds external network attribute to network resource." -msgstr "Ek ağ özniteliğini ağ kaynağına ekler." - msgid "Adds test attributes to core resources." msgstr "Çekirdek kaynaklara test özniteliklerini ekler." #, python-format -msgid "Agent %(id)s could not be found" -msgstr "Ajan %(id)s bulunamadı" - -#, python-format msgid "Agent %(id)s is not a L3 Agent or has been disabled" msgstr "Ajan %(id)s bir L3 Ajanı değil ya da kapalı" @@ -166,11 +123,6 @@ msgid "Agent updated: %(payload)s" msgstr "Ajan güncellendi: %(payload)s" -#, python-format -msgid "" -"Agent with agent_type=%(agent_type)s and host=%(host)s could not be found" -msgstr "agent_type=%(agent_type)s ve istemci=%(host)s olan ajan bulunamadı" - msgid "Allow auto scheduling networks to DHCP agent." msgstr "Ağların DHCP ajanlarına otomatik zamanlanmasına izin ver." @@ -189,9 +141,6 @@ msgid "Allow to perform insecure SSL (https) requests to nova metadata" msgstr "Nova metadata'ya güvensiz SSL (https) istekleri yapmaya izin ver" -msgid "AllowedAddressPair must contain ip_address" -msgstr "AllowedAddressPair ip_address içermeli" - msgid "An interface driver must be specified" msgstr "Bir arayüz sürücüsü belirtmeniz gerekmektedir" @@ -244,16 +193,6 @@ msgid "Cannot allocate requested subnet from the available set of prefixes" msgstr "İstenen alt ağ kullanılabilir önek kümesinden ayrılamıyor" -#, python-format -msgid "" -"Cannot associate floating IP %(floating_ip_address)s (%(fip_id)s) with port " -"%(port_id)s using fixed IP %(fixed_ip)s, as that fixed IP already has a " -"floating IP on external network %(net_id)s." -msgstr "" -"Değişken IP %(floating_ip_address)s (%(fip_id)s) sabit IP %(fixed_ip)s " -"kullanılarak %(port_id)s bağlantı noktasıyla ilişkilendirilemiyor, çünkü bu " -"sabit IP %(net_id)s harici ağında zaten bir değişken IP'ye sahip." - msgid "Cannot disable enable_dhcp with ipv6 attributes set" msgstr "ipv6 öznitelikleri ayarlıyken enable_dhcp kapatılamaz" @@ -482,9 +421,6 @@ msgid "Driver to use for scheduling router to a default L3 agent" msgstr "Yönlendiriciyi bir L3 ajanına zamanlamak için gerekli sürücü" -msgid "Duplicate Metering Rule in POST." -msgstr "POST'da kopya ölçme kuralı." - msgid "Duplicate Security Group Rule in POST." msgstr "POST'da Kopya Güvenlik Grubu Kuralı." @@ -595,24 +531,6 @@ msgstr "Harici IP %s geçit IP ile aynı" #, python-format -msgid "" -"External network %(external_network_id)s is not reachable from subnet " -"%(subnet_id)s. Therefore, cannot associate Port %(port_id)s with a Floating " -"IP." -msgstr "" -"Harici ağ %(external_network_id)s %(subnet_id)s alt ağından erişilebilir " -"değil. Bu yüzden, %(port_id)s bağlantı noktası bir Değişken IP ile " -"ilişkilendirilemiyor." - -#, python-format -msgid "" -"External network %(net_id)s cannot be updated to be made non-external, since " -"it has existing gateway ports" -msgstr "" -"Harici ağ %(net_id)s harici-olmayan şekilde olması için güncellenemez, çünkü " -"mevcut geçit bağlantı noktaları var" - -#, python-format msgid "Failed rescheduling router %(router_id)s: no eligible l3 agent found." msgstr "" "%(router_id)s yönlendiricisini yeniden zamanlama başarısız: seçilebilir l3 " @@ -626,14 +544,6 @@ #, python-format msgid "" -"Failed to allocate a VRID in the network %(network_id)s for the router " -"%(router_id)s after %(max_tries)s tries." -msgstr "" -"%(max_tries)s denemeden sonra %(router_id)s yönlendiricisi için " -"%(network_id)s ağında VRID ayırma başarısız." - -#, python-format -msgid "" "Failed to create port on network %(network_id)s, because fixed_ips included " "invalid subnet %(subnet_id)s" msgstr "" @@ -662,14 +572,6 @@ msgid "Failure waiting for address %(address)s to become ready: %(reason)s" msgstr "%(address)s adresinin hazır olmasını bekleme başarısız: %(reason)s" -#, python-format -msgid "Flavor %(flavor_id)s could not be found." -msgstr "%(flavor_id)s örnek türü bulunamadı." - -#, python-format -msgid "Floating IP %(floatingip_id)s could not be found" -msgstr "Değişken IP %(floatingip_id)s bulunamadı" - msgid "For TCP/UDP protocols, port_range_min must be <= port_range_max" msgstr "" "TCP/UDP iletişim kuralları için, port_range_min <= port_range_max olmalı" @@ -685,14 +587,6 @@ "%(subnet_cidr)s alt ağı için çakışan ayırma havuzları: %(pool_1)s %(pool_2)s " "bulundu." -#, python-format -msgid "" -"Gateway cannot be updated for router %(router_id)s, since a gateway to " -"external network %(net_id)s is required by one or more floating IPs." -msgstr "" -"Geçit %(router_id)s yönlendiricisi için güncellenemedi, çünkü bir ya da " -"fazla değişken IP tarafından %(net_id)s harici ağına bir geçit gerekli." - msgid "Gateway is not valid on subnet" msgstr "Geçit alt ağda geçerli değil" @@ -807,10 +701,6 @@ "%(valid_auth_types)s" #, python-format -msgid "Invalid format for routes: %(routes)s, %(reason)s" -msgstr "Rotalar için geçersiz biçim: %(routes)s, %(reason)s" - -#, python-format msgid "Invalid format: %s" msgstr "Geçersiz biçim: %s" @@ -878,9 +768,6 @@ msgid "Location of Metadata Proxy UNIX domain socket" msgstr "Metadata Vekil UNIX alan soketi konumu" -msgid "Location of pid file of this process." -msgstr "Bu sürecin pid dosyasının konumu." - msgid "Location to store IPv6 RA config files" msgstr "IPv6 RA yapılandırma dosyalarının kaydedileceği konum" @@ -911,22 +798,6 @@ msgid "Metering driver" msgstr "Ölçme sürücüsü" -#, python-format -msgid "Metering label %(label_id)s does not exist" -msgstr "Ölçme etiketi %(label_id)s mevcut değil" - -#, python-format -msgid "Metering label rule %(rule_id)s does not exist" -msgstr "Ölçme etiketi kuralı %(rule_id)s mevcut değil" - -#, python-format -msgid "" -"Metering label rule with remote_ip_prefix %(remote_ip_prefix)s overlaps " -"another" -msgstr "" -"remote_ip_prefix %(remote_ip_prefix)s sahip ölçme etiket kuralı başka bir " -"tanesiyle çatışıyor" - msgid "Minimize polling by monitoring ovsdb for interface changes." msgstr "" "Sorgulamayı ovsdb arayüzünü değişiklikler için izleyerek olabildiğince azalt." @@ -936,11 +807,6 @@ msgstr "Eşleştirmede anahtar eksik: '%s'" #, python-format -msgid "Multiple agents with agent_type=%(agent_type)s and host=%(host)s found" -msgstr "" -"agent_type=%(agent_type)s ve istemci=%(host)s olan birden fazla ajan bulundu" - -#, python-format msgid "Multiple default providers for service %s" msgstr "%s servisi için birden fazla varsayılan sağlayıcı" @@ -1021,15 +887,6 @@ msgid "No more IP addresses available for subnet %(subnet_id)s." msgstr "%(subnet_id)s alt ağı için kullanılabilir başka IP adresi yok." -#, python-format -msgid "" -"No more Virtual Router Identifier (VRID) available when creating router " -"%(router_id)s. The limit of number of HA Routers per tenant is 254." -msgstr "" -"%(router_id)s yönlendiricisi oluşturulurken kullanılabilir Sanal " -"Yönlendirici Tanımlayıcı (VRID) yok. Kiracı başına HA Yönlendirici sayısı " -"sınırı 254." - msgid "" "Number of DHCP agents scheduled to host a tenant network. If this number is " "greater than 1, the scheduler automatically assigns multiple DHCP agents for " @@ -1168,13 +1025,6 @@ msgid "Port %(id)s does not have fixed ip %(address)s" msgstr "%(id)s bağlantı noktası %(address)s sabit ip'sine sahip değil" -msgid "" -"Port Security must be enabled in order to have allowed address pairs on a " -"port." -msgstr "" -"Bağlantı noktasında izin verilen adres çiftlerine sahip olmak için bağlantı " -"noktası güvenliği etkin olmalı." - msgid "Private key of client certificate." msgstr "İstemci sertifikasının özel anahtarı." @@ -1231,22 +1081,6 @@ #, python-format msgid "" -"Request contains duplicate address pair: mac_address %(mac_address)s " -"ip_address %(ip_address)s." -msgstr "" -"İstek kopya adres çifti içeriyor: mac_address %(mac_address)s ip_address " -"%(ip_address)s." - -#, python-format -msgid "" -"Requested subnet with cidr: %(cidr)s for network: %(network_id)s overlaps " -"with another subnet" -msgstr "" -"%(network_id)s ağı için istenen %(cidr)s cidr'e sahip alt ağ başka bir alt " -"ağla çatışıyor" - -#, python-format -msgid "" "Resource '%(resource_id)s' is already associated with provider " "'%(provider)s' for service type '%(service_type)s'" msgstr "" @@ -1266,46 +1100,9 @@ msgstr "İzinlerin düşürülmesi için Root izinleri gerekli." #, python-format -msgid "Router %(router_id)s %(reason)s" -msgstr "Yönlendirici %(router_id)s %(reason)s" - -#, python-format -msgid "Router %(router_id)s could not be found" -msgstr "Yönlendirici %(router_id)s bulunamadı" - -#, python-format -msgid "Router %(router_id)s does not have an interface with id %(port_id)s" -msgstr "" -"%(router_id)s yönlendiricisi %(port_id)s kimliğine sahip bir arayüze sahip " -"değil" - -#, python-format -msgid "Router %(router_id)s has no interface on subnet %(subnet_id)s" -msgstr "" -"%(router_id)s yönlendiricisi %(subnet_id)s alt ağı üzerinde arayüze sahip " -"değil" - -#, python-format msgid "Router already has a port on subnet %s" msgstr "Yönlendirici zaten %s alt ağında bir bağlantı noktasına sahip" -#, python-format -msgid "" -"Router interface for subnet %(subnet_id)s on router %(router_id)s cannot be " -"deleted, as it is required by one or more floating IPs." -msgstr "" -"%(router_id)s yönlendiricisi üstündeki %(subnet_id)s alt ağı için " -"yönlendirici arayüzü silinemez, bir ya da fazla değişken IP tarafından " -"ihtiyaç duyuluyor." - -#, python-format -msgid "" -"Router interface for subnet %(subnet_id)s on router %(router_id)s cannot be " -"deleted, as it is required by one or more routes." -msgstr "" -"%(router_id)s yönlendiricisi üzerindeki %(subnet_id)s alt ağı için rota " -"arayüzü silinemiyor, çünkü bir ya da fazla rota tarafından ihtiyaç duyuluyor." - msgid "" "Seconds between nodes reporting state to server; should be less than " "agent_down_time, best if it is half or less than agent_down_time." @@ -1400,9 +1197,6 @@ msgid "Subnet used for the l3 HA admin network." msgstr "L3 HA yönetici ağı için kullanılan alt ağ." -msgid "Suffix to append to all namespace names." -msgstr "Tüm isim uzaylarına eklenecek son ek." - msgid "" "System-wide flag to determine the type of router that tenants can create. " "Only admin can override." @@ -1418,9 +1212,6 @@ msgid "TCP Port used by Nova metadata server." msgstr "Nova metadata sunucusu tarafından kullanılan TCP Bağlantı noktası." -msgid "TOS for vxlan interface protocol packets." -msgstr "Vxlan arayüz iletişim paketleri için TOS." - msgid "TTL for vxlan interface protocol packets." msgstr "Vxlan arayüz iletişim kuralı paketleri için TTL." @@ -1439,13 +1230,6 @@ "Neutron birden fazla harici ağa sahip olduğundan " "'gateway_external_network_id' seçeneği bu ajan için yapılandırılmalıdır." -#, python-format -msgid "" -"The HA Network CIDR specified in the configuration file isn't valid; " -"%(cidr)s." -msgstr "" -"Yapılandırma dosyasında belirtilen HA Ağ CIDR'i geçerli değil; %(cidr)s." - msgid "The UDP port to use for VXLAN tunnels." msgstr "VXLAN tünelleri için kullanılacak UDP bağlantı noktası." @@ -1505,10 +1289,6 @@ "The network %(network_id)s is not hosted by the DHCP agent %(agent_id)s." msgstr "Ağ %(network_id)s %(agent_id)s DHCP ajanı tarafından sunulmuyor." -#, python-format -msgid "The number of allowed address pair exceeds the maximum %(quota)s." -msgstr "İzin verilen adres çifti sayısı %(quota)s azami değerini aşıyor." - msgid "" "The number of seconds the agent will wait between polling for local device " "changes." @@ -1565,24 +1345,6 @@ msgstr "Kullanılacak kimlik doğrulama türü" msgid "" -"The working mode for the agent. Allowed modes are: 'legacy' - this preserves " -"the existing behavior where the L3 agent is deployed on a centralized " -"networking node to provide L3 services like DNAT, and SNAT. Use this mode if " -"you do not want to adopt DVR. 'dvr' - this mode enables DVR functionality " -"and must be used for an L3 agent that runs on a compute host. 'dvr_snat' - " -"this enables centralized SNAT support in conjunction with DVR. This mode " -"must be used for an L3 agent running on a centralized node (or in single-" -"host deployments, e.g. devstack)" -msgstr "" -"Ajanın çalışma kipi. İzin verilen kipler: 'legacy' - Bu L3 ajanının DNAT, ve " -"SNAT gibi L3 servisleri sağlamak için merkezi ağ düğümüne kurulduğu mevcut " -"davranışı korur. DVR'a geçmek istemiyorsanız bu kipi kullanın. 'dvr' - bu " -"kip DVR işlevini etkinleştirir ve bir hesap istemcisi üzerinde çalışan L3 " -"ajanı için kullanılmalıdır. 'dvr_snat' - bu DVR ile beraber merkezi SNAT " -"desteğini etkinleştirir. Bu kip merkezi bir düğümde çalışan L3 ajanı için " -"kullanılmalıdır (veya tek-istemcili kurulumlarda, örn. devstack)" - -msgid "" "True to delete all ports on all the OpenvSwitch bridges. False to delete " "ports created by Neutron on integration and external network bridges." msgstr "" @@ -1609,14 +1371,6 @@ #, python-format msgid "" -"Unable to complete operation for %(router_id)s. The number of routes exceeds " -"the maximum %(quota)s." -msgstr "" -"%(router_id)s için işlem tamamlanamıyor. Rota sayısı %(quota)s azami " -"sayısını aşıyor." - -#, python-format -msgid "" "Unable to complete operation for %(subnet_id)s. The number of DNS " "nameservers exceeds the limit %(quota)s." msgstr "" @@ -1671,10 +1425,6 @@ msgstr "%s içinde kaynak ismi bulunamadı" #, python-format -msgid "Unable to generate unique DVR mac for host %(host)s." -msgstr "%(host)s istemcisi için benzersiz DVR mac üretilemedi." - -#, python-format msgid "Unable to generate unique mac on network %(net_id)s." msgstr "%(net_id)s ağı üzerinde benzersiz mac üretilemedi." @@ -1687,10 +1437,6 @@ "olmalı" #, python-format -msgid "Unable to update address scope %(address_scope_id)s : %(reason)s" -msgstr "Adres kapsamı %(address_scope_id)s güncellenemiyor: %(reason)s" - -#, python-format msgid "" "Unable to verify match:%(match)s as the parent resource: %(res)s was not " "found" @@ -1704,9 +1450,6 @@ msgid "Unexpected response: %s" msgstr "Beklenmeyen yanıt: %s" -msgid "Unknown API version specified" -msgstr "Bilinmeyen API sürümü belirtildi" - #, python-format msgid "Unknown address type %(address_type)s" msgstr "Bilinmeyen adres türü %(address_type)s" @@ -1912,10 +1655,3 @@ msgid "the nexthop is used by router" msgstr "sonraki nokta yönlendirici tarafından kullanılıyor" - -msgid "" -"uuid provided from the command line so external_process can track us via /" -"proc/cmdline interface." -msgstr "" -"external_process bizi /proc/cmdline arayüzünden takip edebilsin diye komut " -"satırından sağlanan uuid." diff -Nru neutron-12.0.0/neutron/locale/zh_CN/LC_MESSAGES/neutron.po neutron-12.0.1/neutron/locale/zh_CN/LC_MESSAGES/neutron.po --- neutron-12.0.0/neutron/locale/zh_CN/LC_MESSAGES/neutron.po 2018-02-28 11:30:39.000000000 +0000 +++ neutron-12.0.1/neutron/locale/zh_CN/LC_MESSAGES/neutron.po 2018-03-29 17:33:26.000000000 +0000 @@ -15,18 +15,18 @@ # Andreas Jaeger , 2016. #zanata msgid "" msgstr "" -"Project-Id-Version: neutron 11.0.0.0b3.dev326\n" +"Project-Id-Version: neutron VERSION\n" "Report-Msgid-Bugs-To: https://bugs.launchpad.net/openstack-i18n/\n" -"POT-Creation-Date: 2017-07-18 03:24+0000\n" +"POT-Creation-Date: 2018-03-14 04:19+0000\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "PO-Revision-Date: 2016-04-12 05:55+0000\n" "Last-Translator: Copied by Zanata \n" -"Language: zh-CN\n" +"Language: zh_CN\n" "Plural-Forms: nplurals=1; plural=0;\n" "Generated-By: Babel 2.0\n" -"X-Generator: Zanata 3.9.6\n" +"X-Generator: Zanata 4.3.3\n" "Language-Team: Chinese (China)\n" #, python-format @@ -67,36 +67,6 @@ msgstr "对于 %(tunnel)s 提供程序网络,已禁止 %(key)s" #, python-format -msgid "" -"%(method)s called with network settings %(current)s (original settings " -"%(original)s) and network segments %(segments)s" -msgstr "" -"已使用网络设置 %(current)s(原始设置 %(original)s)和网络段 %(segments)s 调" -"用 %(method)s" - -#, python-format -msgid "" -"%(method)s called with port settings %(current)s (original settings " -"%(original)s) host %(host)s (original host %(original_host)s) vif type " -"%(vif_type)s (original vif type %(original_vif_type)s) vif details " -"%(vif_details)s (original vif details %(original_vif_details)s) binding " -"levels %(levels)s (original binding levels %(original_levels)s) on network " -"%(network)s with segments to bind %(segments_to_bind)s" -msgstr "" -"在带有要绑定的分段 %(segments_to_bind)s 的网络 %(network)s 上使用以下设置调用" -"了 %(method)s:端口设置 %(current)s(原始设置 %(original)s),主机 " -"%(host)s(原始主机 %(original_host)s),vif 类型 %(vif_type)s(原始 vif 类型 " -"%(original_vif_type)s)vif 详细信息 %(vif_details)s(原始 vif 详细信息 " -"%(original_vif_details)s),绑定级别 %(levels)s(原始绑定级别 " -"%(original_levels)s)" - -#, python-format -msgid "" -"%(method)s called with subnet settings %(current)s (original settings " -"%(original)s)" -msgstr "已使用子网设置 %(current)s 调用 %(method)s(原始设置 %(original)s)" - -#, python-format msgid "%(name)s '%(addr)s' does not match the ip_version '%(ip_version)s'" msgstr "%(name)s“%(addr)s”与 ip_version“%(ip_version)s”不匹配" @@ -129,38 +99,6 @@ msgstr "在本地供应商网络中禁止%s" #, python-format -msgid "" -"'%(data)s' contains '%(length)s' characters. Adding a domain name will cause " -"it to exceed the maximum length of a FQDN of '%(max_len)s'" -msgstr "" -"“%(data)s”包含“%(length)s”个字符。添加域名将导致它超出 FQDN 的最大长" -"度“%(max_len)s”" - -#, python-format -msgid "" -"'%(data)s' contains '%(length)s' characters. Adding a sub-domain will cause " -"it to exceed the maximum length of a FQDN of '%(max_len)s'" -msgstr "" -"“%(data)s”包含“%(length)s”个字符。添加子域将导致它超出 FQDN 的最大长" -"度“%(max_len)s”" - -#, python-format -msgid "'%(data)s' not a valid PQDN or FQDN. Reason: %(reason)s" -msgstr "“%(data)s”不是有效的 PQDN 或 FQDN。原因:%(reason)s" - -#, python-format -msgid "'%s' cannot be converted to lowercase string" -msgstr "无法将“%s”转换为小写字符串" - -#, python-format -msgid "'%s' is a FQDN. It should be a relative domain name" -msgstr "“%s”为 FQDN。它应该是相对域名" - -#, python-format -msgid "'%s' is not a FQDN" -msgstr "“%s”并非 FQDN" - -#, python-format msgid "'%s' is not a valid RBAC object type" msgstr "“%s”不是有效的 RBAC 对象类型" @@ -221,25 +159,14 @@ msgid "Address not present on interface" msgstr "接口上没有地址" -#, python-format -msgid "Address scope %(address_scope_id)s could not be found" -msgstr "找不到地址范围 %(address_scope_id)s" - msgid "" "Address to listen on for OpenFlow connections. Used only for 'native' driver." msgstr "对于 OpenFlow 连接,要侦听的地址。仅用于“本机”驱动程序。" -msgid "Adds external network attribute to network resource." -msgstr "请对网络资源添加外部网络属性。" - msgid "Adds test attributes to core resources." msgstr "将测试属性添加至核心资源。" #, python-format -msgid "Agent %(id)s could not be found" -msgstr "找不到代理 %(id)s" - -#, python-format msgid "Agent %(id)s is not a L3 Agent or has been disabled" msgstr "代理 %(id)s 不是 L3 代理或已禁用" @@ -260,11 +187,6 @@ msgid "Agent updated: %(payload)s" msgstr "进程更新: %(payload)s" -#, python-format -msgid "" -"Agent with agent_type=%(agent_type)s and host=%(host)s could not be found" -msgstr "找不到符合以下条件的代理:agent_type=%(agent_type)s 且 host=%(host)s" - msgid "Allow auto scheduling networks to DHCP agent." msgstr "允许自动对 DHCP 代理调度网络。" @@ -294,12 +216,6 @@ msgid "Allow to perform insecure SSL (https) requests to nova metadata" msgstr "允许对 nova 元数据执行非安全 SSL (HTTPS) 请求" -msgid "Allowed address pairs must be a list." -msgstr "允许的地址对必须是一个列表。" - -msgid "AllowedAddressPair must contain ip_address" -msgstr "AllowedAddressPair 必须包含 ip_address" - msgid "" "Allows for serving metadata requests coming from a dedicated metadata access " "network whose CIDR is 169.254.169.254/16 (or larger prefix), and is " @@ -356,10 +272,6 @@ msgid "Availability zone of this node" msgstr "此节点的可用区域" -#, python-format -msgid "AvailabilityZone %(availability_zone)s could not be found." -msgstr "找不到 AvailabilityZone %(availability_zone)s。" - msgid "Available commands" msgstr "可用的命令" @@ -417,16 +329,6 @@ msgid "Cannot allocate requested subnet from the available set of prefixes" msgstr "无法从可用的一组前缀分配所请求的子网" -#, python-format -msgid "" -"Cannot associate floating IP %(floating_ip_address)s (%(fip_id)s) with port " -"%(port_id)s using fixed IP %(fixed_ip)s, as that fixed IP already has a " -"floating IP on external network %(net_id)s." -msgstr "" -"无法使浮动 IP %(floating_ip_address)s (%(fip_id)s) 与使用固定 IP " -"%(fixed_ip)s 的端口 %(port_id)s 关联,因为该固定 IP 已具有外部网络 " -"%(net_id)s 上的浮动 IP。" - msgid "Cannot disable enable_dhcp with ipv6 attributes set" msgstr "在设置了 ipv6 属性的情况下,无法禁用 enable_dhcp" @@ -533,9 +435,6 @@ "子网 %(subnet_id)s 的 cidr %(subnet_cidr)s 与子网 %(sub_id)s 的 cidr " "%(cidr)s 重叠" -msgid "Class not found." -msgstr "找不到类。" - msgid "Cleanup resources of a specific agent type only." msgstr "仅清除特定代理程序类型的资源。" @@ -742,10 +641,6 @@ "Distributed Virtual Router Mac Address for host %(host)s does not exist." msgstr "主机 %(host)s 的分布式虚拟路由器 MAC 地址不存在。" -#, python-format -msgid "Domain %(dns_domain)s not found in the external DNS service" -msgstr "在外部 DNS 服务中找不到域 %(dns_domain)s" - msgid "Domain to use for building the hostnames" msgstr "要用于构建主机名的域" @@ -785,9 +680,6 @@ "对路由器 %(router)s 创建了重复 L3HARouterAgentPortBinding。无法升级数据库。请" "移除所有重复项,然后升级数据库。" -msgid "Duplicate Metering Rule in POST." -msgstr "POST 中的测量规则重复。" - msgid "Duplicate Security Group Rule in POST." msgstr "POST 中的安全组规则重复。" @@ -880,9 +772,6 @@ "解析。实际上会从 dnsmasq 进程自变量中移除“--no-resolv”选项。将定制 DNS 解析器" "添加至“dnsmasq_dns_servers”选项会禁用此功能部件。" -msgid "Encountered an empty component." -msgstr "遇到空的组件。" - msgid "End of VLAN range is less than start of VLAN range" msgstr "VLAN范围结束值比开始值小" @@ -947,29 +836,10 @@ msgstr "找不到扩展:%(extensions)s。" #, python-format -msgid "External DNS driver %(driver)s could not be found." -msgstr "找不到外部 DNS 驱动程序 %(driver)s。" - -#, python-format msgid "External IP %s is the same as the gateway IP" msgstr "外部 IP %s 和网关IP相同" #, python-format -msgid "" -"External network %(external_network_id)s is not reachable from subnet " -"%(subnet_id)s. Therefore, cannot associate Port %(port_id)s with a Floating " -"IP." -msgstr "" -"无法从子网 %(subnet_id)s 访问外部网络 %(external_network_id)s。因此,无法使端" -"口 %(port_id)s 与浮动 IP 关联。" - -#, python-format -msgid "" -"External network %(net_id)s cannot be updated to be made non-external, since " -"it has existing gateway ports" -msgstr "无法将外部网络 %(net_id)s 更新为非外部网络,因为它包含现有的网关端口" - -#, python-format msgid "Failed rescheduling router %(router_id)s: no eligible l3 agent found." msgstr "重新安排路由器 %(router_id)s 失败:找不到合格 L3 代理。" @@ -978,14 +848,6 @@ msgstr "将路由器 %(router_id)s 调度到 L3 代理 %(agent_id)s 失败。" #, python-format -msgid "" -"Failed to allocate a VRID in the network %(network_id)s for the router " -"%(router_id)s after %(max_tries)s tries." -msgstr "" -"在 %(max_tries)s 次尝试之后,未能在网络 %(network_id)s 中为路由器 " -"%(router_id)s 分配 VRID。" - -#, python-format msgid "Failed to allocate subnet: %(reason)s." msgstr "无法分配子网:%(reason)s。" @@ -996,13 +858,6 @@ #, python-format msgid "" -"Failed to create a duplicate %(object_type)s: for attribute(s) " -"%(attributes)s with value(s) %(values)s" -msgstr "" -"对于具有值 %(values)s 的属性 %(attributes)s,未能创建重复的 %(object_type)s" - -#, python-format -msgid "" "Failed to create port on network %(network_id)s, because fixed_ips included " "invalid subnet %(subnet_id)s" msgstr "" @@ -1038,28 +893,9 @@ msgid "Flat provider networks are disabled" msgstr "平面供应商网络被禁用" -#, python-format -msgid "Flavor %(flavor_id)s could not be found." -msgstr "找不到类型 %(flavor_id)s。" - -#, python-format -msgid "Flavor %(flavor_id)s is used by some service instance." -msgstr "类型 %(flavor_id)s 已被某个服务实例使用。" - -msgid "Flavor is not enabled." -msgstr "类型未启用。" - -#, python-format -msgid "Floating IP %(floatingip_id)s could not be found" -msgstr "找不到浮动 IP %(floatingip_id)s" - msgid "For TCP/UDP protocols, port_range_min must be <= port_range_max" msgstr "对于 TCP/UDP 协议,port_range_min 必须小于等于 port_range_max" -#, python-format -msgid "For class %(object_type)s missing primary keys: %(missing_keys)s" -msgstr "对于类 %(object_type)s,缺少主键:%(missing_keys)s" - msgid "Force ip_lib calls to use the root helper" msgstr "强制ip_lib呼叫使用root helper" @@ -1077,14 +913,6 @@ msgstr "网关 IP 版本与分配池版本不一致" #, python-format -msgid "" -"Gateway cannot be updated for router %(router_id)s, since a gateway to " -"external network %(net_id)s is required by one or more floating IPs." -msgstr "" -"无法为路由器 %(router_id)s 更新网关,因为一个或多个浮动 IP 需要指向外部网络 " -"%(net_id)s 的网关。" - -#, python-format msgid "Gateway ip %(ip_address)s conflicts with allocation pool %(pool)s." msgstr "网关 IP %(ip_address)s 与分配池 %(pool)s 冲突。" @@ -1312,10 +1140,6 @@ msgstr "ethertype %(ethertype)s 对协议 %(protocol)s 无效。" #, python-format -msgid "Invalid format for routes: %(routes)s, %(reason)s" -msgstr "路由 %(routes)s 的格式无效,%(reason)s" - -#, python-format msgid "Invalid format: %s" msgstr "格式无效:%s" @@ -1355,10 +1179,6 @@ msgstr "服务提供程序格式无效" #, python-format -msgid "Invalid service type %(service_type)s." -msgstr "服务类型 %(service_type)s 无效。" - -#, python-format msgid "" "Invalid value for ICMP %(field)s (%(attr)s) %(value)s. It must be 0 to 255." msgstr "ICMP %(field)s (%(attr)s) 的值 %(value)s 无效。它必须为 0 到 255。" @@ -1434,9 +1254,6 @@ msgid "Location of Metadata Proxy UNIX domain socket" msgstr "元数据代理 UNIX 域套接字的位置" -msgid "Location of pid file of this process." -msgstr "此进程的 pid 文件的位置。" - msgid "Location to store DHCP server config files." msgstr "用于存储 DHCP 服务器配置文件的位置。" @@ -1519,22 +1336,6 @@ msgid "Metering driver" msgstr "测量驱动程序" -#, python-format -msgid "Metering label %(label_id)s does not exist" -msgstr "测量标签\t%(label_id)s 不存在" - -#, python-format -msgid "Metering label rule %(rule_id)s does not exist" -msgstr "测量标签规则 %(rule_id)s 不存在" - -#, python-format -msgid "" -"Metering label rule with remote_ip_prefix %(remote_ip_prefix)s overlaps " -"another" -msgstr "" -"带有 remote_ip_prefix %(remote_ip_prefix)s 的测量标签规则与另一测量标签规则重" -"叠" - msgid "MinRtrAdvInterval setting for radvd.conf" msgstr "radvd.conf 的 MinRtrAdvInterval 设置" @@ -1567,10 +1368,6 @@ "程序上必须相同。" #, python-format -msgid "Multiple agents with agent_type=%(agent_type)s and host=%(host)s found" -msgstr "找到多个符合以下条件的代理:agent_type=%(agent_type)s 且 host=%(host)s" - -#, python-format msgid "Multiple default providers for service %s" msgstr "对于服务 %s,存在多个缺省提供程序" @@ -1591,21 +1388,6 @@ msgid "Must specify one or more actions on flow addition or modification" msgstr "必须在添加或删除流时指定一个或多个操作" -#, python-format -msgid "Name %(dns_name)s is duplicated in the external DNS service" -msgstr "名称 %(dns_name)s 在外部 DNS 服务中重复" - -#, python-format -msgid "" -"Name '%s' must be 1-63 characters long, each of which can only be " -"alphanumeric or a hyphen." -msgstr "" -"名称“%s”的长度必须是 1 至 63 个字符,其中每个字符只能是字母数字或连字符。" - -#, python-format -msgid "Name '%s' must not start or end with a hyphen." -msgstr "名称“%s”不能以连字符开头或结尾。" - msgid "Name of Open vSwitch bridge to use" msgstr "要使用的已打开 vSwitch 网桥的名称" @@ -1688,14 +1470,6 @@ msgid "No more IP addresses available for subnet %(subnet_id)s." msgstr "没有更多 IP 地址可用于子网 %(subnet_id)s。" -#, python-format -msgid "" -"No more Virtual Router Identifier (VRID) available when creating router " -"%(router_id)s. The limit of number of HA Routers per tenant is 254." -msgstr "" -"当创建路由器 %(router_id)s 时,没有更多虚拟路由器标识 (VRID) 可用。每个租户" -"的 HA 路由器数的限制为 254。" - msgid "No offline migrations pending." msgstr "没有脱机迁移处于暂挂状态。" @@ -1905,11 +1679,6 @@ "端口 %s 具有多个固定 IPv4 地址。当分配浮动 IP 时,必须提供特定 IPv4 地址" msgid "" -"Port Security must be enabled in order to have allowed address pairs on a " -"port." -msgstr "必须启用端口安全性,以便在端口上具有所允许的地址对。" - -msgid "" "Port to listen on for OpenFlow connections. Used only for 'native' driver." msgstr "对于 OpenFlow 连接,要侦听的端口。仅用于“本机”驱动程序。" @@ -2048,20 +1817,6 @@ msgid "Request Failed: internal server error while processing your request." msgstr "请求失败:在处理请求时,发生内部服务器错误。" -#, python-format -msgid "" -"Request contains duplicate address pair: mac_address %(mac_address)s " -"ip_address %(ip_address)s." -msgstr "" -"请求包含重复地址对:mac_address %(mac_address)s ip_address %(ip_address)s。" - -#, python-format -msgid "" -"Requested subnet with cidr: %(cidr)s for network: %(network_id)s overlaps " -"with another subnet" -msgstr "" -"所请求子网(具有 cidr %(cidr)s,对于网络 %(network_id)s)与另一子网重叠" - msgid "" "Reset flow table on start. Setting this to True will cause brief traffic " "interruption." @@ -2104,22 +1859,6 @@ msgstr "删除特权需要 root 用户许可权。" #, python-format -msgid "Router %(router_id)s %(reason)s" -msgstr "路由器 %(router_id)s %(reason)s" - -#, python-format -msgid "Router %(router_id)s could not be found" -msgstr "找不到路由器 %(router_id)s" - -#, python-format -msgid "Router %(router_id)s does not have an interface with id %(port_id)s" -msgstr "路由器 %(router_id)s 没有具有标识 %(port_id)s 的接口" - -#, python-format -msgid "Router %(router_id)s has no interface on subnet %(subnet_id)s" -msgstr "路由器 %(router_id)s 在子网 %(subnet_id)s 上不具有任何接口" - -#, python-format msgid "Router '%(router_id)s' is not compatible with this agent." msgstr "路由器“%(router_id)s”与此代理程序不兼容。" @@ -2127,22 +1866,6 @@ msgid "Router already has a port on subnet %s" msgstr "路由器已在子网 %s 上具有端口" -#, python-format -msgid "" -"Router interface for subnet %(subnet_id)s on router %(router_id)s cannot be " -"deleted, as it is required by one or more floating IPs." -msgstr "" -"无法删除路由器 %(router_id)s 上用于子网 %(subnet_id)s 的路由器接口,因为一个" -"或多个浮动 IP 需要该接口。" - -#, python-format -msgid "" -"Router interface for subnet %(subnet_id)s on router %(router_id)s cannot be " -"deleted, as it is required by one or more routes." -msgstr "" -"无法删除路由器 %(router_id)s 上用于子网 %(subnet_id)s 的路由器接口,因为一个" -"或多个路由需要该接口。" - msgid "Router port must have at least one fixed IP" msgstr "路由器端口必须具有至少一个固定 IP" @@ -2220,32 +1943,6 @@ msgstr "当端口状态更改时,将通知发送至 nova" #, python-format -msgid "Service Profile %(sp_id)s could not be found." -msgstr "找不到服务概要文件 %(sp_id)s。" - -#, python-format -msgid "Service Profile %(sp_id)s is already associated with flavor %(fl_id)s." -msgstr "服务概要文件 %(sp_id)s 已与类型 %(fl_id)s 相关联。" - -#, python-format -msgid "Service Profile %(sp_id)s is not associated with flavor %(fl_id)s." -msgstr "服务概要文件 %(sp_id)s 未与类型 %(fl_id)s 相关联。" - -#, python-format -msgid "Service Profile %(sp_id)s is used by some service instance." -msgstr "服务概要文件 %(sp_id)s 已被某个服务实例使用。" - -#, python-format -msgid "Service Profile driver %(driver)s could not be found." -msgstr "找不到服务概要文件驱动程序 %(driver)s。" - -msgid "Service Profile is not enabled." -msgstr "服务概要文件未启用。" - -msgid "Service Profile needs either a driver or metainfo." -msgstr "服务概要文件需要驱动程序或元信息。" - -#, python-format msgid "" "Service provider '%(provider)s' could not be found for service type " "%(service_type)s" @@ -2303,9 +2000,6 @@ "pool." msgstr "同一网络上的子网必须分配自同一子网池。" -msgid "Suffix to append to all namespace names." -msgstr "要附加至所有名称空间名称的后缀。" - msgid "" "System-wide flag to determine the type of router that tenants can create. " "Only admin can override." @@ -2317,13 +2011,6 @@ msgid "TCP Port used by Nova metadata server." msgstr "Nova 元数据服务器使用的 TCP 端口。" -#, python-format -msgid "TLD '%s' must not be all numeric" -msgstr "TLD“%s”不能全部为数字" - -msgid "TOS for vxlan interface protocol packets." -msgstr "用于 vxlan 接口协议包的 TOS。" - msgid "TTL for vxlan interface protocol packets." msgstr "用于 vxlan 接口协议包的 TTL。" @@ -2375,12 +2062,6 @@ "元数据服务。访客实例必须配置为通过 DHCP 请求主机路由(选项 121)。如果 " "force_metadata 设置为 True,那么此选项没有任何效果。" -#, python-format -msgid "" -"The HA Network CIDR specified in the configuration file isn't valid; " -"%(cidr)s." -msgstr "配置文件中指定的 HA 网络 CIDR 无效;%(cidr)s。" - msgid "The UDP port to use for VXLAN tunnels." msgstr "UDP端口用于VXLAN隧道" @@ -2425,30 +2106,6 @@ msgid "The core plugin Neutron will use" msgstr "Neutron 将使用的核心插件" -#, python-format -msgid "" -"The dns_name passed is a FQDN. Its higher level labels must be equal to the " -"dns_domain option in neutron.conf, that has been set to '%(dns_domain)s'. It " -"must also include one or more valid DNS labels to the left of " -"'%(dns_domain)s'" -msgstr "" -"所传递的 dns_name 为 FQDN。它的更高级别的标签必须与neutron.conf 中的 " -"dns_domain 选项相同,该选项已设置为“%(dns_domain)s”。它还必须" -"在“%(dns_domain)s”的左边包括一个或多个有效 DNS 标签" - -#, python-format -msgid "" -"The dns_name passed is a PQDN and its size is '%(dns_name_len)s'. The " -"dns_domain option in neutron.conf is set to %(dns_domain)s, with a length of " -"'%(higher_labels_len)s'. When the two are concatenated to form a FQDN (with " -"a '.' at the end), the resulting length exceeds the maximum size of " -"'%(fqdn_max_len)s'" -msgstr "" -"所传递的 dns_name 为 PQDN,其大小为“%(dns_name_len)s”。neutron.conf 中的 " -"dns_domain 选项设置为 %(dns_domain)s,长度为“%(higher_labels_len)s”。当这两者" -"合并以组成 FQDN 时(末尾为“.”),最终获得的长度超过了最大大" -"小“%(fqdn_max_len)s”" - msgid "The driver used to manage the DHCP server." msgstr "用于管理 DHCP 服务器的驱动程序。" @@ -2497,10 +2154,6 @@ "空,那么将使用第一个“tenant_network_types”。这在 VRRP 流量应使用特定网络(该" "网络不是缺省网络)时很有帮助。" -#, python-format -msgid "The number of allowed address pair exceeds the maximum %(quota)s." -msgstr "允许的地址对数超过最大值 %(quota)s。" - msgid "" "The number of seconds the agent will wait between polling for local device " "changes." @@ -2568,34 +2221,11 @@ msgstr "要使用的认证的类型" msgid "" -"The working mode for the agent. Allowed modes are: 'legacy' - this preserves " -"the existing behavior where the L3 agent is deployed on a centralized " -"networking node to provide L3 services like DNAT, and SNAT. Use this mode if " -"you do not want to adopt DVR. 'dvr' - this mode enables DVR functionality " -"and must be used for an L3 agent that runs on a compute host. 'dvr_snat' - " -"this enables centralized SNAT support in conjunction with DVR. This mode " -"must be used for an L3 agent running on a centralized node (or in single-" -"host deployments, e.g. devstack)" -msgstr "" -"代理程序的工作方式。允许的方式为:“legacy”- 它会保留现有行为,即,L3 代理部署" -"在中央联网节点上,以提供 DNAT 和 SNAT 之类的 L3 服务。如果不想采用 DVR,请使" -"用此方式。“dvr”- 此方法启用 DVR 功能,并且必须用于计算主机上运行的 L3 代" -"理。“dvr_snat”- 它允许中央 SNAT 支持与 DVR 配合使用。此方法必须用于中央节点或" -"单主机部署(例如,devstack)上运行的 L3代理程序" - -msgid "" "There are routers attached to this network that depend on this policy for " "access." msgstr "根据此策略,有一些路由器附加至此网络以用于访问。" msgid "" -"Timeout in seconds for ovs-vsctl commands. If the timeout expires, ovs " -"commands will fail with ALARMCLOCK error." -msgstr "" -"ovs-vsctl 命令的超时(以秒计)。如果此超时到期,那么 ovs 命令将失败,并且发" -"生 ALARMCLOCK 错误。" - -msgid "" "Timeout in seconds to wait for a single OpenFlow request. Used only for " "'native' driver." msgstr "等待单个 OpenFlow 请求时的超时(秒)。仅用于“本机”驱动程序。" @@ -2610,9 +2240,6 @@ "interface name." msgstr "提供的前缀太长。新名称将超出接口名称的给定长度。" -msgid "Too many availability_zone_hints specified" -msgstr "指定了过多 availability_zone_hints" - msgid "" "True to delete all ports on all the OpenvSwitch bridges. False to delete " "ports created by Neutron on integration and external network bridges." @@ -2665,12 +2292,6 @@ #, python-format msgid "" -"Unable to complete operation for %(router_id)s. The number of routes exceeds " -"the maximum %(quota)s." -msgstr "对于 %(router_id)s,无法完成操作。路由数超过最大值 %(quota)s。" - -#, python-format -msgid "" "Unable to complete operation for %(subnet_id)s. The number of DNS " "nameservers exceeds the limit %(quota)s." msgstr "对于 %(subnet_id)s,无法完成操作。DNS 名称服务器数超过限制 %(quota)s。" @@ -2682,14 +2303,6 @@ msgstr "对于 %(subnet_id)s,无法完成操作。主机路由数超过限制 %(quota)s。" #, python-format -msgid "" -"Unable to complete operation on address scope %(address_scope_id)s. There " -"are one or more subnet pools in use on the address scope" -msgstr "" -"无法对地址范围 %(address_scope_id)s 完成操作。在该地址范围内,正在使用一个或" -"多个子网池" - -#, python-format msgid "Unable to convert value in %s" msgstr "无法转换 %s 中的值" @@ -2731,10 +2344,6 @@ msgstr "在%s中找不到源的名称" #, python-format -msgid "Unable to generate unique DVR mac for host %(host)s." -msgstr "无法为主机 %(host)s 生成唯一 DVR MAC。" - -#, python-format msgid "Unable to generate unique mac on network %(net_id)s." msgstr "无法在网络 %(net_id)s 上生成唯一 MAC。" @@ -2757,14 +2366,6 @@ msgstr "无法重新配置网络 %(network)s 的共享设置。多个租户正在使用该网络。" #, python-format -msgid "Unable to update address scope %(address_scope_id)s : %(reason)s" -msgstr "无法更新地址范围 %(address_scope_id)s:%(reason)s" - -#, python-format -msgid "Unable to update the following object fields: %(fields)s" -msgstr "无法更新下列对象字段:%(fields)s" - -#, python-format msgid "" "Unable to verify match:%(match)s as the parent resource: %(res)s was not " "found" @@ -2790,9 +2391,6 @@ msgid "Unit name '%(unit)s' is not valid." msgstr "单元名称“%(unit)s”无效。" -msgid "Unknown API version specified" -msgstr "指定的 API 版本未知" - #, python-format msgid "Unknown address type %(address_type)s" msgstr "未知地址类型 %(address_type)s" @@ -2891,13 +2489,6 @@ msgid "Username for connecting to designate in admin context" msgstr "管理员上下文中要指定的连接用户名" -msgid "" -"Uses veth for an OVS interface or not. Support kernels with limited " -"namespace support (e.g. RHEL 6.5) so long as ovs_use_veth is set to True." -msgstr "" -"对 OVS 接口使用或不使用 veth。如果 ovs_use_veth 设置为 True,那么支持具备有限" -"名称空间支持(例如,RHEL 6.5)的内核。" - msgid "VRRP authentication password" msgstr "VRRP认证密码" @@ -2907,14 +2498,6 @@ msgid "VXLAN network unsupported." msgstr "VXLAN 网络不受支持。" -#, python-format -msgid "" -"Value of %(parameter)s has to be multiple of %(number)s, with maximum value " -"of %(maximum)s and minimum value of %(minimum)s" -msgstr "" -"%(parameter)s 的值必须是 %(number)s 的倍数,最大值为 %(maximum)s,最小值为 " -"%(minimum)s" - msgid "" "Value of host kernel tick rate (hz) for calculating minimum burst value in " "bandwidth limit rules for a port with QoS. See kernel configuration file for " @@ -3097,10 +2680,6 @@ msgid "provider:physical_network specified for %s network" msgstr "提供程序:已为%s 网络指定 physical_network" -#, python-format -msgid "rbac_db_model not found in %s" -msgstr "在 %s 中找不到 rbac_db_model" - msgid "respawn_interval must be >= 0 if provided." msgstr "respawn_interval 必须不小于 0(如果已提供此项)。" @@ -3130,10 +2709,3 @@ msgid "the nexthop is used by router" msgstr "路由器已使用下一中继段" - -msgid "" -"uuid provided from the command line so external_process can track us via /" -"proc/cmdline interface." -msgstr "" -"从命令行中提供了 uuid,以便 external_process 可通过 /proc/cmdline 接口跟踪我" -"们。" diff -Nru neutron-12.0.0/neutron/locale/zh_TW/LC_MESSAGES/neutron.po neutron-12.0.1/neutron/locale/zh_TW/LC_MESSAGES/neutron.po --- neutron-12.0.0/neutron/locale/zh_TW/LC_MESSAGES/neutron.po 2018-02-28 11:30:39.000000000 +0000 +++ neutron-12.0.1/neutron/locale/zh_TW/LC_MESSAGES/neutron.po 2018-03-29 17:33:26.000000000 +0000 @@ -6,18 +6,18 @@ # Andreas Jaeger , 2016. #zanata msgid "" msgstr "" -"Project-Id-Version: neutron 11.0.0.0b3.dev326\n" +"Project-Id-Version: neutron VERSION\n" "Report-Msgid-Bugs-To: https://bugs.launchpad.net/openstack-i18n/\n" -"POT-Creation-Date: 2017-07-18 03:24+0000\n" +"POT-Creation-Date: 2018-03-14 04:19+0000\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "PO-Revision-Date: 2016-04-12 05:56+0000\n" "Last-Translator: Copied by Zanata \n" -"Language: zh-TW\n" +"Language: zh_TW\n" "Plural-Forms: nplurals=1; plural=0;\n" "Generated-By: Babel 2.0\n" -"X-Generator: Zanata 3.9.6\n" +"X-Generator: Zanata 4.3.3\n" "Language-Team: Chinese (Taiwan)\n" #, python-format @@ -59,37 +59,6 @@ msgstr "%(tunnel)s 提供者網路已禁止 %(key)s" #, python-format -msgid "" -"%(method)s called with network settings %(current)s (original settings " -"%(original)s) and network segments %(segments)s" -msgstr "" -"已使用網路設定 %(current)s(原始設定%(original)s)及網路區段 %(segments)s 來" -"呼叫了 %(method)s" - -#, python-format -msgid "" -"%(method)s called with port settings %(current)s (original settings " -"%(original)s) host %(host)s (original host %(original_host)s) vif type " -"%(vif_type)s (original vif type %(original_vif_type)s) vif details " -"%(vif_details)s (original vif details %(original_vif_details)s) binding " -"levels %(levels)s (original binding levels %(original_levels)s) on network " -"%(network)s with segments to bind %(segments_to_bind)s" -msgstr "" -"在包含區段的網路 %(network)s 上,已使用埠設定 %(current)s(原始設定 " -"%(original)s)主機 %(host)s(原始主機 %(original_host)s)VIF 類型 " -"%(vif_type)s(原始 VIF 類型 %(original_vif_type)s)VIF 詳細資料 " -"%(vif_details)s(原始 VIF 詳細資料 %(original_vif_details)s)連結層次 " -"%(levels)s(原始連結層次 %(original_levels)s)呼叫了 %(method)s,以連結 " -"%(segments_to_bind)s" - -#, python-format -msgid "" -"%(method)s called with subnet settings %(current)s (original settings " -"%(original)s)" -msgstr "" -"已使用子網路設定 %(current)s(原始設定%(original)s)來呼叫了 %(method)s" - -#, python-format msgid "%(name)s '%(addr)s' does not match the ip_version '%(ip_version)s'" msgstr "%(name)s '%(addr)s' 與 ip_version '%(ip_version)s' 不符" @@ -122,38 +91,6 @@ msgstr "本端提供者網路已禁止 %s" #, python-format -msgid "" -"'%(data)s' contains '%(length)s' characters. Adding a domain name will cause " -"it to exceed the maximum length of a FQDN of '%(max_len)s'" -msgstr "" -"'%(data)s' 包含 '%(length)s' 個字元。新增網域名稱將導致它超出 FQDN 長度上限 " -"'%(max_len)s'" - -#, python-format -msgid "" -"'%(data)s' contains '%(length)s' characters. Adding a sub-domain will cause " -"it to exceed the maximum length of a FQDN of '%(max_len)s'" -msgstr "" -"'%(data)s' 包含 '%(length)s' 個字元。新增子網域將導致它超出 FQDN 長度上限 " -"'%(max_len)s'" - -#, python-format -msgid "'%(data)s' not a valid PQDN or FQDN. Reason: %(reason)s" -msgstr "'%(data)s' 不是有效的 PQDN 或 FQDN。原因:%(reason)s" - -#, python-format -msgid "'%s' cannot be converted to lowercase string" -msgstr "'%s' 無法轉換為小寫字串" - -#, python-format -msgid "'%s' is a FQDN. It should be a relative domain name" -msgstr "'%s' 是 FQDN。它應該是相對網域名稱" - -#, python-format -msgid "'%s' is not a FQDN" -msgstr "'%s' 不是 FQDN" - -#, python-format msgid "'%s' is not a valid RBAC object type" msgstr "'%s' 不是有效的 RBAC 物件類型" @@ -214,25 +151,14 @@ msgid "Address not present on interface" msgstr "位址未呈現在介面上" -#, python-format -msgid "Address scope %(address_scope_id)s could not be found" -msgstr "找不到位址範圍 %(address_scope_id)s" - msgid "" "Address to listen on for OpenFlow connections. Used only for 'native' driver." msgstr "用於接聽 OpenFlow 連線的位址。僅用於 'native' 驅動程式。" -msgid "Adds external network attribute to network resource." -msgstr "將外部網路屬性新增至網路資源。" - msgid "Adds test attributes to core resources." msgstr "將測試屬性新增至核心資源。" #, python-format -msgid "Agent %(id)s could not be found" -msgstr "找不到代理程式 %(id)s" - -#, python-format msgid "Agent %(id)s is not a L3 Agent or has been disabled" msgstr "代理程式 %(id)s 不是 L3 代理程式或者已停用" @@ -253,11 +179,6 @@ msgid "Agent updated: %(payload)s" msgstr "已更新代理程式:%(payload)s" -#, python-format -msgid "" -"Agent with agent_type=%(agent_type)s and host=%(host)s could not be found" -msgstr "找不到 agent_type = %(agent_type)s 且主機 = %(host)s 的代理程式" - msgid "Allow auto scheduling networks to DHCP agent." msgstr "容許自動將網路排程到 DHCP 代理程式。" @@ -287,12 +208,6 @@ msgid "Allow to perform insecure SSL (https) requests to nova metadata" msgstr "容許對 Nova meta 資料執行不安全的 SSL (HTTPS) 要求" -msgid "Allowed address pairs must be a list." -msgstr "容許使用的位址配對必須是清單。" - -msgid "AllowedAddressPair must contain ip_address" -msgstr "AllowedAddressPair 必須包含 ip_address" - msgid "" "Allows for serving metadata requests coming from a dedicated metadata access " "network whose CIDR is 169.254.169.254/16 (or larger prefix), and is " @@ -350,10 +265,6 @@ msgid "Availability zone of this node" msgstr "此節點的可用性區域。" -#, python-format -msgid "AvailabilityZone %(availability_zone)s could not be found." -msgstr "找不到可用性區域 %(availability_zone)s。" - msgid "Available commands" msgstr "可用的指令" @@ -412,16 +323,6 @@ msgid "Cannot allocate requested subnet from the available set of prefixes" msgstr "無法配置可用字首集中的所要求子網路" -#, python-format -msgid "" -"Cannot associate floating IP %(floating_ip_address)s (%(fip_id)s) with port " -"%(port_id)s using fixed IP %(fixed_ip)s, as that fixed IP already has a " -"floating IP on external network %(net_id)s." -msgstr "" -"無法使浮動 IP %(floating_ip_address)s (%(fip_id)s) 與使用固定 IP " -"%(fixed_ip)s 的埠 %(port_id)s 產生關聯,因為該固定 IP 在外部網路 %(net_id)s " -"上已經有浮動 IP。" - msgid "Cannot disable enable_dhcp with ipv6 attributes set" msgstr "在設定了 ipv6 屬性的情況下,無法停用 enable_dhcp" @@ -528,9 +429,6 @@ "子網路 %(subnet_id)s 的 CIDR %(subnet_cidr)s 與子網路 %(sub_id)s 的 CIDR " "%(cidr)s 重疊" -msgid "Class not found." -msgstr "找不到類別。" - msgid "Cleanup resources of a specific agent type only." msgstr "只清除特定代理程式類型的資源。" @@ -737,10 +635,6 @@ "Distributed Virtual Router Mac Address for host %(host)s does not exist." msgstr "主機 %(host)s 的分散式虛擬路由器 MAC 位址不存在。" -#, python-format -msgid "Domain %(dns_domain)s not found in the external DNS service" -msgstr "在外部 DNS 服務中,找不到網域 %(dns_domain)s" - msgid "Domain to use for building the hostnames" msgstr "用於建置主機名稱的網域" @@ -780,9 +674,6 @@ "為路由器 %(router)s 建立了重複的 L3HARouterAgentPortBinding。無法升級資料庫。" "請先移除所有重複項目,然後再升級資料庫。" -msgid "Duplicate Metering Rule in POST." -msgstr "POST 中的計量規則重複。" - msgid "Duplicate Security Group Rule in POST." msgstr "POST 中的安全群組規則重複。" @@ -875,9 +766,6 @@ "解析。從 dnsmasq 程序引數中有效地移除 '--no-resolv' 選項。將自訂 DNS 解析器新" "增至 'dnsmasq_dns_servers' 選項會停用此功能。" -msgid "Encountered an empty component." -msgstr "發現空元件。" - msgid "End of VLAN range is less than start of VLAN range" msgstr "VLAN 範圍的終止值小於 VLAN 範圍的起始值" @@ -941,29 +829,10 @@ msgstr "找不到延伸:%(extensions)s。" #, python-format -msgid "External DNS driver %(driver)s could not be found." -msgstr "找不到外部 DNS 驅動程式 %(driver)s。" - -#, python-format msgid "External IP %s is the same as the gateway IP" msgstr "外部 IP %s 與閘道 IP 相同" #, python-format -msgid "" -"External network %(external_network_id)s is not reachable from subnet " -"%(subnet_id)s. Therefore, cannot associate Port %(port_id)s with a Floating " -"IP." -msgstr "" -"無法從子網路 %(subnet_id)s 抵達外部網路 %(external_network_id)s。因此,無法使" -"埠 %(port_id)s 與浮動 IP 產生關聯。" - -#, python-format -msgid "" -"External network %(net_id)s cannot be updated to be made non-external, since " -"it has existing gateway ports" -msgstr "無法將外部網路 %(net_id)s 更新成非外部網路,因為它具有現存的閘道埠" - -#, python-format msgid "Failed rescheduling router %(router_id)s: no eligible l3 agent found." msgstr "無法重新排定路由器 %(router_id)s:找不到適用的 L3 代理程式。" @@ -972,14 +841,6 @@ msgstr "無法將路由器 %(router_id)s 排程到 L3 代理程式 %(agent_id)s。" #, python-format -msgid "" -"Failed to allocate a VRID in the network %(network_id)s for the router " -"%(router_id)s after %(max_tries)s tries." -msgstr "" -"在嘗試 %(max_tries)s 次之後,無法為路由器 %(router_id)s配置網路 " -"%(network_id)s 中的 VRID。" - -#, python-format msgid "Failed to allocate subnet: %(reason)s." msgstr "無法配置子網路:%(reason)s。" @@ -990,14 +851,6 @@ #, python-format msgid "" -"Failed to create a duplicate %(object_type)s: for attribute(s) " -"%(attributes)s with value(s) %(values)s" -msgstr "" -"針對下列屬性,無法建立複製的 %(object_type)s:%(attributes)s(值為 " -"%(values)s)" - -#, python-format -msgid "" "Failed to create port on network %(network_id)s, because fixed_ips included " "invalid subnet %(subnet_id)s" msgstr "" @@ -1033,28 +886,9 @@ msgid "Flat provider networks are disabled" msgstr "已停用平面提供程序網路" -#, python-format -msgid "Flavor %(flavor_id)s could not be found." -msgstr "找不到特性 %(flavor_id)s。" - -#, python-format -msgid "Flavor %(flavor_id)s is used by some service instance." -msgstr "特性 %(flavor_id)s 已由某個服務實例使用。" - -msgid "Flavor is not enabled." -msgstr "未啟用特性。" - -#, python-format -msgid "Floating IP %(floatingip_id)s could not be found" -msgstr "找不到浮動 IP %(floatingip_id)s" - msgid "For TCP/UDP protocols, port_range_min must be <= port_range_max" msgstr "對於 TCP/UDP 通訊協定,port_range_min 必須 <= port_range_max" -#, python-format -msgid "For class %(object_type)s missing primary keys: %(missing_keys)s" -msgstr "針對類別 %(object_type)s,遺漏了主要索引鍵:%(missing_keys)s" - msgid "Force ip_lib calls to use the root helper" msgstr "強制 ip_lib 呼叫使用根說明程式" @@ -1073,14 +907,6 @@ msgstr "閘道 IP 版本與配置儲存區版本不一致" #, python-format -msgid "" -"Gateway cannot be updated for router %(router_id)s, since a gateway to " -"external network %(net_id)s is required by one or more floating IPs." -msgstr "" -"無法更新路由器 %(router_id)s 的閘道,因為一個以上的浮動 IP 需要外部網路 " -"%(net_id)s 的閘道。" - -#, python-format msgid "Gateway ip %(ip_address)s conflicts with allocation pool %(pool)s." msgstr "閘道 IP %(ip_address)s 與配置儲存區 %(pool)s 相衝突。" @@ -1309,10 +1135,6 @@ msgstr "通訊協定 %(protocol)s 的乙太網路類型 %(ethertype)s 無效。" #, python-format -msgid "Invalid format for routes: %(routes)s, %(reason)s" -msgstr "無效的路徑格式:%(routes)s,%(reason)s" - -#, python-format msgid "Invalid format: %s" msgstr "無效的格式:%s" @@ -1352,10 +1174,6 @@ msgstr "無效的服務提供者格式" #, python-format -msgid "Invalid service type %(service_type)s." -msgstr "服務類型 %(service_type)s 無效。" - -#, python-format msgid "" "Invalid value for ICMP %(field)s (%(attr)s) %(value)s. It must be 0 to 255." msgstr "" @@ -1432,9 +1250,6 @@ msgid "Location of Metadata Proxy UNIX domain socket" msgstr "meta 資料 Proxy UNIX 網域 Socket 的位置" -msgid "Location of pid file of this process." -msgstr "此程序的 PID 檔位置。" - msgid "Location to store DHCP server config files." msgstr "DHCP 伺服器配置檔的儲存位置。" @@ -1518,22 +1333,6 @@ msgid "Metering driver" msgstr "計量驅動程式" -#, python-format -msgid "Metering label %(label_id)s does not exist" -msgstr "計量標籤 %(label_id)s 不存在" - -#, python-format -msgid "Metering label rule %(rule_id)s does not exist" -msgstr "計量標籤規則 %(rule_id)s 不存在" - -#, python-format -msgid "" -"Metering label rule with remote_ip_prefix %(remote_ip_prefix)s overlaps " -"another" -msgstr "" -"計量標籤規則 (remote_ip_prefix = %(remote_ip_prefix)s),與另一個計量標籤規則" -"重疊" - msgid "MinRtrAdvInterval setting for radvd.conf" msgstr "radvd.conf 的 MinRtrAdvInterval 設定" @@ -1566,10 +1365,6 @@ "如 239.0.0.0/8)。在所有代理程式上,此設定必須相同。" #, python-format -msgid "Multiple agents with agent_type=%(agent_type)s and host=%(host)s found" -msgstr "找到多個 agent_type = %(agent_type)s 且主機 = %(host)s 的代理程式" - -#, python-format msgid "Multiple default providers for service %s" msgstr "服務 %s 的多個預設提供者" @@ -1590,20 +1385,6 @@ msgid "Must specify one or more actions on flow addition or modification" msgstr "必須對流程新增作業或修改作業指定一個以上的動作" -#, python-format -msgid "Name %(dns_name)s is duplicated in the external DNS service" -msgstr "名稱 %(dns_name)s 在外部 DNS 服務中是重複的" - -#, python-format -msgid "" -"Name '%s' must be 1-63 characters long, each of which can only be " -"alphanumeric or a hyphen." -msgstr "名稱 '%s' 的長度必須為 1-63 個字元,每個字元只能是英數字元或連字號。" - -#, python-format -msgid "Name '%s' must not start or end with a hyphen." -msgstr "名稱 '%s' 不得以連字號開頭或結尾。" - msgid "Name of Open vSwitch bridge to use" msgstr "要使用的 Open vSwitch 橋接器名稱" @@ -1686,14 +1467,6 @@ msgid "No more IP addresses available for subnet %(subnet_id)s." msgstr "沒有其他 IP 位址可用於子網路 %(subnet_id)s。" -#, python-format -msgid "" -"No more Virtual Router Identifier (VRID) available when creating router " -"%(router_id)s. The limit of number of HA Routers per tenant is 254." -msgstr "" -"建立路由器 %(router_id)s 時,沒有其他「虛擬路由器 ID (VRID)」可用。每個承租人" -"的 HA 路由器數目限制為 254 個。" - msgid "No offline migrations pending." msgstr "沒有擱置中的離線移轉。" @@ -1902,11 +1675,6 @@ msgstr "埠 %s 具有多個固定 IPv4 位址。指派浮動 IP 時,必須提供特定的 IPv4 位址" msgid "" -"Port Security must be enabled in order to have allowed address pairs on a " -"port." -msgstr "必須啟用埠安全,才能在埠上使用位址配對。" - -msgid "" "Port to listen on for OpenFlow connections. Used only for 'native' driver." msgstr "用於接聽 OpenFlow 連線的埠。僅用於 'native' 驅動程式。" @@ -2046,20 +1814,6 @@ msgid "Request Failed: internal server error while processing your request." msgstr "要求失敗:處理要求時發生內部伺服器錯誤。" -#, python-format -msgid "" -"Request contains duplicate address pair: mac_address %(mac_address)s " -"ip_address %(ip_address)s." -msgstr "" -"要求包含重複的位址配對:mac_address %(mac_address)sip_address " -"%(ip_address)s。" - -#, python-format -msgid "" -"Requested subnet with cidr: %(cidr)s for network: %(network_id)s overlaps " -"with another subnet" -msgstr "所要求的網路 %(network_id)s 子網路 (CIDR %(cidr)s) 與另一個子網路重疊" - msgid "" "Reset flow table on start. Setting this to True will cause brief traffic " "interruption." @@ -2103,22 +1857,6 @@ msgstr "需要 root 權限才能捨棄專用權。" #, python-format -msgid "Router %(router_id)s %(reason)s" -msgstr "路由器 %(router_id)s %(reason)s" - -#, python-format -msgid "Router %(router_id)s could not be found" -msgstr "找不到路由器 %(router_id)s" - -#, python-format -msgid "Router %(router_id)s does not have an interface with id %(port_id)s" -msgstr "路由器 %(router_id)s 沒有 ID 為 %(port_id)s 的介面" - -#, python-format -msgid "Router %(router_id)s has no interface on subnet %(subnet_id)s" -msgstr "路由器 %(router_id)s 在子網路 %(subnet_id)s 上沒有介面" - -#, python-format msgid "Router '%(router_id)s' is not compatible with this agent." msgstr "路由器 '%(router_id)s' 與此代理程式不相容。" @@ -2126,22 +1864,6 @@ msgid "Router already has a port on subnet %s" msgstr "路由器在子網路 %s 上已經有埠" -#, python-format -msgid "" -"Router interface for subnet %(subnet_id)s on router %(router_id)s cannot be " -"deleted, as it is required by one or more floating IPs." -msgstr "" -"路由器 %(router_id)s 上子網路 %(subnet_id)s 的路由器介面無法刪除,因為一個以" -"上的浮動 IP 需要該介面。" - -#, python-format -msgid "" -"Router interface for subnet %(subnet_id)s on router %(router_id)s cannot be " -"deleted, as it is required by one or more routes." -msgstr "" -"路由器 %(router_id)s 上子網路 %(subnet_id)s 的路由器介面無法刪除,因為一個以" -"上的路徑需要該介面。" - msgid "Router port must have at least one fixed IP" msgstr "路由器埠必須具有至少一個固定 IP" @@ -2219,32 +1941,6 @@ msgstr "埠狀態變更時,將通知傳送至 Nova" #, python-format -msgid "Service Profile %(sp_id)s could not be found." -msgstr "找不到服務設定檔 %(sp_id)s。" - -#, python-format -msgid "Service Profile %(sp_id)s is already associated with flavor %(fl_id)s." -msgstr "服務設定檔 %(sp_id)s 已經與特性 %(fl_id)s 建立關聯。" - -#, python-format -msgid "Service Profile %(sp_id)s is not associated with flavor %(fl_id)s." -msgstr "服務設定檔 %(sp_id)s 未與特性 %(fl_id)s 建立關聯。" - -#, python-format -msgid "Service Profile %(sp_id)s is used by some service instance." -msgstr "服務設定檔 %(sp_id)s 已由某個服務實例使用。" - -#, python-format -msgid "Service Profile driver %(driver)s could not be found." -msgstr "找不到服務設定檔驅動程式 %(driver)s。" - -msgid "Service Profile is not enabled." -msgstr "未啟用服務設定檔。" - -msgid "Service Profile needs either a driver or metainfo." -msgstr "服務設定檔需要驅動程式或 metainfo。" - -#, python-format msgid "" "Service provider '%(provider)s' could not be found for service type " "%(service_type)s" @@ -2305,9 +2001,6 @@ "pool." msgstr "在同一網路上管理的子網路必須從同一子網路儲存區中進行配置。" -msgid "Suffix to append to all namespace names." -msgstr "要附加至所有名稱空間名稱的字尾。" - msgid "" "System-wide flag to determine the type of router that tenants can create. " "Only admin can override." @@ -2319,13 +2012,6 @@ msgid "TCP Port used by Nova metadata server." msgstr "Nova meta 資料伺服器所使用的 TCP 埠。" -#, python-format -msgid "TLD '%s' must not be all numeric" -msgstr "TLD '%s' 不得全為數值" - -msgid "TOS for vxlan interface protocol packets." -msgstr "VXLAN 介面通訊協定封包的 TOS。" - msgid "TTL for vxlan interface protocol packets." msgstr "VXLAN 介面通訊協定封包的 TTL。" @@ -2377,12 +2063,6 @@ "時,才啟動 meta 資料服務。訪客實例必須配置成透過 DHCP 來要求主機路線(選項 " "121)。將 force_metadata 設為 True 時,這個選項沒有任何效果。" -#, python-format -msgid "" -"The HA Network CIDR specified in the configuration file isn't valid; " -"%(cidr)s." -msgstr "配置檔中指定的「HA 網路 CIDR」無效:%(cidr)s。" - msgid "The UDP port to use for VXLAN tunnels." msgstr "要用於 VXLAN 通道的 UDP 埠。" @@ -2428,30 +2108,6 @@ msgid "The core plugin Neutron will use" msgstr "Neutron 將使用的核心外掛程式" -#, python-format -msgid "" -"The dns_name passed is a FQDN. Its higher level labels must be equal to the " -"dns_domain option in neutron.conf, that has been set to '%(dns_domain)s'. It " -"must also include one or more valid DNS labels to the left of " -"'%(dns_domain)s'" -msgstr "" -"所傳遞的 dns_name 是 FQDN。它的更高階標籤必須等於neutron.conf 中的 " -"dns_domain 選項,後者已經設定為 '%(dns_domain)s'。它還必須包括下列項目左側的" -"一個以上有效 DNS 標籤:'%(dns_domain)s'" - -#, python-format -msgid "" -"The dns_name passed is a PQDN and its size is '%(dns_name_len)s'. The " -"dns_domain option in neutron.conf is set to %(dns_domain)s, with a length of " -"'%(higher_labels_len)s'. When the two are concatenated to form a FQDN (with " -"a '.' at the end), the resulting length exceeds the maximum size of " -"'%(fqdn_max_len)s'" -msgstr "" -"所傳遞的 dns_name 是 PQDN,並且它的大小是 '%(dns_name_len)s'。neutron.conf 中" -"的 dns_domain 選項已設定為 %(dns_domain)s,長度為'%(higher_labels_len)s'。當" -"這兩者連結以形成 FQDN(末尾使用'.')時,所產生的長度會超過大小上" -"限'%(fqdn_max_len)s'" - msgid "The driver used to manage the DHCP server." msgstr "用於管理 DHCP 伺服器的驅動程式。" @@ -2502,10 +2158,6 @@ "第一個 'tenant_network_types'。當 VRRP 資料流量應該使用的特定網路不是預設網路" "時,這很有用。" -#, python-format -msgid "The number of allowed address pair exceeds the maximum %(quota)s." -msgstr "所容許的位址配對數目超過了上限 %(quota)s。" - msgid "" "The number of seconds the agent will wait between polling for local device " "changes." @@ -2573,35 +2225,11 @@ msgstr "要使用的鑑別類型" msgid "" -"The working mode for the agent. Allowed modes are: 'legacy' - this preserves " -"the existing behavior where the L3 agent is deployed on a centralized " -"networking node to provide L3 services like DNAT, and SNAT. Use this mode if " -"you do not want to adopt DVR. 'dvr' - this mode enables DVR functionality " -"and must be used for an L3 agent that runs on a compute host. 'dvr_snat' - " -"this enables centralized SNAT support in conjunction with DVR. This mode " -"must be used for an L3 agent running on a centralized node (or in single-" -"host deployments, e.g. devstack)" -msgstr "" -"代理程式的工作中模式。所容許的模式為:「舊式」- 這種模式會將現有行為保留在集" -"中式網路節點上用於部署L3 代理程式的位置,以提供 L3 服務(例如 DNAT 和 " -"SNAT)。如果您不想採用 DVR,請使用這種模式。'dvr' - 這種模式會啟用DVR 功能," -"並且必須用於在計算主機上執行的 L3 代理程式。'dvr_snat' - 這種模式會啟用集中" -"式 SNAT 支援以及 DVR。這種模式必須用於在集中式節點上執行(或者在單一主機部屬" -"中執行,例如 devstack)的 L3 代理程式" - -msgid "" "There are routers attached to this network that depend on this policy for " "access." msgstr "有依賴於此存取原則的路由器已連接至此網路。" msgid "" -"Timeout in seconds for ovs-vsctl commands. If the timeout expires, ovs " -"commands will fail with ALARMCLOCK error." -msgstr "" -"ovs-vsctl 指令的逾時值(以秒為單位)。如果逾時值到期,則 ovs 指令將失敗,且發" -"生 ALARMCLOCK 錯誤。" - -msgid "" "Timeout in seconds to wait for a single OpenFlow request. Used only for " "'native' driver." msgstr "" @@ -2618,9 +2246,6 @@ "interface name." msgstr "所提供的字首太長。新名稱將超過介面名稱的給定長度。" -msgid "Too many availability_zone_hints specified" -msgstr "指定的 availability_zone_hints 太多" - msgid "" "True to delete all ports on all the OpenvSwitch bridges. False to delete " "ports created by Neutron on integration and external network bridges." @@ -2673,12 +2298,6 @@ #, python-format msgid "" -"Unable to complete operation for %(router_id)s. The number of routes exceeds " -"the maximum %(quota)s." -msgstr "無法對 %(router_id)s 完成作業。路徑數目超出上限 %(quota)s。" - -#, python-format -msgid "" "Unable to complete operation for %(subnet_id)s. The number of DNS " "nameservers exceeds the limit %(quota)s." msgstr "" @@ -2691,14 +2310,6 @@ msgstr "無法對 %(subnet_id)s 完成作業。主機路徑數目超出限制 %(quota)s。" #, python-format -msgid "" -"Unable to complete operation on address scope %(address_scope_id)s. There " -"are one or more subnet pools in use on the address scope" -msgstr "" -"無法對位址範圍 %(address_scope_id)s 完成作業。該位址範圍上有一個以上的子網路" -"儲存區在使用中" - -#, python-format msgid "Unable to convert value in %s" msgstr "無法轉換 %s 中的值" @@ -2740,10 +2351,6 @@ msgstr "在 %s 中找不到資源名稱" #, python-format -msgid "Unable to generate unique DVR mac for host %(host)s." -msgstr "無法為主機 %(host)s 產生唯一的 DVR MAC。" - -#, python-format msgid "Unable to generate unique mac on network %(net_id)s." msgstr "無法在網路 %(net_id)s 上產生唯一 MAC 位址。" @@ -2766,14 +2373,6 @@ msgstr "無法重新配置網路 %(network)s 的共用設定。多個租戶正在使用該網路。" #, python-format -msgid "Unable to update address scope %(address_scope_id)s : %(reason)s" -msgstr "無法更新位址範圍 %(address_scope_id)s:%(reason)s" - -#, python-format -msgid "Unable to update the following object fields: %(fields)s" -msgstr "無法更新下列物件欄位:%(fields)s" - -#, python-format msgid "" "Unable to verify match:%(match)s as the parent resource: %(res)s was not " "found" @@ -2799,9 +2398,6 @@ msgid "Unit name '%(unit)s' is not valid." msgstr "單元名稱 '%(unit)s' 無效。" -msgid "Unknown API version specified" -msgstr "指定的 API 版本不明" - #, python-format msgid "Unknown address type %(address_type)s" msgstr "不明的位址類型 %(address_type)s" @@ -2901,13 +2497,6 @@ msgid "Username for connecting to designate in admin context" msgstr "用於連接以在管理環境定義中指定的使用者名稱" -msgid "" -"Uses veth for an OVS interface or not. Support kernels with limited " -"namespace support (e.g. RHEL 6.5) so long as ovs_use_veth is set to True." -msgstr "" -"是否將 veth 用於 OVS 介面。只要 ovs_use_veth 設為 True,就支援具有受限名稱空" -"間支援(例如 RHEL 6.5)的核心。" - msgid "VRRP authentication password" msgstr "VRRP 鑑別密碼" @@ -2917,14 +2506,6 @@ msgid "VXLAN network unsupported." msgstr "不支援 VXLAN 網路。" -#, python-format -msgid "" -"Value of %(parameter)s has to be multiple of %(number)s, with maximum value " -"of %(maximum)s and minimum value of %(minimum)s" -msgstr "" -"值 %(parameter)s 必須是 %(number)s 的倍數,上限值為 %(maximum)s 且下限值為 " -"%(minimum)s" - msgid "" "Value of host kernel tick rate (hz) for calculating minimum burst value in " "bandwidth limit rules for a port with QoS. See kernel configuration file for " @@ -3109,10 +2690,6 @@ msgid "provider:physical_network specified for %s network" msgstr "為 %s 網路指定了 provider:physical_network" -#, python-format -msgid "rbac_db_model not found in %s" -msgstr "在 %s 中找不到 rbac_db_model" - msgid "respawn_interval must be >= 0 if provided." msgstr "如果提供的話,則 respawn_interval 必須 >= 0。" @@ -3142,10 +2719,3 @@ msgid "the nexthop is used by router" msgstr "路由器已使用下一個中繼站" - -msgid "" -"uuid provided from the command line so external_process can track us via /" -"proc/cmdline interface." -msgstr "" -"已從指令行提供了 UUID,因此, external_process 可以透過/proc/cmdline 介面對我" -"們進行追蹤。" diff -Nru neutron-12.0.0/neutron/objects/qos/qos_policy_validator.py neutron-12.0.1/neutron/objects/qos/qos_policy_validator.py --- neutron-12.0.0/neutron/objects/qos/qos_policy_validator.py 2018-02-28 11:30:39.000000000 +0000 +++ neutron-12.0.1/neutron/objects/qos/qos_policy_validator.py 2018-03-29 17:33:08.000000000 +0000 @@ -45,3 +45,24 @@ policy_id=policy["id"], existing_rule=rule.rule_type, existing_value=rule.max_kbps) + + +def check_rules_conflict(policy, rule_obj): + """Implementation of the QoS Policy rules conflicts. + + This function checks if the new rule to be associated with policy + doesn't have any duplicate rule already in policy. + Raises an exception if conflict is identified. + """ + + for rule in policy.rules: + # NOTE(slaweq): we don't want to raise exception when compared rules + # have got same id as it means that it is probably exactly the same + # rule so there is no conflict + if rule.id == getattr(rule_obj, "id", None): + continue + if rule.duplicates(rule_obj): + raise n_exc.QoSRulesConflict( + new_rule_type=rule_obj.rule_type, + rule_id=rule.id, + policy_id=policy.id) diff -Nru neutron-12.0.0/neutron/objects/qos/rule.py neutron-12.0.1/neutron/objects/qos/rule.py --- neutron-12.0.0/neutron/objects/qos/rule.py 2018-02-28 11:30:39.000000000 +0000 +++ neutron-12.0.1/neutron/objects/qos/rule.py 2018-03-29 17:33:08.000000000 +0000 @@ -65,6 +65,25 @@ # should be redefined in subclasses rule_type = None + duplicates_compare_fields = () + + def duplicates(self, other_rule): + """Returns True if rules have got same values in fields defined in + 'duplicates_compare_fields' list. + + In case when subclass don't have defined any field in + duplicates_compare_fields, only rule types are compared. + """ + + if self.rule_type != other_rule.rule_type: + return False + + if self.duplicates_compare_fields: + for field in self.duplicates_compare_fields: + if getattr(self, field) != getattr(other_rule, field): + return False + return True + def to_dict(self): dict_ = super(QosRule, self).to_dict() dict_['type'] = self.rule_type @@ -110,6 +129,8 @@ default=constants.EGRESS_DIRECTION) } + duplicates_compare_fields = ['direction'] + rule_type = qos_consts.RULE_TYPE_BANDWIDTH_LIMIT def obj_make_compatible(self, primitive, target_version): @@ -151,6 +172,8 @@ 'direction': common_types.FlowDirectionEnumField(), } + duplicates_compare_fields = ['direction'] + rule_type = qos_consts.RULE_TYPE_MINIMUM_BANDWIDTH def obj_make_compatible(self, primitive, target_version): diff -Nru neutron-12.0.0/neutron/plugins/ml2/drivers/linuxbridge/agent/linuxbridge_neutron_agent.py neutron-12.0.1/neutron/plugins/ml2/drivers/linuxbridge/agent/linuxbridge_neutron_agent.py --- neutron-12.0.0/neutron/plugins/ml2/drivers/linuxbridge/agent/linuxbridge_neutron_agent.py 2018-02-28 11:30:39.000000000 +0000 +++ neutron-12.0.1/neutron/plugins/ml2/drivers/linuxbridge/agent/linuxbridge_neutron_agent.py 2018-03-29 17:33:26.000000000 +0000 @@ -39,6 +39,7 @@ from neutron.common import profiler as setup_profiler from neutron.common import topics from neutron.common import utils +from neutron.conf.agent import common as agent_config from neutron.plugins.common import utils as p_utils from neutron.plugins.ml2.drivers.agent import _agent_manager_base as amb from neutron.plugins.ml2.drivers.agent import _common_agent as ca @@ -985,6 +986,7 @@ common_config.init(sys.argv[1:]) common_config.setup_logging() + agent_config.setup_privsep() try: interface_mappings = helpers.parse_mappings( cfg.CONF.LINUX_BRIDGE.physical_interface_mappings) diff -Nru neutron-12.0.0/neutron/plugins/ml2/drivers/openvswitch/agent/ovs_dvr_neutron_agent.py neutron-12.0.1/neutron/plugins/ml2/drivers/openvswitch/agent/ovs_dvr_neutron_agent.py --- neutron-12.0.0/neutron/plugins/ml2/drivers/openvswitch/agent/ovs_dvr_neutron_agent.py 2018-02-28 11:30:39.000000000 +0000 +++ neutron-12.0.1/neutron/plugins/ml2/drivers/openvswitch/agent/ovs_dvr_neutron_agent.py 2018-03-29 17:33:26.000000000 +0000 @@ -421,8 +421,9 @@ # TODO(vivek) remove the IPv6 related flows once SNAT is not # used for IPv6 DVR. if ip_version == 4: - br.install_dvr_process_ipv4( - vlan_tag=lvm.vlan, gateway_ip=subnet_info['gateway_ip']) + if subnet_info['gateway_ip']: + br.install_dvr_process_ipv4( + vlan_tag=lvm.vlan, gateway_ip=subnet_info['gateway_ip']) else: br.install_dvr_process_ipv6( vlan_tag=lvm.vlan, gateway_mac=subnet_info['gateway_mac']) @@ -616,8 +617,10 @@ if network_type in constants.TUNNEL_NETWORK_TYPES: br = self.tun_br if ip_version == 4: - br.delete_dvr_process_ipv4( - vlan_tag=lvm.vlan, gateway_ip=subnet_info['gateway_ip']) + if subnet_info['gateway_ip']: + br.delete_dvr_process_ipv4( + vlan_tag=lvm.vlan, + gateway_ip=subnet_info['gateway_ip']) else: br.delete_dvr_process_ipv6( vlan_tag=lvm.vlan, gateway_mac=subnet_info['gateway_mac']) diff -Nru neutron-12.0.0/neutron/services/qos/qos_plugin.py neutron-12.0.1/neutron/services/qos/qos_plugin.py --- neutron-12.0.0/neutron/services/qos/qos_plugin.py 2018-02-28 11:30:39.000000000 +0000 +++ neutron-12.0.1/neutron/services/qos/qos_plugin.py 2018-03-29 17:33:26.000000000 +0000 @@ -93,7 +93,8 @@ if policy_id is None: return - policy = policy_object.QosPolicy.get_object(context, id=policy_id) + policy = policy_object.QosPolicy.get_object( + context.elevated(), id=policy_id) self.validate_policy_for_port(policy, port) def _validate_update_port_callback(self, resource, event, trigger, @@ -108,7 +109,9 @@ updated_port = ports_object.Port.get_object( context, id=kwargs['port']['id']) - policy = policy_object.QosPolicy.get_object(context, id=policy_id) + + policy = policy_object.QosPolicy.get_object( + context.elevated(), id=policy_id) self.validate_policy_for_port(policy, updated_port) @@ -124,7 +127,8 @@ if policy_id is None or policy_id == original_policy_id: return - policy = policy_object.QosPolicy.get_object(context, id=policy_id) + policy = policy_object.QosPolicy.get_object( + context.elevated(), id=policy_id) ports = ports_object.Port.get_objects( context, network_id=updated_network['id']) # Filter only this ports which don't have overwritten policy @@ -314,6 +318,7 @@ policy = self._get_policy_obj(context, policy_id) checker.check_bandwidth_rule_conflict(policy, rule_data) rule = rule_cls(context, qos_policy_id=policy_id, **rule_data) + checker.check_rules_conflict(policy, rule) rule.create() policy.obj_load_attr('rules') self.validate_policy(context, policy) @@ -353,6 +358,7 @@ policy.get_rule_by_id(rule_id) rule = rule_cls(context, id=rule_id) rule.update_fields(rule_data, reset_changes=True) + checker.check_rules_conflict(policy, rule) rule.update() policy.obj_load_attr('rules') self.validate_policy(context, policy) diff -Nru neutron-12.0.0/neutron/tests/contrib/hooks/ubuntu_image neutron-12.0.1/neutron/tests/contrib/hooks/ubuntu_image --- neutron-12.0.0/neutron/tests/contrib/hooks/ubuntu_image 2018-02-28 11:30:29.000000000 +0000 +++ neutron-12.0.1/neutron/tests/contrib/hooks/ubuntu_image 2018-03-29 17:33:08.000000000 +0000 @@ -2,7 +2,7 @@ IMAGE_URLS="http://cloud-images.ubuntu.com/releases/16.04/release-20170113/ubuntu-16.04-server-cloudimg-amd64-disk1.img," DEFAULT_INSTANCE_TYPE=ds512M DEFAULT_INSTANCE_USER=ubuntu -BUILD_TIMEOUT=392 +BUILD_TIMEOUT=784 [[test-config|$TEMPEST_CONFIG]] diff -Nru neutron-12.0.0/neutron/tests/fullstack/resources/machine.py neutron-12.0.1/neutron/tests/fullstack/resources/machine.py --- neutron-12.0.0/neutron/tests/fullstack/resources/machine.py 2018-02-28 11:30:39.000000000 +0000 +++ neutron-12.0.1/neutron/tests/fullstack/resources/machine.py 2018-03-29 17:33:08.000000000 +0000 @@ -137,7 +137,8 @@ cmd = ["dhclient", '-sf', self.NO_RESOLV_CONF_DHCLIENT_SCRIPT_PATH, '--no-pid', '-d', self.port.name] self.dhclient_async = async_process.AsyncProcess( - cmd, run_as_root=True, namespace=self.namespace) + cmd, run_as_root=True, respawn_interval=5, + namespace=self.namespace) self.dhclient_async.start() def _stop_async_dhclient(self): diff -Nru neutron-12.0.0/neutron/tests/fullstack/test_connectivity.py neutron-12.0.1/neutron/tests/fullstack/test_connectivity.py --- neutron-12.0.0/neutron/tests/fullstack/test_connectivity.py 2018-02-28 11:30:39.000000000 +0000 +++ neutron-12.0.1/neutron/tests/fullstack/test_connectivity.py 2018-03-29 17:33:08.000000000 +0000 @@ -21,7 +21,6 @@ import testscenarios from neutron.common import utils as common_utils -from neutron.tests import base as tests_base from neutron.tests.common import net_helpers from neutron.tests.fullstack import base from neutron.tests.fullstack.resources import config @@ -117,7 +116,6 @@ scenarios = testscenarios.multiply_scenarios( network_scenarios, utils.get_ovs_interface_scenarios()) - @tests_base.unstable_test("bug 1728948") def test_connectivity(self): self._test_connectivity() @@ -190,7 +188,6 @@ 'l2_pop': True}) ] - @tests_base.unstable_test("bug 1728948") def test_connectivity(self): self._test_connectivity() @@ -209,7 +206,6 @@ l2_pop = False of_interface = 'native' - @tests_base.unstable_test("bug 1728948") def test_connectivity(self): self._test_connectivity() diff -Nru neutron-12.0.0/neutron/tests/functional/services/l3_router/test_l3_dvr_router_plugin.py neutron-12.0.1/neutron/tests/functional/services/l3_router/test_l3_dvr_router_plugin.py --- neutron-12.0.0/neutron/tests/functional/services/l3_router/test_l3_dvr_router_plugin.py 2018-02-28 11:30:39.000000000 +0000 +++ neutron-12.0.1/neutron/tests/functional/services/l3_router/test_l3_dvr_router_plugin.py 2018-03-29 17:33:26.000000000 +0000 @@ -969,6 +969,16 @@ self.context, self.l3_agent['host'], [router['id']])) floatingips = router_info[0][constants.FLOATINGIP_KEY] self.assertTrue(floatingips[0][n_const.DVR_SNAT_BOUND]) + # Test case to make sure when an agent in this case + # dvr_no_external restarts and does a full sync, we need + # to make sure that the returned router_info has + # DVR_SNAT_BOUND flag enabled, otherwise the floating IP + # state would error out. + router_sync_info = ( + self.l3_plugin.list_active_sync_routers_on_active_l3_agent( + self.context, HOST1, [router['id']])) + floatingips = router_sync_info[0][constants.FLOATINGIP_KEY] + self.assertTrue(floatingips[0][n_const.DVR_SNAT_BOUND]) def test_allowed_addr_pairs_delayed_fip_and_update_arp_entry(self): HOST1 = 'host1' diff -Nru neutron-12.0.0/neutron/tests/unit/agent/common/test_ovs_lib.py neutron-12.0.1/neutron/tests/unit/agent/common/test_ovs_lib.py --- neutron-12.0.0/neutron/tests/unit/agent/common/test_ovs_lib.py 2018-02-28 11:30:29.000000000 +0000 +++ neutron-12.0.1/neutron/tests/unit/agent/common/test_ovs_lib.py 2018-03-29 17:33:08.000000000 +0000 @@ -1054,9 +1054,9 @@ def test_apply_on_exit(self): expected_calls = [ - mock.call('add', [self.add_flow_dict1]), - mock.call('mod', [self.mod_flow_dict1]), - mock.call('del', [self.del_flow_dict1]), + mock.call('add', [self.add_flow_dict1], False), + mock.call('mod', [self.mod_flow_dict1], False), + mock.call('del', [self.del_flow_dict1], False), ] with ovs_lib.DeferredOVSBridge(self.br) as deferred_br: @@ -1080,9 +1080,9 @@ def test_apply(self): expected_calls = [ - mock.call('add', [self.add_flow_dict1]), - mock.call('mod', [self.mod_flow_dict1]), - mock.call('del', [self.del_flow_dict1]), + mock.call('add', [self.add_flow_dict1], False), + mock.call('mod', [self.mod_flow_dict1], False), + mock.call('del', [self.del_flow_dict1], False), ] with ovs_lib.DeferredOVSBridge(self.br) as deferred_br: @@ -1096,9 +1096,12 @@ def test_apply_order(self): expected_calls = [ - mock.call('del', [self.del_flow_dict1, self.del_flow_dict2]), - mock.call('mod', [self.mod_flow_dict1, self.mod_flow_dict2]), - mock.call('add', [self.add_flow_dict1, self.add_flow_dict2]), + mock.call( + 'del', [self.del_flow_dict1, self.del_flow_dict2], False), + mock.call( + 'mod', [self.mod_flow_dict1, self.mod_flow_dict2], False), + mock.call( + 'add', [self.add_flow_dict1, self.add_flow_dict2], False), ] order = 'del', 'mod', 'add' @@ -1113,11 +1116,12 @@ def test_apply_full_ordered(self): expected_calls = [ - mock.call('add', [self.add_flow_dict1]), - mock.call('mod', [self.mod_flow_dict1]), - mock.call('del', [self.del_flow_dict1, self.del_flow_dict2]), - mock.call('add', [self.add_flow_dict2]), - mock.call('mod', [self.mod_flow_dict2]), + mock.call('add', [self.add_flow_dict1], False), + mock.call('mod', [self.mod_flow_dict1], False), + mock.call( + 'del', [self.del_flow_dict1, self.del_flow_dict2], False), + mock.call('add', [self.add_flow_dict2], False), + mock.call('mod', [self.mod_flow_dict2], False), ] with ovs_lib.DeferredOVSBridge(self.br, @@ -1160,3 +1164,12 @@ deferred_br.add_flow(actions='drop') deferred_br.mod_flow(actions='drop') f.assert_has_calls(expected_calls) + + @vsctl_only + def test_add_flow_with_bundle(self): + br = ovs_lib.OVSBridge("foo") + deferred = br.deferred(use_bundle=True) + with mock.patch.object(utils, "execute", spec=utils.execute) as mexec: + deferred.add_flow(in_port=1, actions='drop') + deferred.apply_flows() + self.assertIn('--bundle', mexec.call_args[0][0]) diff -Nru neutron-12.0.0/neutron/tests/unit/agent/dhcp/test_agent.py neutron-12.0.1/neutron/tests/unit/agent/dhcp/test_agent.py --- neutron-12.0.0/neutron/tests/unit/agent/dhcp/test_agent.py 2018-02-28 11:30:29.000000000 +0000 +++ neutron-12.0.1/neutron/tests/unit/agent/dhcp/test_agent.py 2018-03-29 17:33:08.000000000 +0000 @@ -1013,12 +1013,15 @@ payload = dict(port=fake_port2) self.cache.get_network_by_id.return_value = fake_network self.cache.get_port_by_id.return_value = fake_port2 - self.dhcp.port_update_end(None, payload) - self.cache.assert_has_calls( - [mock.call.get_network_by_id(fake_port2.network_id), - mock.call.put_port(mock.ANY)]) - self.call_driver.assert_called_once_with('reload_allocations', - fake_network) + with mock.patch.object( + self.dhcp, 'update_isolated_metadata_proxy') as ump: + self.dhcp.port_update_end(None, payload) + self.cache.assert_has_calls( + [mock.call.get_network_by_id(fake_port2.network_id), + mock.call.put_port(mock.ANY)]) + self.call_driver.assert_called_once_with('reload_allocations', + fake_network) + self.assertTrue(ump.called) def test_port_update_end_grabs_lock(self): payload = dict(port=fake_port2) @@ -1034,12 +1037,15 @@ updated_fake_port1 = copy.deepcopy(fake_port1) updated_fake_port1.fixed_ips[0].ip_address = '172.9.9.99' self.cache.get_port_by_id.return_value = updated_fake_port1 - self.dhcp.port_update_end(None, payload) - self.cache.assert_has_calls( - [mock.call.get_network_by_id(fake_port1.network_id), - mock.call.put_port(mock.ANY)]) - self.call_driver.assert_has_calls( - [mock.call.call_driver('reload_allocations', fake_network)]) + with mock.patch.object( + self.dhcp, 'update_isolated_metadata_proxy') as ump: + self.dhcp.port_update_end(None, payload) + self.cache.assert_has_calls( + [mock.call.get_network_by_id(fake_port1.network_id), + mock.call.put_port(mock.ANY)]) + self.call_driver.assert_has_calls( + [mock.call.call_driver('reload_allocations', fake_network)]) + self.assertTrue(ump.called) def test_port_update_change_subnet_on_dhcp_agents_port(self): self.cache.get_network_by_id.return_value = fake_network @@ -1092,15 +1098,18 @@ self.cache.get_network_by_id.return_value = fake_network self.cache.get_port_by_id.return_value = fake_port2 - self.dhcp.port_delete_end(None, payload) - self.cache.assert_has_calls( - [mock.call.get_port_by_id(fake_port2.id), - mock.call.deleted_ports.add(fake_port2.id), - mock.call.get_port_by_id(fake_port2.id), - mock.call.get_network_by_id(fake_network.id), - mock.call.remove_port(fake_port2)]) - self.call_driver.assert_has_calls( - [mock.call.call_driver('reload_allocations', fake_network)]) + with mock.patch.object( + self.dhcp, 'update_isolated_metadata_proxy') as ump: + self.dhcp.port_delete_end(None, payload) + self.cache.assert_has_calls( + [mock.call.get_port_by_id(fake_port2.id), + mock.call.deleted_ports.add(fake_port2.id), + mock.call.get_port_by_id(fake_port2.id), + mock.call.get_network_by_id(fake_network.id), + mock.call.remove_port(fake_port2)]) + self.call_driver.assert_has_calls( + [mock.call.call_driver('reload_allocations', fake_network)]) + self.assertTrue(ump.called) def test_port_delete_end_unknown_port(self): payload = dict(port_id='unknown') diff -Nru neutron-12.0.0/neutron/tests/unit/agent/linux/test_iptables_firewall.py neutron-12.0.1/neutron/tests/unit/agent/linux/test_iptables_firewall.py --- neutron-12.0.0/neutron/tests/unit/agent/linux/test_iptables_firewall.py 2018-02-28 11:30:39.000000000 +0000 +++ neutron-12.0.1/neutron/tests/unit/agent/linux/test_iptables_firewall.py 2018-03-29 17:33:26.000000000 +0000 @@ -70,6 +70,7 @@ class BaseIptablesFirewallTestCase(base.BaseTestCase): def setUp(self): super(BaseIptablesFirewallTestCase, self).setUp() + mock.patch('eventlet.spawn_n').start() security_config.register_securitygroups_opts() agent_config.register_root_helper(cfg.CONF) cfg.CONF.set_override('comment_iptables_rules', False, 'AGENT') @@ -1079,6 +1080,68 @@ ingress = None self._test_prepare_port_filter(rule, ingress, egress) + def _test_process_trusted_ports(self, configured): + port = self._fake_port() + port['id'] = 'tapfake_dev' + + calls = [ + mock.call.add_chain('sg-fallback'), + mock.call.add_rule('sg-fallback', + '-j DROP', comment=ic.UNMATCH_DROP)] + + if configured: + self.firewall.trusted_ports.append(port['id']) + else: + calls.append( + mock.call.add_rule('FORWARD', + '-m physdev --physdev-out tapfake_dev ' + '--physdev-is-bridged ' + '-j ACCEPT', comment=ic.TRUSTED_ACCEPT)) + filter_inst = self.v4filter_inst + self.firewall.process_trusted_ports([port['id']]) + + comb = zip(calls, filter_inst.mock_calls) + for (l, r) in comb: + self.assertEqual(l, r) + filter_inst.assert_has_calls(calls) + self.assertIn(port['id'], self.firewall.trusted_ports) + + def test_process_trusted_ports(self): + self._test_process_trusted_ports(False) + + def test_process_trusted_ports_already_configured(self): + self._test_process_trusted_ports(True) + + def _test_remove_trusted_ports(self, configured): + port = self._fake_port() + port['id'] = 'tapfake_dev' + + calls = [ + mock.call.add_chain('sg-fallback'), + mock.call.add_rule('sg-fallback', + '-j DROP', comment=ic.UNMATCH_DROP)] + + if configured: + self.firewall.trusted_ports.append(port['id']) + calls.append( + mock.call.remove_rule('FORWARD', + '-m physdev --physdev-out tapfake_dev ' + '--physdev-is-bridged -j ACCEPT')) + filter_inst = self.v4filter_inst + self.firewall.remove_trusted_ports([port['id']]) + + comb = zip(calls, filter_inst.mock_calls) + for (l, r) in comb: + self.assertEqual(l, r) + filter_inst.assert_has_calls(calls) + self.assertNotIn(port['id'], self.firewall.trusted_ports) + + def test_remove_trusted_ports(self): + self._test_remove_trusted_ports(True) + + def test_process_remove_ports_not_configured(self): + self._test_remove_trusted_ports(False) + def _test_prepare_port_filter(self, rule, ingress_expected_call=None, @@ -1247,6 +1310,8 @@ if not ct_zone: self.assertFalse(self.utils_exec.called) return + # process conntrack updates in the queue + self.firewall.ipconntrack._process_queue() cmd = ['conntrack', '-D'] if protocol: cmd.extend(['-p', protocol]) @@ -1335,6 +1400,8 @@ if not ct_zone: self.assertFalse(self.utils_exec.called) return + # process conntrack updates in the queue + self.firewall.ipconntrack._process_queue() calls = self._get_expected_conntrack_calls( [('ipv4', '10.0.0.1'), ('ipv6', 'fe80::1')], ct_zone) self.utils_exec.assert_has_calls(calls) @@ -1398,6 +1465,8 @@ ips = {"ipv4": ['10.0.0.1', '10.0.0.2'], "ipv6": ['fe80::1', 'fe80::2']} calls = [] + # process conntrack updates in the queue + self.firewall.ipconntrack._process_queue() for direction in ['ingress', 'egress']: direction = '-d' if direction == 'ingress' else '-s' remote_ip_direction = '-s' if direction == '-d' else '-d' @@ -1642,6 +1711,8 @@ if not ct_zone: self.assertFalse(self.utils_exec.called) return + # process conntrack updates in the queue + self.firewall.ipconntrack._process_queue() calls = self._get_expected_conntrack_calls( [('ipv4', '10.0.0.1'), ('ipv6', 'fe80::1')], ct_zone) self.utils_exec.assert_has_calls(calls) diff -Nru neutron-12.0.0/neutron/tests/unit/agent/test_securitygroups_rpc.py neutron-12.0.1/neutron/tests/unit/agent/test_securitygroups_rpc.py --- neutron-12.0.0/neutron/tests/unit/agent/test_securitygroups_rpc.py 2018-02-28 11:30:29.000000000 +0000 +++ neutron-12.0.1/neutron/tests/unit/agent/test_securitygroups_rpc.py 2018-03-29 17:33:08.000000000 +0000 @@ -775,6 +775,18 @@ self.assertEqual(agent.firewall.__class__.__name__, 'NoopFirewallDriver') + def test_get_trusted_devices(self): + agent = sg_rpc.SecurityGroupAgentRpc( + context=None, plugin_rpc=mock.Mock()) + device_ids = ['port_1_id', 'tap_2', 'tap_3', 'port_4_id'] + devices = { + 'port_1_id': {'device': 'tap_1'}, + 'port_3_id': {'device': 'tap_3'}, + } + trusted_devices = agent._get_trusted_devices( + device_ids, devices) + self.assertEqual(['tap_2', 'port_4_id'], trusted_devices) + class BaseSecurityGroupAgentRpcTestCase(base.BaseTestCase): def setUp(self, defer_refresh_firewall=False): @@ -1371,6 +1383,7 @@ IPTABLES_ARG['port1'] = 'port1' IPTABLES_ARG['port2'] = 'port2' +IPTABLES_ARG['port3'] = 'port3' IPTABLES_ARG['mac1'] = '12:34:56:78:9A:BC' IPTABLES_ARG['mac2'] = '12:34:56:78:9A:BD' IPTABLES_ARG['ip1'] = '10.0.0.3/32' @@ -1751,7 +1764,7 @@ # Completed by iptables_manager """ % IPTABLES_ARG -IPSET_FILTER_2_3 = """# Generated by iptables_manager +IPSET_FILTER_2_TRUSTED = """# Generated by iptables_manager *filter :FORWARD - [0:0] :INPUT - [0:0] @@ -1775,13 +1788,103 @@ -I OUTPUT 1 -j neutron-filter-top -I OUTPUT 2 -j %(bn)s-OUTPUT -I neutron-filter-top 1 -j %(bn)s-local --I %(bn)s-FORWARD 1 %(physdev_mod)s --physdev-INGRESS tap_%(port1)s \ +-I %(bn)s-FORWARD 1 %(physdev_mod)s --physdev-INGRESS tap_%(port3)s \ +%(physdev_is_bridged)s -j ACCEPT +-I %(bn)s-FORWARD 2 %(physdev_mod)s --physdev-INGRESS tap_%(port1)s \ %(physdev_is_bridged)s -j %(bn)s-sg-chain --I %(bn)s-FORWARD 2 %(physdev_mod)s --physdev-EGRESS tap_%(port1)s \ +-I %(bn)s-FORWARD 3 %(physdev_mod)s --physdev-EGRESS tap_%(port1)s \ %(physdev_is_bridged)s -j %(bn)s-sg-chain --I %(bn)s-FORWARD 3 %(physdev_mod)s --physdev-INGRESS tap_%(port2)s \ +-I %(bn)s-FORWARD 4 %(physdev_mod)s --physdev-INGRESS tap_%(port2)s \ %(physdev_is_bridged)s -j %(bn)s-sg-chain --I %(bn)s-FORWARD 4 %(physdev_mod)s --physdev-EGRESS tap_%(port2)s \ +-I %(bn)s-FORWARD 5 %(physdev_mod)s --physdev-EGRESS tap_%(port2)s \ +%(physdev_is_bridged)s -j %(bn)s-sg-chain +-I %(bn)s-INPUT 1 %(physdev_mod)s --physdev-EGRESS tap_%(port1)s \ +%(physdev_is_bridged)s -j %(bn)s-o_%(port1)s +-I %(bn)s-INPUT 2 %(physdev_mod)s --physdev-EGRESS tap_%(port2)s \ +%(physdev_is_bridged)s -j %(bn)s-o_%(port2)s +-I %(bn)s-i_%(port1)s 1 -m state --state RELATED,ESTABLISHED -j RETURN +-I %(bn)s-i_%(port1)s 2 -s 10.0.0.2/32 -p udp -m udp --sport 67 \ +--dport 68 -j RETURN +-I %(bn)s-i_%(port1)s 3 -p tcp -m tcp --dport 22 -j RETURN +-I %(bn)s-i_%(port1)s 4 -m set --match-set NIPv4security_group1 src -j RETURN +-I %(bn)s-i_%(port1)s 5 -m state --state INVALID -j DROP +-I %(bn)s-i_%(port1)s 6 -j %(bn)s-sg-fallback +-I %(bn)s-i_%(port2)s 1 -m state --state RELATED,ESTABLISHED -j RETURN +-I %(bn)s-i_%(port2)s 2 -s 10.0.0.2/32 -p udp -m udp --sport 67 \ +--dport 68 -j RETURN +-I %(bn)s-i_%(port2)s 3 -p tcp -m tcp --dport 22 -j RETURN +-I %(bn)s-i_%(port2)s 4 -m set --match-set NIPv4security_group1 src -j RETURN +-I %(bn)s-i_%(port2)s 5 -m state --state INVALID -j DROP +-I %(bn)s-i_%(port2)s 6 -j %(bn)s-sg-fallback +-I %(bn)s-o_%(port1)s 1 -s 0.0.0.0/32 -d 255.255.255.255/32 -p udp -m udp \ +--sport 68 --dport 67 -j RETURN +-I %(bn)s-o_%(port1)s 2 -j %(bn)s-s_%(port1)s +-I %(bn)s-o_%(port1)s 3 -p udp -m udp --sport 68 --dport 67 -j RETURN +-I %(bn)s-o_%(port1)s 4 -p udp -m udp --sport 67 --dport 68 -j DROP +-I %(bn)s-o_%(port1)s 5 -m state --state RELATED,ESTABLISHED -j RETURN +-I %(bn)s-o_%(port1)s 6 -j RETURN +-I %(bn)s-o_%(port1)s 7 -m state --state INVALID -j DROP +-I %(bn)s-o_%(port1)s 8 -j %(bn)s-sg-fallback +-I %(bn)s-o_%(port2)s 1 -s 0.0.0.0/32 -d 255.255.255.255/32 -p udp -m udp \ +--sport 68 --dport 67 -j RETURN +-I %(bn)s-o_%(port2)s 2 -j %(bn)s-s_%(port2)s +-I %(bn)s-o_%(port2)s 3 -p udp -m udp --sport 68 --dport 67 -j RETURN +-I %(bn)s-o_%(port2)s 4 -p udp -m udp --sport 67 --dport 68 -j DROP +-I %(bn)s-o_%(port2)s 5 -m state --state RELATED,ESTABLISHED -j RETURN +-I %(bn)s-o_%(port2)s 6 -j RETURN +-I %(bn)s-o_%(port2)s 7 -m state --state INVALID -j DROP +-I %(bn)s-o_%(port2)s 8 -j %(bn)s-sg-fallback +-I %(bn)s-s_%(port1)s 1 -s %(ip1)s -m mac --mac-source %(mac1)s -j RETURN +-I %(bn)s-s_%(port1)s 2 -j DROP +-I %(bn)s-s_%(port2)s 1 -s %(ip2)s -m mac --mac-source %(mac2)s -j RETURN +-I %(bn)s-s_%(port2)s 2 -j DROP +-I %(bn)s-sg-chain 1 %(physdev_mod)s --physdev-INGRESS tap_%(port1)s \ +%(physdev_is_bridged)s -j %(bn)s-i_%(port1)s +-I %(bn)s-sg-chain 2 %(physdev_mod)s --physdev-EGRESS tap_%(port1)s \ +%(physdev_is_bridged)s -j %(bn)s-o_%(port1)s +-I %(bn)s-sg-chain 3 %(physdev_mod)s --physdev-INGRESS tap_%(port2)s \ +%(physdev_is_bridged)s -j %(bn)s-i_%(port2)s +-I %(bn)s-sg-chain 4 %(physdev_mod)s --physdev-EGRESS tap_%(port2)s \ +%(physdev_is_bridged)s -j %(bn)s-o_%(port2)s +-I %(bn)s-sg-chain 5 -j ACCEPT +-I %(bn)s-sg-fallback 1 -j DROP +COMMIT +# Completed by iptables_manager +""" % IPTABLES_ARG + +IPSET_FILTER_2_3_TRUSTED = """# Generated by iptables_manager +*filter +:FORWARD - [0:0] +:INPUT - [0:0] +:OUTPUT - [0:0] +:neutron-filter-top - [0:0] +:%(bn)s-(%(chains)s) - [0:0] +:%(bn)s-(%(chains)s) - [0:0] +:%(bn)s-(%(chains)s) - [0:0] +:%(bn)s-(%(chains)s) - [0:0] +:%(bn)s-(%(chains)s) - [0:0] +:%(bn)s-(%(chains)s) - [0:0] +:%(bn)s-(%(chains)s) - [0:0] +:%(bn)s-(%(chains)s) - [0:0] +:%(bn)s-(%(chains)s) - [0:0] +:%(bn)s-(%(chains)s) - [0:0] +:%(bn)s-(%(chains)s) - [0:0] +:%(bn)s-(%(chains)s) - [0:0] +-I FORWARD 1 -j neutron-filter-top +-I FORWARD 2 -j %(bn)s-FORWARD +-I INPUT 1 -j %(bn)s-INPUT +-I OUTPUT 1 -j neutron-filter-top +-I OUTPUT 2 -j %(bn)s-OUTPUT +-I neutron-filter-top 1 -j %(bn)s-local +-I %(bn)s-FORWARD 1 %(physdev_mod)s --physdev-INGRESS tap_%(port3)s \ +%(physdev_is_bridged)s -j ACCEPT +-I %(bn)s-FORWARD 2 %(physdev_mod)s --physdev-INGRESS tap_%(port1)s \ +%(physdev_is_bridged)s -j %(bn)s-sg-chain +-I %(bn)s-FORWARD 3 %(physdev_mod)s --physdev-EGRESS tap_%(port1)s \ +%(physdev_is_bridged)s -j %(bn)s-sg-chain +-I %(bn)s-FORWARD 4 %(physdev_mod)s --physdev-INGRESS tap_%(port2)s \ +%(physdev_is_bridged)s -j %(bn)s-sg-chain +-I %(bn)s-FORWARD 5 %(physdev_mod)s --physdev-EGRESS tap_%(port2)s \ %(physdev_is_bridged)s -j %(bn)s-sg-chain -I %(bn)s-INPUT 1 %(physdev_mod)s --physdev-EGRESS tap_%(port1)s \ %(physdev_is_bridged)s -j %(bn)s-o_%(port1)s @@ -1925,6 +2028,94 @@ # Completed by iptables_manager """ % IPTABLES_ARG +IPTABLES_FILTER_2_TRUSTED = """# Generated by iptables_manager +*filter +:FORWARD - [0:0] +:INPUT - [0:0] +:OUTPUT - [0:0] +:neutron-filter-top - [0:0] +:%(bn)s-(%(chains)s) - [0:0] +:%(bn)s-(%(chains)s) - [0:0] +:%(bn)s-(%(chains)s) - [0:0] +:%(bn)s-(%(chains)s) - [0:0] +:%(bn)s-(%(chains)s) - [0:0] +:%(bn)s-(%(chains)s) - [0:0] +:%(bn)s-(%(chains)s) - [0:0] +:%(bn)s-(%(chains)s) - [0:0] +:%(bn)s-(%(chains)s) - [0:0] +:%(bn)s-(%(chains)s) - [0:0] +:%(bn)s-(%(chains)s) - [0:0] +:%(bn)s-(%(chains)s) - [0:0] +-I FORWARD 1 -j neutron-filter-top +-I FORWARD 2 -j %(bn)s-FORWARD +-I INPUT 1 -j %(bn)s-INPUT +-I OUTPUT 1 -j neutron-filter-top +-I OUTPUT 2 -j %(bn)s-OUTPUT +-I neutron-filter-top 1 -j %(bn)s-local +-I %(bn)s-FORWARD 1 %(physdev_mod)s --physdev-INGRESS tap_%(port3)s \ +%(physdev_is_bridged)s -j ACCEPT +-I %(bn)s-FORWARD 2 %(physdev_mod)s --physdev-INGRESS tap_%(port1)s \ +%(physdev_is_bridged)s -j %(bn)s-sg-chain +-I %(bn)s-FORWARD 3 %(physdev_mod)s --physdev-EGRESS tap_%(port1)s \ +%(physdev_is_bridged)s -j %(bn)s-sg-chain +-I %(bn)s-FORWARD 4 %(physdev_mod)s --physdev-INGRESS tap_%(port2)s \ +%(physdev_is_bridged)s -j %(bn)s-sg-chain +-I %(bn)s-FORWARD 5 %(physdev_mod)s --physdev-EGRESS tap_%(port2)s \ +%(physdev_is_bridged)s -j %(bn)s-sg-chain +-I %(bn)s-INPUT 1 %(physdev_mod)s --physdev-EGRESS tap_%(port1)s \ +%(physdev_is_bridged)s -j %(bn)s-o_%(port1)s +-I %(bn)s-INPUT 2 %(physdev_mod)s --physdev-EGRESS tap_%(port2)s \ +%(physdev_is_bridged)s -j %(bn)s-o_%(port2)s +-I %(bn)s-i_%(port1)s 1 -m state --state RELATED,ESTABLISHED -j RETURN +-I %(bn)s-i_%(port1)s 2 -s 10.0.0.2/32 -p udp -m udp --sport 67 \ +--dport 68 -j RETURN +-I %(bn)s-i_%(port1)s 3 -p tcp -m tcp --dport 22 -j RETURN +-I %(bn)s-i_%(port1)s 4 -s %(ip2)s -j RETURN +-I %(bn)s-i_%(port1)s 5 -m state --state INVALID -j DROP +-I %(bn)s-i_%(port1)s 6 -j %(bn)s-sg-fallback +-I %(bn)s-i_%(port2)s 1 -m state --state RELATED,ESTABLISHED -j RETURN +-I %(bn)s-i_%(port2)s 2 -s 10.0.0.2/32 -p udp -m udp --sport 67 \ +--dport 68 -j RETURN +-I %(bn)s-i_%(port2)s 3 -p tcp -m tcp --dport 22 -j RETURN +-I %(bn)s-i_%(port2)s 4 -s %(ip1)s -j RETURN +-I %(bn)s-i_%(port2)s 5 -m state --state INVALID -j DROP +-I %(bn)s-i_%(port2)s 6 -j %(bn)s-sg-fallback +-I %(bn)s-o_%(port1)s 1 -s 0.0.0.0/32 -d 255.255.255.255/32 -p udp -m udp \ +--sport 68 --dport 67 -j RETURN +-I %(bn)s-o_%(port1)s 2 -j %(bn)s-s_%(port1)s +-I %(bn)s-o_%(port1)s 3 -p udp -m udp --sport 68 --dport 67 -j RETURN +-I %(bn)s-o_%(port1)s 4 -p udp -m udp --sport 67 --dport 68 -j DROP +-I %(bn)s-o_%(port1)s 5 -m state --state RELATED,ESTABLISHED -j RETURN +-I %(bn)s-o_%(port1)s 6 -j RETURN +-I %(bn)s-o_%(port1)s 7 -m state --state INVALID -j DROP +-I %(bn)s-o_%(port1)s 8 -j %(bn)s-sg-fallback +-I %(bn)s-o_%(port2)s 1 -s 0.0.0.0/32 -d 255.255.255.255/32 -p udp -m udp \ +--sport 68 --dport 67 -j RETURN +-I %(bn)s-o_%(port2)s 2 -j %(bn)s-s_%(port2)s +-I %(bn)s-o_%(port2)s 3 -p udp -m udp --sport 68 --dport 67 -j RETURN +-I %(bn)s-o_%(port2)s 4 -p udp -m udp --sport 67 --dport 68 -j DROP +-I %(bn)s-o_%(port2)s 5 -m state --state RELATED,ESTABLISHED -j RETURN +-I %(bn)s-o_%(port2)s 6 -j RETURN +-I %(bn)s-o_%(port2)s 7 -m state --state INVALID -j DROP +-I %(bn)s-o_%(port2)s 8 -j %(bn)s-sg-fallback +-I %(bn)s-s_%(port1)s 1 -s %(ip1)s -m mac --mac-source %(mac1)s -j RETURN +-I %(bn)s-s_%(port1)s 2 -j DROP +-I %(bn)s-s_%(port2)s 1 -s %(ip2)s -m mac --mac-source %(mac2)s -j RETURN +-I %(bn)s-s_%(port2)s 2 -j DROP +-I %(bn)s-sg-chain 1 %(physdev_mod)s --physdev-INGRESS tap_%(port1)s \ +%(physdev_is_bridged)s -j %(bn)s-i_%(port1)s +-I %(bn)s-sg-chain 2 %(physdev_mod)s --physdev-EGRESS tap_%(port1)s \ +%(physdev_is_bridged)s -j %(bn)s-o_%(port1)s +-I %(bn)s-sg-chain 3 %(physdev_mod)s --physdev-INGRESS tap_%(port2)s \ +%(physdev_is_bridged)s -j %(bn)s-i_%(port2)s +-I %(bn)s-sg-chain 4 %(physdev_mod)s --physdev-EGRESS tap_%(port2)s \ +%(physdev_is_bridged)s -j %(bn)s-o_%(port2)s +-I %(bn)s-sg-chain 5 -j ACCEPT +-I %(bn)s-sg-fallback 1 -j DROP +COMMIT +# Completed by iptables_manager +""" % IPTABLES_ARG + IPTABLES_FILTER_2_2 = """# Generated by iptables_manager *filter :FORWARD - [0:0] @@ -2098,6 +2289,95 @@ # Completed by iptables_manager """ % IPTABLES_ARG +IPTABLES_FILTER_2_3_TRUSTED = """# Generated by iptables_manager +*filter +:FORWARD - [0:0] +:INPUT - [0:0] +:OUTPUT - [0:0] +:neutron-filter-top - [0:0] +:%(bn)s-(%(chains)s) - [0:0] +:%(bn)s-(%(chains)s) - [0:0] +:%(bn)s-(%(chains)s) - [0:0] +:%(bn)s-(%(chains)s) - [0:0] +:%(bn)s-(%(chains)s) - [0:0] +:%(bn)s-(%(chains)s) - [0:0] +:%(bn)s-(%(chains)s) - [0:0] +:%(bn)s-(%(chains)s) - [0:0] +:%(bn)s-(%(chains)s) - [0:0] +:%(bn)s-(%(chains)s) - [0:0] +:%(bn)s-(%(chains)s) - [0:0] +:%(bn)s-(%(chains)s) - [0:0] +-I FORWARD 1 -j neutron-filter-top +-I FORWARD 2 -j %(bn)s-FORWARD +-I INPUT 1 -j %(bn)s-INPUT +-I OUTPUT 1 -j neutron-filter-top +-I OUTPUT 2 -j %(bn)s-OUTPUT +-I neutron-filter-top 1 -j %(bn)s-local +-I %(bn)s-FORWARD 1 %(physdev_mod)s --physdev-INGRESS tap_%(port3)s \ +%(physdev_is_bridged)s -j ACCEPT +-I %(bn)s-FORWARD 2 %(physdev_mod)s --physdev-INGRESS tap_%(port1)s \ +%(physdev_is_bridged)s -j %(bn)s-sg-chain +-I %(bn)s-FORWARD 3 %(physdev_mod)s --physdev-EGRESS tap_%(port1)s \ +%(physdev_is_bridged)s -j %(bn)s-sg-chain +-I %(bn)s-FORWARD 4 %(physdev_mod)s --physdev-INGRESS tap_%(port2)s \ +%(physdev_is_bridged)s -j %(bn)s-sg-chain +-I %(bn)s-FORWARD 5 %(physdev_mod)s --physdev-EGRESS tap_%(port2)s \ +%(physdev_is_bridged)s -j %(bn)s-sg-chain +-I %(bn)s-INPUT 1 %(physdev_mod)s --physdev-EGRESS tap_%(port1)s \ +%(physdev_is_bridged)s -j %(bn)s-o_%(port1)s +-I %(bn)s-INPUT 2 %(physdev_mod)s --physdev-EGRESS tap_%(port2)s \ +%(physdev_is_bridged)s -j %(bn)s-o_%(port2)s +-I %(bn)s-i_%(port1)s 1 -m state --state RELATED,ESTABLISHED -j RETURN +-I %(bn)s-i_%(port1)s 2 -s 10.0.0.2/32 -p udp -m udp --sport 67 \ +--dport 68 -j RETURN +-I %(bn)s-i_%(port1)s 3 -p tcp -m tcp --dport 22 -j RETURN +-I %(bn)s-i_%(port1)s 4 -s %(ip2)s -j RETURN +-I %(bn)s-i_%(port1)s 5 -p icmp -j RETURN +-I %(bn)s-i_%(port1)s 6 -m state --state INVALID -j DROP +-I %(bn)s-i_%(port1)s 7 -j %(bn)s-sg-fallback +-I %(bn)s-i_%(port2)s 1 -m state --state RELATED,ESTABLISHED -j RETURN +-I %(bn)s-i_%(port2)s 2 -s 10.0.0.2/32 -p udp -m udp --sport 67 \ +--dport 68 -j RETURN +-I %(bn)s-i_%(port2)s 3 -p tcp -m tcp --dport 22 -j RETURN +-I %(bn)s-i_%(port2)s 4 -s %(ip1)s -j RETURN +-I %(bn)s-i_%(port2)s 5 -p icmp -j RETURN +-I %(bn)s-i_%(port2)s 6 -m state --state INVALID -j DROP +-I %(bn)s-i_%(port2)s 7 -j %(bn)s-sg-fallback +-I %(bn)s-o_%(port1)s 1 -s 0.0.0.0/32 -d 255.255.255.255/32 -p udp -m udp \ +--sport 68 --dport 67 -j RETURN +-I %(bn)s-o_%(port1)s 2 -j %(bn)s-s_%(port1)s +-I %(bn)s-o_%(port1)s 3 -p udp -m udp --sport 68 --dport 67 -j RETURN +-I %(bn)s-o_%(port1)s 4 -p udp -m udp --sport 67 --dport 68 -j DROP +-I %(bn)s-o_%(port1)s 5 -m state --state RELATED,ESTABLISHED -j RETURN +-I %(bn)s-o_%(port1)s 6 -j RETURN +-I %(bn)s-o_%(port1)s 7 -m state --state INVALID -j DROP +-I %(bn)s-o_%(port1)s 8 -j %(bn)s-sg-fallback +-I %(bn)s-o_%(port2)s 1 -s 0.0.0.0/32 -d 255.255.255.255/32 -p udp -m udp \ +--sport 68 --dport 67 -j RETURN +-I %(bn)s-o_%(port2)s 2 -j %(bn)s-s_%(port2)s +-I %(bn)s-o_%(port2)s 3 -p udp -m udp --sport 68 --dport 67 -j RETURN +-I %(bn)s-o_%(port2)s 4 -p udp -m udp --sport 67 --dport 68 -j DROP +-I %(bn)s-o_%(port2)s 5 -m state --state RELATED,ESTABLISHED -j RETURN +-I %(bn)s-o_%(port2)s 6 -j RETURN +-I %(bn)s-o_%(port2)s 7 -m state --state INVALID -j DROP +-I %(bn)s-o_%(port2)s 8 -j %(bn)s-sg-fallback +-I %(bn)s-s_%(port1)s 1 -s %(ip1)s -m mac --mac-source %(mac1)s -j RETURN +-I %(bn)s-s_%(port1)s 2 -j DROP +-I %(bn)s-s_%(port2)s 1 -s %(ip2)s -m mac --mac-source %(mac2)s -j RETURN +-I %(bn)s-s_%(port2)s 2 -j DROP +-I %(bn)s-sg-chain 1 %(physdev_mod)s --physdev-INGRESS tap_%(port1)s \ +%(physdev_is_bridged)s -j %(bn)s-i_%(port1)s +-I %(bn)s-sg-chain 2 %(physdev_mod)s --physdev-EGRESS tap_%(port1)s \ +%(physdev_is_bridged)s -j %(bn)s-o_%(port1)s +-I %(bn)s-sg-chain 3 %(physdev_mod)s --physdev-INGRESS tap_%(port2)s \ +%(physdev_is_bridged)s -j %(bn)s-i_%(port2)s +-I %(bn)s-sg-chain 4 %(physdev_mod)s --physdev-EGRESS tap_%(port2)s \ +%(physdev_is_bridged)s -j %(bn)s-o_%(port2)s +-I %(bn)s-sg-chain 5 -j ACCEPT +-I %(bn)s-sg-fallback 1 -j DROP +COMMIT +# Completed by iptables_manager +""" % IPTABLES_ARG IPTABLES_ARG['chains'] = CHAINS_EMPTY IPTABLES_FILTER_EMPTY = """# Generated by iptables_manager @@ -2269,6 +2549,94 @@ # Completed by iptables_manager """ % IPTABLES_ARG +IPTABLES_FILTER_V6_2_TRUSTED = """# Generated by iptables_manager +*filter +:FORWARD - [0:0] +:INPUT - [0:0] +:OUTPUT - [0:0] +:neutron-filter-top - [0:0] +:%(bn)s-(%(chains)s) - [0:0] +:%(bn)s-(%(chains)s) - [0:0] +:%(bn)s-(%(chains)s) - [0:0] +:%(bn)s-(%(chains)s) - [0:0] +:%(bn)s-(%(chains)s) - [0:0] +:%(bn)s-(%(chains)s) - [0:0] +:%(bn)s-(%(chains)s) - [0:0] +:%(bn)s-(%(chains)s) - [0:0] +:%(bn)s-(%(chains)s) - [0:0] +:%(bn)s-(%(chains)s) - [0:0] +-I FORWARD 1 -j neutron-filter-top +-I FORWARD 2 -j %(bn)s-FORWARD +-I INPUT 1 -j %(bn)s-INPUT +-I OUTPUT 1 -j neutron-filter-top +-I OUTPUT 2 -j %(bn)s-OUTPUT +-I neutron-filter-top 1 -j %(bn)s-local +-I %(bn)s-FORWARD 1 %(physdev_mod)s --physdev-INGRESS tap_%(port3)s \ +%(physdev_is_bridged)s -j ACCEPT +-I %(bn)s-FORWARD 2 %(physdev_mod)s --physdev-INGRESS tap_%(port1)s \ +%(physdev_is_bridged)s -j %(bn)s-sg-chain +-I %(bn)s-FORWARD 3 %(physdev_mod)s --physdev-EGRESS tap_%(port1)s \ +%(physdev_is_bridged)s -j %(bn)s-sg-chain +-I %(bn)s-FORWARD 4 %(physdev_mod)s --physdev-INGRESS tap_%(port2)s \ +%(physdev_is_bridged)s -j %(bn)s-sg-chain +-I %(bn)s-FORWARD 5 %(physdev_mod)s --physdev-EGRESS tap_%(port2)s \ +%(physdev_is_bridged)s -j %(bn)s-sg-chain +-I %(bn)s-INPUT 1 %(physdev_mod)s --physdev-EGRESS tap_%(port1)s \ +%(physdev_is_bridged)s -j %(bn)s-o_%(port1)s +-I %(bn)s-INPUT 2 %(physdev_mod)s --physdev-EGRESS tap_%(port2)s \ +%(physdev_is_bridged)s -j %(bn)s-o_%(port2)s +-I %(bn)s-i_%(port1)s 1 -p ipv6-icmp -m icmp6 --icmpv6-type 130 -j RETURN +-I %(bn)s-i_%(port1)s 2 -p ipv6-icmp -m icmp6 --icmpv6-type 135 -j RETURN +-I %(bn)s-i_%(port1)s 3 -p ipv6-icmp -m icmp6 --icmpv6-type 136 -j RETURN +-I %(bn)s-i_%(port1)s 4 -m state --state RELATED,ESTABLISHED -j RETURN +-I %(bn)s-i_%(port1)s 5 -m state --state INVALID -j DROP +-I %(bn)s-i_%(port1)s 6 -j %(bn)s-sg-fallback +-I %(bn)s-i_%(port2)s 1 -p ipv6-icmp -m icmp6 --icmpv6-type 130 -j RETURN +-I %(bn)s-i_%(port2)s 2 -p ipv6-icmp -m icmp6 --icmpv6-type 135 -j RETURN +-I %(bn)s-i_%(port2)s 3 -p ipv6-icmp -m icmp6 --icmpv6-type 136 -j RETURN +-I %(bn)s-i_%(port2)s 4 -m state --state RELATED,ESTABLISHED -j RETURN +-I %(bn)s-i_%(port2)s 5 -m state --state INVALID -j DROP +-I %(bn)s-i_%(port2)s 6 -j %(bn)s-sg-fallback +-I %(bn)s-o_%(port1)s 1 -s ::/128 -d ff02::/16 -p ipv6-icmp -m icmp6 \ +--icmpv6-type 131 -j RETURN +-I %(bn)s-o_%(port1)s 2 -s ::/128 -d ff02::/16 -p ipv6-icmp -m icmp6 \ +--icmpv6-type 135 -j RETURN +-I %(bn)s-o_%(port1)s 3 -s ::/128 -d ff02::/16 -p ipv6-icmp -m icmp6 \ +--icmpv6-type 143 -j RETURN +-I %(bn)s-o_%(port1)s 4 -p ipv6-icmp -m icmp6 --icmpv6-type 134 -j DROP +-I %(bn)s-o_%(port1)s 5 -p ipv6-icmp -j RETURN +-I %(bn)s-o_%(port1)s 6 -p udp -m udp --sport 546 --dport 547 -j RETURN +-I %(bn)s-o_%(port1)s 7 -p udp -m udp --sport 547 --dport 546 -j DROP +-I %(bn)s-o_%(port1)s 8 -m state --state RELATED,ESTABLISHED -j RETURN +-I %(bn)s-o_%(port1)s 9 -m state --state INVALID -j DROP +-I %(bn)s-o_%(port1)s 10 -j %(bn)s-sg-fallback +-I %(bn)s-o_%(port2)s 1 -s ::/128 -d ff02::/16 -p ipv6-icmp -m icmp6 \ +--icmpv6-type 131 -j RETURN +-I %(bn)s-o_%(port2)s 2 -s ::/128 -d ff02::/16 -p ipv6-icmp -m icmp6 \ +--icmpv6-type 135 -j RETURN +-I %(bn)s-o_%(port2)s 3 -s ::/128 -d ff02::/16 -p ipv6-icmp -m icmp6 \ +--icmpv6-type 143 -j RETURN +-I %(bn)s-o_%(port2)s 4 -p ipv6-icmp -m icmp6 --icmpv6-type 134 -j DROP +-I %(bn)s-o_%(port2)s 5 -p ipv6-icmp -j RETURN +-I %(bn)s-o_%(port2)s 6 -p udp -m udp --sport 546 --dport 547 -j RETURN +-I %(bn)s-o_%(port2)s 7 -p udp -m udp --sport 547 --dport 546 -j DROP +-I %(bn)s-o_%(port2)s 8 -m state --state RELATED,ESTABLISHED -j RETURN +-I %(bn)s-o_%(port2)s 9 -m state --state INVALID -j DROP +-I %(bn)s-o_%(port2)s 10 -j %(bn)s-sg-fallback +-I %(bn)s-sg-chain 1 %(physdev_mod)s --physdev-INGRESS tap_%(port1)s \ +%(physdev_is_bridged)s -j %(bn)s-i_%(port1)s +-I %(bn)s-sg-chain 2 %(physdev_mod)s --physdev-EGRESS tap_%(port1)s \ +%(physdev_is_bridged)s -j %(bn)s-o_%(port1)s +-I %(bn)s-sg-chain 3 %(physdev_mod)s --physdev-INGRESS tap_%(port2)s \ +%(physdev_is_bridged)s -j %(bn)s-i_%(port2)s +-I %(bn)s-sg-chain 4 %(physdev_mod)s --physdev-EGRESS tap_%(port2)s \ +%(physdev_is_bridged)s -j %(bn)s-o_%(port2)s +-I %(bn)s-sg-chain 5 -j ACCEPT +-I %(bn)s-sg-fallback 1 -j DROP +COMMIT +# Completed by iptables_manager +""" % IPTABLES_ARG + IPTABLES_ARG['chains'] = CHAINS_EMPTY IPTABLES_FILTER_V6_EMPTY = """# Generated by iptables_manager *filter @@ -2518,10 +2886,12 @@ def test_security_group_rule_updated(self): self.rpc.security_group_rules_for_devices.return_value = self.devices2 - self._replay_iptables(IPTABLES_FILTER_2, IPTABLES_FILTER_V6_2, - IPTABLES_RAW_BRIDGE_NET_2) - self._replay_iptables(IPTABLES_FILTER_2_3, IPTABLES_FILTER_V6_2, - IPTABLES_RAW_BRIDGE_NET_2) + self._replay_iptables( + IPTABLES_FILTER_2_TRUSTED, IPTABLES_FILTER_V6_2_TRUSTED, + IPTABLES_RAW_BRIDGE_NET_2) + self._replay_iptables( + IPTABLES_FILTER_2_3_TRUSTED, IPTABLES_FILTER_V6_2_TRUSTED, + IPTABLES_RAW_BRIDGE_NET_2) self.agent.prepare_devices_filter(['tap_port1', 'tap_port3']) self.rpc.security_group_rules_for_devices.return_value = self.devices3 @@ -2635,10 +3005,12 @@ def test_security_group_rule_updated(self): self.sg_info.return_value = self.devices_info2 - self._replay_iptables(IPTABLES_FILTER_2, IPTABLES_FILTER_V6_2, - IPTABLES_RAW_BRIDGE_NET_2) - self._replay_iptables(IPTABLES_FILTER_2_3, IPTABLES_FILTER_V6_2, - IPTABLES_RAW_BRIDGE_NET_2) + self._replay_iptables( + IPTABLES_FILTER_2_TRUSTED, IPTABLES_FILTER_V6_2_TRUSTED, + IPTABLES_RAW_BRIDGE_NET_2) + self._replay_iptables( + IPTABLES_FILTER_2_3_TRUSTED, IPTABLES_FILTER_V6_2_TRUSTED, + IPTABLES_RAW_BRIDGE_NET_2) self.agent.prepare_devices_filter(['tap_port1', 'tap_port3']) self.sg_info.return_value = self.devices_info3 @@ -2706,10 +3078,12 @@ self.ipset._get_new_set_ips = mock.Mock(return_value=['10.0.0.3']) self.ipset._get_deleted_set_ips = mock.Mock(return_value=[]) self.sg_info.return_value = self.devices_info2 - self._replay_iptables(IPSET_FILTER_2, IPTABLES_FILTER_V6_2, - IPTABLES_RAW_BRIDGE_NET_2) - self._replay_iptables(IPSET_FILTER_2_3, IPTABLES_FILTER_V6_2, - IPTABLES_RAW_BRIDGE_NET_2) + self._replay_iptables( + IPSET_FILTER_2_TRUSTED, IPTABLES_FILTER_V6_2_TRUSTED, + IPTABLES_RAW_BRIDGE_NET_2) + self._replay_iptables( + IPSET_FILTER_2_3_TRUSTED, IPTABLES_FILTER_V6_2_TRUSTED, + IPTABLES_RAW_BRIDGE_NET_2) self.agent.prepare_devices_filter(['tap_port1', 'tap_port3']) self.sg_info.return_value = self.devices_info3 @@ -2829,10 +3203,12 @@ def test_security_group_rule_updated(self): self.ipconntrack._device_zone_map = {} self.rpc.security_group_rules_for_devices.return_value = self.devices2 - self._replay_iptables(IPTABLES_FILTER_2, IPTABLES_FILTER_V6_2, - IPTABLES_RAW_DEVICE_2) - self._replay_iptables(IPTABLES_FILTER_2_3, IPTABLES_FILTER_V6_2, - IPTABLES_RAW_DEVICE_2) + self._replay_iptables( + IPTABLES_FILTER_2_TRUSTED, IPTABLES_FILTER_V6_2_TRUSTED, + IPTABLES_RAW_DEVICE_2) + self._replay_iptables( + IPTABLES_FILTER_2_3_TRUSTED, IPTABLES_FILTER_V6_2_TRUSTED, + IPTABLES_RAW_DEVICE_2) self.agent.prepare_devices_filter(['tap_port1', 'tap_port3']) self.rpc.security_group_rules_for_devices.return_value = self.devices3 diff -Nru neutron-12.0.0/neutron/tests/unit/db/test_l3_db.py neutron-12.0.1/neutron/tests/unit/db/test_l3_db.py --- neutron-12.0.0/neutron/tests/unit/db/test_l3_db.py 2018-02-28 11:30:39.000000000 +0000 +++ neutron-12.0.1/neutron/tests/unit/db/test_l3_db.py 2018-03-29 17:33:08.000000000 +0000 @@ -85,6 +85,22 @@ 'address_scope_id': mock.sentinel.address_scope_id, 'network_id': mock.sentinel.network_id}]}, subnets) + def test__get_mtus_by_network_list(self): + """Basic test that the query get_networks is correctly""" + network = {'id': mock.sentinel.network_id, + 'name': mock.sentinel.name, + 'mtu': mock.sentinel.mtu} + with mock.patch.object(directory, 'get_plugin') as get_p: + get_p().get_networks.return_value = [network] + result = self.db._get_mtus_by_network_list( + mock.sentinel.context, [mock.sentinel.network_id]) + get_p().get_networks.assert_called_once_with( + mock.sentinel.context, + filters={'id': [mock.sentinel.network_id]}, + fields=['id', 'mtu']) + self.assertEqual({mock.sentinel.network_id: mock.sentinel.mtu}, + result) + def test__populate_ports_for_subnets_none(self): """Basic test that the method runs correctly with no ports""" ports = [] diff -Nru neutron-12.0.0/neutron/tests/unit/extensions/test_subnet_service_types.py neutron-12.0.1/neutron/tests/unit/extensions/test_subnet_service_types.py --- neutron-12.0.0/neutron/tests/unit/extensions/test_subnet_service_types.py 2018-02-28 11:30:39.000000000 +0000 +++ neutron-12.0.1/neutron/tests/unit/extensions/test_subnet_service_types.py 2018-03-29 17:33:08.000000000 +0000 @@ -12,6 +12,8 @@ import webob.exc +from neutron_lib.api.definitions import portbindings + from neutron.db import db_base_plugin_v2 from neutron.db import subnet_service_type_db_models from neutron.extensions import subnet_service_types @@ -40,7 +42,7 @@ """Test plugin to mixin the subnet service_types extension. """ - supported_extension_aliases = ["subnet-service-types"] + supported_extension_aliases = ["subnet-service-types", "binding"] class SubnetServiceTypesExtensionTestCase( @@ -323,6 +325,29 @@ # self._update will fail with a MismatchError if the update cannot be # applied port = self._update('ports', port['id'], data) + + def test_update_port_host_binding(self): + with self.network() as network: + pass + service_type = 'compute:foo' + # Create a subnet with a service_type + self._create_service_subnet([service_type], + cidr=self.CIDRS[1], + network=network) + # Create a port with a matching device owner + network = network['network'] + port = self._create_port(self.fmt, + net_id=network['id'], + tenant_id=network['tenant_id'], + device_owner=service_type, + arg_list=(portbindings.HOST_ID,), + **{portbindings.HOST_ID: 'fakehost'}) + port = self.deserialize('json', port)['port'] + # Update the port's host binding. + data = {'port': {portbindings.HOST_ID: 'fakehost2'}} + # self._update will fail with a MismatchError if the update cannot be + # applied + port = self._update('ports', port['id'], data) class SubnetServiceTypesExtensionTestCasev6( diff -Nru neutron-12.0.0/neutron/tests/unit/objects/qos/test_rule.py neutron-12.0.1/neutron/tests/unit/objects/qos/test_rule.py --- neutron-12.0.0/neutron/tests/unit/objects/qos/test_rule.py 2018-02-28 11:30:39.000000000 +0000 +++ neutron-12.0.1/neutron/tests/unit/objects/qos/test_rule.py 2018-03-29 17:33:08.000000000 +0000 @@ -137,6 +137,26 @@ exception.IncompatibleObjectVersion, rule_obj.obj_to_primitive, '1.2') + def test_duplicate_rules(self): + policy_id = uuidutils.generate_uuid() + ingress_rule_1 = rule.QosBandwidthLimitRule( + self.context, qos_policy_id=policy_id, + max_kbps=1000, max_burst=500, + direction=constants.INGRESS_DIRECTION) + ingress_rule_2 = rule.QosBandwidthLimitRule( + self.context, qos_policy_id=policy_id, + max_kbps=2000, max_burst=500, + direction=constants.INGRESS_DIRECTION) + egress_rule = rule.QosBandwidthLimitRule( + self.context, qos_policy_id=policy_id, + max_kbps=1000, max_burst=500, + direction=constants.EGRESS_DIRECTION) + dscp_rule = rule.QosDscpMarkingRule( + self.context, qos_policy_id=policy_id, dscp_mark=16) + self.assertTrue(ingress_rule_1.duplicates(ingress_rule_2)) + self.assertFalse(ingress_rule_1.duplicates(egress_rule)) + self.assertFalse(ingress_rule_1.duplicates(dscp_rule)) + class QosBandwidthLimitRuleDbObjectTestCase(test_base.BaseDbObjectTestCase, testlib_api.SqlTestCase): @@ -165,6 +185,19 @@ self.assertRaises(exception.IncompatibleObjectVersion, dscp_rule.obj_to_primitive, '1.0') + def test_duplicate_rules(self): + policy_id = uuidutils.generate_uuid() + dscp_rule_1 = rule.QosDscpMarkingRule( + self.context, qos_policy_id=policy_id, dscp_mark=16) + dscp_rule_2 = rule.QosDscpMarkingRule( + self.context, qos_policy_id=policy_id, dscp_mark=32) + bw_limit_rule = rule.QosBandwidthLimitRule( + self.context, qos_policy_id=policy_id, + max_kbps=1000, max_burst=500, + direction=constants.EGRESS_DIRECTION) + self.assertTrue(dscp_rule_1.duplicates(dscp_rule_2)) + self.assertFalse(dscp_rule_1.duplicates(bw_limit_rule)) + class QosDscpMarkingRuleDbObjectTestCase(test_base.BaseDbObjectTestCase, testlib_api.SqlTestCase): @@ -193,6 +226,23 @@ self.assertRaises(exception.IncompatibleObjectVersion, min_bw_rule.obj_to_primitive, version) + def test_duplicate_rules(self): + policy_id = uuidutils.generate_uuid() + ingress_rule_1 = rule.QosMinimumBandwidthRule( + self.context, qos_policy_id=policy_id, + min_kbps=1000, direction=constants.INGRESS_DIRECTION) + ingress_rule_2 = rule.QosMinimumBandwidthRule( + self.context, qos_policy_id=policy_id, + min_kbps=2000, direction=constants.INGRESS_DIRECTION) + egress_rule = rule.QosMinimumBandwidthRule( + self.context, qos_policy_id=policy_id, + min_kbps=1000, direction=constants.EGRESS_DIRECTION) + dscp_rule = rule.QosDscpMarkingRule( + self.context, qos_policy_id=policy_id, dscp_mark=16) + self.assertTrue(ingress_rule_1.duplicates(ingress_rule_2)) + self.assertFalse(ingress_rule_1.duplicates(egress_rule)) + self.assertFalse(ingress_rule_1.duplicates(dscp_rule)) + class QosMinimumBandwidthRuleDbObjectTestCase(test_base.BaseDbObjectTestCase, testlib_api.SqlTestCase): diff -Nru neutron-12.0.0/neutron/tests/unit/plugins/ml2/drivers/openvswitch/agent/openflow/ovs_ofctl/test_br_tun.py neutron-12.0.1/neutron/tests/unit/plugins/ml2/drivers/openvswitch/agent/openflow/ovs_ofctl/test_br_tun.py --- neutron-12.0.0/neutron/tests/unit/plugins/ml2/drivers/openvswitch/agent/openflow/ovs_ofctl/test_br_tun.py 2018-02-28 11:30:29.000000000 +0000 +++ neutron-12.0.1/neutron/tests/unit/plugins/ml2/drivers/openvswitch/agent/openflow/ovs_ofctl/test_br_tun.py 2018-03-29 17:33:08.000000000 +0000 @@ -66,7 +66,7 @@ 'output:%s' % patch_int_ofport}, {'priority': 0, 'table': 20, 'actions': 'resubmit(,22)'} ] - expected = [call.do_action_flows('add', flow_args), + expected = [call.do_action_flows('add', flow_args, False), call.add_flow(priority=0, table=22, actions='drop')] self.assertEqual(expected, self.mock.mock_calls) @@ -103,7 +103,7 @@ {'priority': 0, 'table': 20, 'actions': 'resubmit(,22)'}, {'priority': 0, 'table': 21, 'actions': 'resubmit(,22)'} ] - expected = [call.do_action_flows('add', flow_args), + expected = [call.do_action_flows('add', flow_args, False), call.add_flow(priority=0, table=22, actions='drop')] self.assertEqual(expected, self.mock.mock_calls) diff -Nru neutron-12.0.0/neutron/tests/unit/services/qos/test_qos_plugin.py neutron-12.0.1/neutron/tests/unit/services/qos/test_qos_plugin.py --- neutron-12.0.0/neutron/tests/unit/services/qos/test_qos_plugin.py 2018-02-28 11:30:39.000000000 +0000 +++ neutron-12.0.1/neutron/tests/unit/services/qos/test_qos_plugin.py 2018-03-29 17:33:26.000000000 +0000 @@ -10,6 +10,8 @@ # License for the specific language governing permissions and limitations # under the License. +import copy + import mock from neutron_lib import context from neutron_lib import exceptions as lib_exc @@ -65,6 +67,7 @@ '.ResourcesPushRpcApi.push').start() self.ctxt = context.Context('fake_user', 'fake_tenant') + self.admin_ctxt = context.get_admin_context() mock.patch.object(self.ctxt.session, 'refresh').start() mock.patch.object(self.ctxt.session, 'expunge').start() @@ -143,6 +146,7 @@ network_mock = mock.MagicMock( id=uuidutils.generate_uuid(), qos_policy_id=network_policy_id) policy_mock = mock.MagicMock(id=policy_id) + admin_ctxt = mock.Mock() expected_policy_id = policy_id or network_policy_id with mock.patch( 'neutron.objects.ports.Port.get_object', @@ -155,11 +159,13 @@ return_value=policy_mock ) as get_policy, mock.patch.object( self.qos_plugin, "validate_policy_for_port" - ) as validate_policy_for_port: + ) as validate_policy_for_port, mock.patch.object( + self.ctxt, "elevated", return_value=admin_ctxt + ): self.qos_plugin._validate_create_port_callback( "PORT", "precommit_create", "test_plugin", **kwargs) if policy_id or network_policy_id: - get_policy.assert_called_once_with(self.ctxt, + get_policy.assert_called_once_with(admin_ctxt, id=expected_policy_id) validate_policy_for_port.assert_called_once_with(policy_mock, port_mock) @@ -199,6 +205,7 @@ } port_mock = mock.MagicMock(id=port_id, qos_policy_id=policy_id) policy_mock = mock.MagicMock(id=policy_id) + admin_ctxt = mock.Mock() with mock.patch( 'neutron.objects.ports.Port.get_object', return_value=port_mock @@ -207,7 +214,9 @@ return_value=policy_mock ) as get_policy, mock.patch.object( self.qos_plugin, "validate_policy_for_port" - ) as validate_policy_for_port: + ) as validate_policy_for_port, mock.patch.object( + self.ctxt, "elevated", return_value=admin_ctxt + ): self.qos_plugin._validate_update_port_callback( "PORT", "precommit_update", "test_plugin", **kwargs) if policy_id is None or policy_id == original_policy_id: @@ -216,7 +225,7 @@ validate_policy_for_port.assert_not_called() else: get_port.assert_called_once_with(self.ctxt, id=port_id) - get_policy.assert_called_once_with(self.ctxt, id=policy_id) + get_policy.assert_called_once_with(admin_ctxt, id=policy_id) validate_policy_for_port.assert_called_once_with(policy_mock, port_mock) @@ -254,6 +263,7 @@ id=uuidutils.generate_uuid(), qos_policy_id=None) ports = [port_mock_with_own_policy, port_mock_without_own_policy] policy_mock = mock.MagicMock(id=policy_id) + admin_ctxt = mock.Mock() with mock.patch( 'neutron.objects.ports.Port.get_objects', return_value=ports @@ -262,7 +272,9 @@ return_value=policy_mock ) as get_policy, mock.patch.object( self.qos_plugin, "validate_policy_for_ports" - ) as validate_policy_for_ports: + ) as validate_policy_for_ports, mock.patch.object( + self.ctxt, "elevated", return_value=admin_ctxt + ): self.qos_plugin._validate_update_network_callback( "NETWORK", "precommit_update", "test_plugin", **kwargs) if policy_id is None or policy_id == original_policy_id: @@ -270,7 +282,7 @@ get_ports.assert_not_called() validate_policy_for_ports.assert_not_called() else: - get_policy.assert_called_once_with(self.ctxt, id=policy_id) + get_policy.assert_called_once_with(admin_ctxt, id=policy_id) get_ports.assert_called_once_with(self.ctxt, network_id=network_id) validate_policy_for_ports.assert_called_once_with( @@ -412,7 +424,9 @@ @mock.patch.object(rule_object.QosBandwidthLimitRule, 'create') def test_create_policy_rule(self, mock_qos_rule_create, mock_qos_policy_get): - mock_qos_policy_get.return_value = self.policy + _policy = copy.copy(self.policy) + setattr(_policy, "rules", []) + mock_qos_policy_get.return_value = _policy mock_manager = mock.Mock() mock_manager.attach_mock(mock_qos_rule_create, 'create') mock_manager.attach_mock(self.qos_plugin.driver_manager, 'driver') @@ -477,6 +491,23 @@ self.ctxt, self.policy.id, self.rule_data) mock_qos_get_obj.assert_called_once_with(self.ctxt, id=_policy.id) + def test_create_policy_rule_duplicates(self): + _policy = self._get_policy() + setattr(_policy, "rules", [self.rule]) + new_rule_data = { + 'bandwidth_limit_rule': { + 'max_kbps': 5000, + 'direction': self.rule.direction + } + } + with mock.patch('neutron.objects.qos.policy.QosPolicy.get_object', + return_value=_policy) as mock_qos_get_obj: + self.assertRaises( + n_exc.QoSRulesConflict, + self.qos_plugin.create_policy_bandwidth_limit_rule, + self.ctxt, _policy.id, new_rule_data) + mock_qos_get_obj.assert_called_once_with(self.ctxt, id=_policy.id) + @mock.patch.object(rule_object.QosBandwidthLimitRule, 'update') def test_update_policy_rule(self, mock_qos_rule_update): mock_manager = mock.Mock() diff -Nru neutron-12.0.0/neutron.egg-info/pbr.json neutron-12.0.1/neutron.egg-info/pbr.json --- neutron-12.0.0/neutron.egg-info/pbr.json 2018-02-28 11:33:28.000000000 +0000 +++ neutron-12.0.1/neutron.egg-info/pbr.json 2018-03-29 17:36:26.000000000 +0000 @@ -1 +1 @@ -{"git_version": "fb3f718", "is_release": true} \ No newline at end of file +{"git_version": "68b8980", "is_release": true} \ No newline at end of file diff -Nru neutron-12.0.0/neutron.egg-info/PKG-INFO neutron-12.0.1/neutron.egg-info/PKG-INFO --- neutron-12.0.0/neutron.egg-info/PKG-INFO 2018-02-28 11:33:28.000000000 +0000 +++ neutron-12.0.1/neutron.egg-info/PKG-INFO 2018-03-29 17:36:26.000000000 +0000 @@ -1,12 +1,11 @@ Metadata-Version: 1.1 Name: neutron -Version: 12.0.0 +Version: 12.0.1 Summary: OpenStack Networking Home-page: https://docs.openstack.org/neutron/latest/ Author: OpenStack Author-email: openstack-dev@lists.openstack.org License: UNKNOWN -Description-Content-Type: UNKNOWN Description: ======================== Team and repository tags ======================== diff -Nru neutron-12.0.0/neutron.egg-info/SOURCES.txt neutron-12.0.1/neutron.egg-info/SOURCES.txt --- neutron-12.0.0/neutron.egg-info/SOURCES.txt 2018-02-28 11:33:29.000000000 +0000 +++ neutron-12.0.1/neutron.egg-info/SOURCES.txt 2018-03-29 17:36:27.000000000 +0000 @@ -26,6 +26,7 @@ devstack/lib/flavors devstack/lib/l2_agent devstack/lib/l2_agent_sriovnicswitch +devstack/lib/l3_agent devstack/lib/log devstack/lib/macvtap_agent devstack/lib/ml2 @@ -43,6 +44,7 @@ doc/source/admin/config-az.rst doc/source/admin/config-bgp-dynamic-routing.rst doc/source/admin/config-dhcp-ha.rst +doc/source/admin/config-dns-int-ext-serv.rst doc/source/admin/config-dns-int.rst doc/source/admin/config-dns-res.rst doc/source/admin/config-dvr-ha-snat.rst @@ -2002,6 +2004,7 @@ releasenotes/notes/QoS-ingress-bandwidth-limit-54cea12dbea71172.yaml releasenotes/notes/access_as_external_rbac-455dc74b9fa22761.yaml releasenotes/notes/add-availability-zone-4440cf00be7c54ba.yaml +releasenotes/notes/add-conntrack-workers-89d303e9ec3b4963.yaml releasenotes/notes/add-designate-driver-ssl-options-169c299c96f2aff0.yaml releasenotes/notes/add-dhcp_release6-ff1b8d62fd7fe76d.yaml releasenotes/notes/add-dns-domain-to-ports-f71359d75909a2d5.yaml diff -Nru neutron-12.0.0/PKG-INFO neutron-12.0.1/PKG-INFO --- neutron-12.0.0/PKG-INFO 2018-02-28 11:33:30.000000000 +0000 +++ neutron-12.0.1/PKG-INFO 2018-03-29 17:36:28.000000000 +0000 @@ -1,12 +1,11 @@ Metadata-Version: 1.1 Name: neutron -Version: 12.0.0 +Version: 12.0.1 Summary: OpenStack Networking Home-page: https://docs.openstack.org/neutron/latest/ Author: OpenStack Author-email: openstack-dev@lists.openstack.org License: UNKNOWN -Description-Content-Type: UNKNOWN Description: ======================== Team and repository tags ======================== diff -Nru neutron-12.0.0/releasenotes/notes/add-conntrack-workers-89d303e9ec3b4963.yaml neutron-12.0.1/releasenotes/notes/add-conntrack-workers-89d303e9ec3b4963.yaml --- neutron-12.0.0/releasenotes/notes/add-conntrack-workers-89d303e9ec3b4963.yaml 1970-01-01 00:00:00.000000000 +0000 +++ neutron-12.0.1/releasenotes/notes/add-conntrack-workers-89d303e9ec3b4963.yaml 2018-03-29 17:33:08.000000000 +0000 @@ -0,0 +1,13 @@ +--- +prelude: > + In order to reduce the time spent processing security group updates in + the L2 agent, conntrack deletion is now performed in a set of worker + threads instead of the main agent thread, so it can return to processing + other events quickly. +upgrade: + - | + On an upgrade, conntrack entries will now be cleaned-up in a worker + thread, instead of in the calling thread. +fixes: + - | + Fixes bug `1745468 `_.