Пример #1
0
 def updateAdapters(self):
     ''' (re)read interfaces file and save adapters '''
     reader = InterfacesReader(self._interfaces_path)
     self._adapters = reader.parse_interfaces()
     self._includes = reader.includes
     if not self._adapters:
         self._adapters = []
Пример #2
0
class Interfaces:
    _interfaces_path = '/etc/network/interfaces'

    def __init__(self, update_adapters=True, interfaces_path=None, backup_path=None):
        ''' By default read interface file on init '''

        self._set_paths(interfaces_path, backup_path)

        if update_adapters is True:
            self.updateAdapters()
        else:
            self._adapters = []

    @property
    def adapters(self):
        return self._adapters

    @property
    def interfaces_path(self):
        return self._interfaces_path

    @property
    def backup_path(self):
        return self._backup_path

    def updateAdapters(self):
        ''' (re)read interfaces file and save adapters '''
        self._adapters = InterfacesReader(self._interfaces_path).parse_interfaces()
        if not self._adapters:
            self._adapters = []

    def updateAdaptersWithString(self, data):
        self._adapters = InterfacesReader(None).parse_interfaces_from_string(data)
        if not self._adapters:
            self._adapters = []

    def writeInterfaces(self):
        ''' write adapters to interfaces file '''
        self._writer_factory().write_interfaces()

    def writeInterfacesAsString(self):
        return self._writer_factory().write_interfaces_as_string()

    def _writer_factory(self):
        ''' Create a writer object '''
        return InterfacesWriter(
            self._adapters,
            self._interfaces_path,
            self._backup_path
        )

    def getAdapter(self, name):
        ''' Find adapter by interface name '''
        return next((x for x in self._adapters if x._ifAttributes['name'] == name), None)

    def addAdapter(self, options, index=None):
        '''
            Insert a networkAdapter before the given index or at the end of the list.
            options should be a string (name) or a dict
        '''
        adapter = NetworkAdapter(options)
        adapter.validateAll()

        if index is not None:
            self._adapters.insert(index, adapter)
        else:
            self._adapters.append(adapter)
        return adapter

    def removeAdapter(self, index):
        ''' Remove the adapter at the given index. '''
        self._adapters.pop(index)

    def removeAdapterByName(self, name):
        ''' Remove the adapter with the given name. '''
        self._adapters = [x for x in self._adapters if x._ifAttributes['name'] != name]

    def upAdapter(self, if_name):
        ''' return True/False, command output. Use ifconfig. '''

        return toolutils.safe_subprocess(["ifconfig", if_name, 'up'])

    def downAdapter(self, if_name):
        ''' return True/False, command output. Use ifdown. '''

        return toolutils.safe_subprocess(["ifconfig", if_name, 'down'])

    def _set_paths(self, interfaces_path, backup_path):
        ''' either use user input or defaults '''

        if interfaces_path is not None:
            self._interfaces_path = interfaces_path

        if backup_path:
            self._backup_path = backup_path
        else:
            self._backup_path = self._interfaces_path + ".bak"
Пример #3
0
 def updateAdaptersWithString(self, data):
     self._adapters = InterfacesReader(None).parse_interfaces_from_string(data)
     if not self._adapters:
         self._adapters = []
Пример #4
0
 def updateAdapters(self):
     ''' (re)read interfaces file and save adapters '''
     self._adapters = InterfacesReader(self._interfaces_path).parse_interfaces()
     if not self._adapters:
         self._adapters = []
Пример #5
0
class Interfaces:
    _interfaces_path = '/etc/network/interfaces'

    def __init__(self,
                 update_adapters=True,
                 interfaces_path=None,
                 backup_path=None):
        ''' By default read interface file on init '''

        self._set_paths(interfaces_path, backup_path)

        if update_adapters is True:
            self.updateAdapters()
        else:
            self._adapters = []

    @property
    def adapters(self):
        return self._adapters

    @property
    def interfaces_path(self):
        return self._interfaces_path

    @property
    def backup_path(self):
        return self._backup_path

    @property
    def includes(self):
        return self._includes

    def updateAdapters(self):
        ''' (re)read interfaces file and save adapters '''
        reader = InterfacesReader(self._interfaces_path)
        self._adapters = reader.parse_interfaces()
        self._includes = reader.includes
        if not self._adapters:
            self._adapters = []

    def updateAdaptersWithString(self, data):
        self._adapters = InterfacesReader(None).parse_interfaces_from_string(
            data)
        if not self._adapters:
            self._adapters = []

    def writeInterfaces(self):
        ''' write adapters to interfaces file '''
        self._writer_factory().write_interfaces()

    def writeInterfacesAsString(self):
        return self._writer_factory().write_interfaces_as_string()

    def _writer_factory(self):
        ''' Create a writer object '''
        return InterfacesWriter(self._adapters, self._interfaces_path,
                                self._backup_path)

    def getAdapter(self, name):
        ''' Find adapter by interface name '''
        return next(
            (x for x in self._adapters if x._ifAttributes['name'] == name),
            None)

    def addAdapter(self, options, index=None):
        '''
            Insert a networkAdapter before the given index or at the end of the list.
            options should be a string (name) or a dict
        '''
        adapter = NetworkAdapter(options)
        adapter.validateAll()

        if index:
            self._adapters.insert(index, adapter)
        else:
            self._adapters.append(adapter)
        return adapter

    def removeAdapter(self, index):
        ''' Remove the adapter at the given index. '''
        self._adapters.pop(index)

    def removeAdapterByName(self, name):
        ''' Remove the adapter with the given name. '''
        self._adapters = [
            x for x in self._adapters if x._ifAttributes['name'] != name
        ]

    def upAdapter(self, if_name):
        ''' return True/False, command output. Use ifconfig. '''

        return toolutils.safe_subprocess(["ifconfig", if_name, 'up'])

    def downAdapter(self, if_name):
        ''' return True/False, command output. Use ifdown. '''

        return toolutils.safe_subprocess(["ifconfig", if_name, 'down'])

    def _set_paths(self, interfaces_path, backup_path):
        ''' either use user input or defaults '''

        if interfaces_path is not None:
            self._interfaces_path = interfaces_path

        if backup_path:
            self._backup_path = backup_path
        else:
            self._backup_path = self._interfaces_path + ".bak"
Пример #6
0
 def updateAdaptersWithString(self, data):
     self._adapters = InterfacesReader(None).parse_interfaces_from_string(
         data)
     if not self._adapters:
         self._adapters = []
Пример #7
0
 def updateAdapters(self):
     ''' (re)read interfaces file and save adapters '''
     self._adapters = InterfacesReader(self._interfaces_path).parse_interfaces()
     if not self._adapters:
         self._adapters = []
Пример #8
0
 def updateAdapters(self):
     """ (re)read interfaces file and save adapters """
     reader = InterfacesReader(self._interfaces_path)
     self._adapters = reader.parse_interfaces()
     if not self._adapters:
         self._adapters = []
Пример #9
0
 def updateAdapters(self):
     """ (re)read interfaces file and save adapters """
     reader = InterfacesReader(self._interfaces_path)
     self._adapters = reader.parse_interfaces()
     if not self._adapters:
         self._adapters = []