68 lines
2.0 KiB
Python
68 lines
2.0 KiB
Python
from dataclasses import dataclass
|
|
|
|
|
|
def instance_name(machine_name: str) -> str:
|
|
return f"{machine_name}_wifi_0_"
|
|
|
|
|
|
@dataclass
|
|
class NetworkConfig:
|
|
ssid: str
|
|
password: str
|
|
|
|
|
|
# @API.register
|
|
# def set_iwd_service_for_machine(
|
|
# base_url: str, machine_name: str, networks: dict[str, NetworkConfig]
|
|
# ) -> None:
|
|
# """
|
|
# Set the admin service of a clan
|
|
# Every machine is by default part of the admin service via the 'all' tag
|
|
# """
|
|
# _instance_name = instance_name(machine_name)
|
|
|
|
# inventory = load_inventory_eval(base_url)
|
|
|
|
# instance = ServiceIwd(
|
|
# meta=ServiceMeta(name="wifi_0"),
|
|
# roles=ServiceIwdRole(
|
|
# default=ServiceIwdRoleDefault(
|
|
# machines=[machine_name],
|
|
# )
|
|
# ),
|
|
# config=IwdConfig(
|
|
# networks={k: IwdConfigNetwork(v.ssid) for k, v in networks.items()}
|
|
# ),
|
|
# )
|
|
|
|
# inventory.services.iwd[_instance_name] = instance
|
|
|
|
# save_inventory(
|
|
# inventory,
|
|
# base_url,
|
|
# f"Set iwd service: '{_instance_name}'",
|
|
# )
|
|
|
|
# pubkey = maybe_get_public_key()
|
|
# if not pubkey:
|
|
# # TODO: do this automatically
|
|
# # pubkey = generate_key()
|
|
# raise ClanError(msg="No public key found. Please initialize your key.")
|
|
|
|
# registered_key = maybe_get_user_or_machine(Path(base_url), pubkey)
|
|
# if not registered_key:
|
|
# # TODO: do this automatically
|
|
# # username = os.getlogin()
|
|
# # add_user(Path(base_url), username, pubkey, force=False)
|
|
# raise ClanError(msg="Your public key is not registered for use with this clan.")
|
|
|
|
# password_dict = {f"iwd.{net.ssid}": net.password for net in networks.values()}
|
|
# for net in networks.values():
|
|
# generate_facts(
|
|
# service=f"iwd.{net.ssid}",
|
|
# machines=[Machine(machine_name, FlakeId(base_url))],
|
|
# regenerate=True,
|
|
# # Just returns the password
|
|
# prompt=lambda service, _msg: password_dict[service],
|
|
# )
|