0
0

More than 1 year has passed since last update.

python-networkmanagerはメンテナンス滞り中

Last updated at Posted at 2022-12-29

はじめに(結論)

NetworkManagerをPythonから叩くためのpython-networkmanagerパッケージはメンテナンスが滞っているので使わない方がいい,というお話です。(2022/12現在)

経緯

Python経由でOS(Linux)のIPアドレスを変更しようとpython-networkmanagerを使ってみました。が,ubuntu22.04(NetworkManage1.36),OracleLinux8U7(NetworkManager1.40.0)など,幾つかの環境で試してみたところ,ことごとくエラーが出て動きません。
こんなエラーです。

  File "ip.py", line 8, in <module>
    connection = devices[1].ActiveConnection.Connection
  File "/usr/local/lib/python3.6/site-packages/NetworkManager.py", line 169, in get_func
    return fixups.to_python(klass, 'Get', name, data, attrib['type'])
  File "/usr/local/lib/python3.6/site-packages/NetworkManager.py", line 578, in to_python
    val = fixups.base_to_python(val)
  File "/usr/local/lib/python3.6/site-packages/NetworkManager.py", line 648, in base_to_python
    return globals()[classname](val)
  File "/usr/local/lib/python3.6/site-packages/NetworkManager.py", line 304, in __init__
    self.uuid = self.GetSettings()['connection']['uuid']
  File "<string>", line 8, in GetSettings
  File "/usr/local/lib/python3.6/site-packages/NetworkManager.py", line 619, in to_python
    val['ipv4']['dns'] = [fixups.addr_to_python(addr,socket.AF_INET) for addr in val['ipv4']['dns']]
KeyError: 'dns'
>>> connection = devices[0].ActiveConnection.Connection
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/local/lib/python3.6/site-packages/NetworkManager.py", line 169, in get_func
    return fixups.to_python(klass, 'Get', name, data, attrib['type'])
  File "/usr/local/lib/python3.6/site-packages/NetworkManager.py", line 578, in to_python
    val = fixups.base_to_python(val)
  File "/usr/local/lib/python3.6/site-packages/NetworkManager.py", line 648, in base_to_python
    return globals()[classname](val)
  File "/usr/local/lib/python3.6/site-packages/NetworkManager.py", line 304, in __init__
    self.uuid = self.GetSettings()['connection']['uuid']
  File "<string>", line 8, in GetSettings
  File "/usr/local/lib/python3.6/site-packages/NetworkManager.py", line 623, in to_python
    val['ipv6']['dns'] = [fixups.addr_to_python(addr,socket.AF_INET6) for addr in val['ipv6']['dns']]
KeyError: 'dns'

python-networkmanagerのGithubを追いかけたところ,NetworkManager>=1.34で発生するバグらしく,プルリクがでていました。しかし,メンテナが「I've mostly abandoned this project(私はこのプロジェクトをほとんど放棄してます)」と発言しており,今後のメンテナンスは厳しそうです。
https://github.com/seveas/python-networkmanager/pull/94

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0