diff --git a/kuryr_kubernetes/cni/binding/bridge.py b/kuryr_kubernetes/cni/binding/bridge.py index 5a708baf7..21ed2eb53 100644 --- a/kuryr_kubernetes/cni/binding/bridge.py +++ b/kuryr_kubernetes/cni/binding/bridge.py @@ -64,7 +64,7 @@ class BridgeDriver(BaseBridgeDriver): class VIFOpenVSwitchDriver(BaseBridgeDriver): def connect(self, vif, ifname, netns): super(VIFOpenVSwitchDriver, self).connect(vif, ifname, netns) - #FIXME(irenab) use pod_id (neutron port device_id) + # FIXME(irenab) use pod_id (neutron port device_id) instance_id = 'kuryr' net_utils.create_ovs_vif_port(vif.bridge_name, vif.vif_name, vif.port_profile.interface_id, diff --git a/kuryr_kubernetes/controller/drivers/base.py b/kuryr_kubernetes/controller/drivers/base.py index d1a3d1c98..9b3135c2c 100644 --- a/kuryr_kubernetes/controller/drivers/base.py +++ b/kuryr_kubernetes/controller/drivers/base.py @@ -69,9 +69,9 @@ class DriverBase(object): if not isinstance(driver, cls): raise TypeError(_("Invalid %(alias)r driver type: %(driver)s, " "must be a subclass of %(type)s") % { - 'alias': alias, - 'driver': driver.__class__.__name__, - 'type': cls}) + 'alias': alias, + 'driver': driver.__class__.__name__, + 'type': cls}) return driver diff --git a/kuryr_kubernetes/controller/drivers/nested_vif.py b/kuryr_kubernetes/controller/drivers/nested_vif.py index dfee339cc..614dd3c3b 100644 --- a/kuryr_kubernetes/controller/drivers/nested_vif.py +++ b/kuryr_kubernetes/controller/drivers/nested_vif.py @@ -1,74 +1,74 @@ -# All Rights Reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); you may -# not use this file except in compliance with the License. You may obtain -# a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT -# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the -# License for the specific language governing permissions and limitations -# under the License. - -import abc -import six - -from kuryr.lib._i18n import _ -from kuryr.lib import exceptions as kl_exc -from neutronclient.common import exceptions as n_exc -from oslo_config import cfg as oslo_cfg -from oslo_log import log as logging - -from kuryr_kubernetes.controller.drivers import neutron_vif - - -LOG = logging.getLogger(__name__) - - -# Moved out from neutron_defaults group -nested_vif_driver_opts = [ - oslo_cfg.StrOpt('worker_nodes_subnet', - help=_("Neutron subnet ID for k8s worker node vms.")), -] - -oslo_cfg.CONF.register_opts(nested_vif_driver_opts, "pod_vif_nested") - - -@six.add_metaclass(abc.ABCMeta) -class NestedPodVIFDriver(neutron_vif.NeutronPodVIFDriver): - """Skeletal handler driver for VIFs for Nested Pods.""" - - def _get_parent_port(self, neutron, pod): - node_subnet_id = oslo_cfg.CONF.pod_vif_nested.worker_nodes_subnet - if not node_subnet_id: - raise oslo_cfg.RequiredOptError('worker_nodes_subnet', - oslo_cfg.OptGroup('pod_vif_nested')) - - try: - # REVISIT(vikasc): Assumption is being made that hostIP is the IP - # of trunk interface on the node(vm). - node_fixed_ip = pod['status']['hostIP'] - except KeyError: - if pod['status']['conditions'][0]['type'] != "Initialized": - LOG.debug("Pod condition type is not 'Initialized'") - - LOG.error("Failed to get parent vm port ip") - raise - - try: - fixed_ips = ['subnet_id=%s' % str(node_subnet_id), - 'ip_address=%s' % str(node_fixed_ip)] - ports = neutron.list_ports(fixed_ips=fixed_ips) - except n_exc.NeutronClientException as ex: - LOG.error("Parent vm port with fixed ips %s not found!", - fixed_ips) - raise ex - - if ports['ports']: - return ports['ports'][0] - else: - LOG.error("Neutron port for vm port with fixed ips %s" - " not found!", fixed_ips) - raise kl_exc.NoResourceException +# All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); you may +# not use this file except in compliance with the License. You may obtain +# a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations +# under the License. + +import abc +import six + +from kuryr.lib._i18n import _ +from kuryr.lib import exceptions as kl_exc +from neutronclient.common import exceptions as n_exc +from oslo_config import cfg as oslo_cfg +from oslo_log import log as logging + +from kuryr_kubernetes.controller.drivers import neutron_vif + + +LOG = logging.getLogger(__name__) + + +# Moved out from neutron_defaults group +nested_vif_driver_opts = [ + oslo_cfg.StrOpt('worker_nodes_subnet', + help=_("Neutron subnet ID for k8s worker node vms.")), +] + +oslo_cfg.CONF.register_opts(nested_vif_driver_opts, "pod_vif_nested") + + +@six.add_metaclass(abc.ABCMeta) +class NestedPodVIFDriver(neutron_vif.NeutronPodVIFDriver): + """Skeletal handler driver for VIFs for Nested Pods.""" + + def _get_parent_port(self, neutron, pod): + node_subnet_id = oslo_cfg.CONF.pod_vif_nested.worker_nodes_subnet + if not node_subnet_id: + raise oslo_cfg.RequiredOptError('worker_nodes_subnet', + oslo_cfg.OptGroup('pod_vif_nested')) + + try: + # REVISIT(vikasc): Assumption is being made that hostIP is the IP + # of trunk interface on the node(vm). + node_fixed_ip = pod['status']['hostIP'] + except KeyError: + if pod['status']['conditions'][0]['type'] != "Initialized": + LOG.debug("Pod condition type is not 'Initialized'") + + LOG.error("Failed to get parent vm port ip") + raise + + try: + fixed_ips = ['subnet_id=%s' % str(node_subnet_id), + 'ip_address=%s' % str(node_fixed_ip)] + ports = neutron.list_ports(fixed_ips=fixed_ips) + except n_exc.NeutronClientException as ex: + LOG.error("Parent vm port with fixed ips %s not found!", + fixed_ips) + raise ex + + if ports['ports']: + return ports['ports'][0] + else: + LOG.error("Neutron port for vm port with fixed ips %s" + " not found!", fixed_ips) + raise kl_exc.NoResourceException diff --git a/kuryr_kubernetes/tests/unit/test_linux_net_utils.py b/kuryr_kubernetes/tests/unit/test_linux_net_utils.py index 0dad6183e..8924cfa13 100644 --- a/kuryr_kubernetes/tests/unit/test_linux_net_utils.py +++ b/kuryr_kubernetes/tests/unit/test_linux_net_utils.py @@ -36,15 +36,15 @@ class LinuxNetworkUtilsTestCase(test_base.TestCase): def test_create_ovs_vif_port(self): calls = [ - mock.call('ovs-vsctl', '--', '--if-exists', - 'del-port', 'fake-dev', '--', 'add-port', - 'fake-bridge', 'fake-dev', - '--', 'set', 'Interface', 'fake-dev', - 'external-ids:iface-id=fake-iface-id', - 'external-ids:iface-status=active', - 'external-ids:attached-mac=fake-mac', - 'external-ids:vm-uuid=fake-instance-uuid', - run_as_root=True)] + mock.call('ovs-vsctl', '--', '--if-exists', + 'del-port', 'fake-dev', '--', 'add-port', + 'fake-bridge', 'fake-dev', + '--', 'set', 'Interface', 'fake-dev', + 'external-ids:iface-id=fake-iface-id', + 'external-ids:iface-status=active', + 'external-ids:attached-mac=fake-mac', + 'external-ids:vm-uuid=fake-instance-uuid', + run_as_root=True)] with mock.patch.object(utils, 'execute', return_value=('', '')) as ex: linux_net.create_ovs_vif_port('fake-bridge', 'fake-dev', 'fake-iface-id', 'fake-mac', @@ -53,9 +53,9 @@ class LinuxNetworkUtilsTestCase(test_base.TestCase): def test_delete_ovs_vif_port(self): calls = [ - mock.call('ovs-vsctl', '--', '--if-exists', - 'del-port', 'fake-bridge', 'fake-dev', - run_as_root=True)] + mock.call('ovs-vsctl', '--', '--if-exists', + 'del-port', 'fake-bridge', 'fake-dev', + run_as_root=True)] with mock.patch.object(utils, 'execute', return_value=('', '')) as ex: linux_net.delete_ovs_vif_port('fake-bridge', 'fake-dev') ex.assert_has_calls(calls) diff --git a/kuryr_kubernetes/tests/unit/test_os_vif_plug_noop.py b/kuryr_kubernetes/tests/unit/test_os_vif_plug_noop.py index 9080762d6..f8870b8b2 100644 --- a/kuryr_kubernetes/tests/unit/test_os_vif_plug_noop.py +++ b/kuryr_kubernetes/tests/unit/test_os_vif_plug_noop.py @@ -77,9 +77,9 @@ class TestNoOpPlugin(base.TestCase): expected = objects.host_info.HostPluginInfo( plugin_name='noop', vif_info=[ - objects.host_info.HostVIFInfo( - vif_object_name=k_vif.VIFVlanNested.__name__, - min_version="1.0", - max_version="1.0"), + objects.host_info.HostVIFInfo( + vif_object_name=k_vif.VIFVlanNested.__name__, + min_version="1.0", + max_version="1.0"), ]) self.assertEqual(expected, result) diff --git a/tox.ini b/tox.ini index a6f6f54c8..5255eae7f 100644 --- a/tox.ini +++ b/tox.ini @@ -49,15 +49,8 @@ commands = commands = python setup.py build_sphinx [flake8] -# E125 continuation line does not distinguish itself from next logical line -# E126 continuation line over-indented for hanging indent # E128 continuation line under-indented for visual indent -# E129 visually indented line with same indent as next logical line -# E265 block comment should start with '# ' -# TODO(dougwig) -- uncomment this to test for remaining linkages -# N530 direct neutron imports not allowed -# N531 log message does not translate -ignore = E125,E126,E128,E129,E265,H301,N530,N531 +ignore = E128 show-source = true # TODO(dougw) neutron/tests/unit/vmware exclusion is a temporary services split hack