Added a simple INI handler, and a helper function under Installer().configure_nic() to help with nic configuration. Supports a crude DHCP configuration and a minimal static IP handler.
This commit is contained in:
parent
9a1199333a
commit
07d70a0a91
|
|
@ -17,3 +17,5 @@ SAFETY_LOCK
|
|||
**/**.pkg.*.xz
|
||||
**/**archinstall-*.tar.gz
|
||||
**/**.zst
|
||||
**/**.network
|
||||
**/**.target
|
||||
|
|
|
|||
|
|
@ -6,6 +6,7 @@ from .general import *
|
|||
from .user_interaction import *
|
||||
from .profiles import Profile
|
||||
from .mirrors import *
|
||||
from .systemd import Networkd
|
||||
from .output import log, LOG_LEVELS
|
||||
from .storage import storage
|
||||
|
||||
|
|
@ -149,6 +150,24 @@ class Installer():
|
|||
def arch_chroot(self, cmd, *args, **kwargs):
|
||||
return self.run_command(cmd)
|
||||
|
||||
def configure_nic(self, nic, dhcp=True, ip=None, gateway=None, dns=None, *args, **kwargs):
|
||||
if dhcp:
|
||||
conf = Networkd(Match={"Name": nic}, Network={"DHCP": "yes"})
|
||||
else:
|
||||
assert ip
|
||||
|
||||
network = {"Address": ip}
|
||||
if gateway:
|
||||
network["Gateway"] = gateway
|
||||
if dns:
|
||||
assert type(dns) == list
|
||||
network["DNS"] = dns
|
||||
|
||||
conf = Networkd(Match={"Name": nic}, Network=network)
|
||||
|
||||
with open(f"{self.mountpoint}/etc/systemd/network/10-{nic}.network", "a") as netconf:
|
||||
netconf.write(str(conf))
|
||||
|
||||
def minimal_installation(self):
|
||||
## Add nessecary packages if encrypting the drive
|
||||
## (encrypted partitions default to btrfs for now, so we need btrfs-progs)
|
||||
|
|
|
|||
|
|
@ -0,0 +1,40 @@
|
|||
class Ini():
|
||||
def __init__(self, *args, **kwargs):
|
||||
"""
|
||||
Limited INI handler for now.
|
||||
Supports multiple keywords through dictionary list items.
|
||||
"""
|
||||
self.kwargs = kwargs
|
||||
|
||||
def __str__(self):
|
||||
result = ''
|
||||
first_row_done = False
|
||||
for top_level in self.kwargs:
|
||||
if first_row_done:
|
||||
result += f"\n[{top_level}]\n"
|
||||
else:
|
||||
result += f"[{top_level}]\n"
|
||||
first_row_done = True
|
||||
|
||||
for key, val in self.kwargs[top_level].items():
|
||||
if type(val) == list:
|
||||
for item in val:
|
||||
result += f"{key}={item}\n"
|
||||
else:
|
||||
result += f"{key}={val}\n"
|
||||
|
||||
return result
|
||||
|
||||
class Systemd(Ini):
|
||||
def __init__(self, *args, **kwargs):
|
||||
"""
|
||||
Placeholder class to do systemd specific setups.
|
||||
"""
|
||||
super(Systemd, self).__init__(*args, **kwargs)
|
||||
|
||||
class Networkd(Systemd):
|
||||
def __init__(self, *args, **kwargs):
|
||||
"""
|
||||
Placeholder class to do systemd-network specific setups.
|
||||
"""
|
||||
super(Networkd, self).__init__(*args, **kwargs)
|
||||
Loading…
Reference in New Issue