os-vif/os_vif/internal/ip/windows/impl_netifaces.py
Rodolfo Alonso Hernandez ee124d2e98 Remove IP proxy methods
Remove IP proxy methods in os_vif.internal.command.ip.__init__.py. Both
Windows and Linux IP implementations have the same interface, IpCommand.
Method calls (set, add, delete, exists) must be the same for both IP
classes, making those proxy calls unnecessary.

Removed a nesting level for internal IP commands. Now those commands are
located in os_vif.internal.ip.

Change-Id: Id8b71172fb06b435cf169a7e55c11233f22fa65b
Closes-Bug: #1817940
2019-04-25 13:43:34 +00:00

47 lines
1.7 KiB
Python

# Derived from: neutron/agent/windows/ip_lib.py
#
# 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 netifaces
from oslo_log import log as logging
from os_vif import exception
from os_vif.internal.ip import ip_command
LOG = logging.getLogger(__name__)
class Netifaces(ip_command.IpCommand):
def exists(self, device):
"""Return True if the device exists in the namespace."""
try:
return bool(netifaces.ifaddresses(device))
except ValueError:
LOG.warning("The device does not exist on the system: %s", device)
except OSError:
LOG.error("Failed to get interface addresses: %s", device)
return False
def set(self, device, check_exit_code=None, state=None, mtu=None,
address=None, promisc=None, master=None):
exception.NotImplementedForOS(function='ip.set', os='Windows')
def add(self, device, dev_type, check_exit_code=None, peer=None, link=None,
vlan_id=None):
exception.NotImplementedForOS(function='ip.add', os='Windows')
def delete(self, device, check_exit_code=None):
exception.NotImplementedForOS(function='ip.delete', os='Windows')